System.Diagnostics.Debug.Write আউটপুট কোথায় উপস্থিত হয়?


147

নিম্নলিখিত সি # প্রোগ্রামটি (দিয়ে নির্মিত csc hello.cs) কেবল Hello via Console!কনসোলে এবং Hello via OutputDebugStringডিবাগভিউ উইন্ডোতে মুদ্রণ করে। তবে আমি System.Diagnostics.*কলগুলির কোনওটিই দেখতে পাচ্ছি না । কেন এমন?

using System;
using System.Runtime.InteropServices;
class Hello {
    [DllImport("kernel32.dll", CharSet=CharSet.Auto)]
    public static extern void OutputDebugString(string message);

    static void Main() {
        Console.Write( "Hello via Console!" );
        System.Diagnostics.Debug.Write( "Hello via Debug!" );
        System.Diagnostics.Trace.Write( "Hello via Trace!" );
        OutputDebugString( "Hello via OutputDebugString" );
    }
}

সম্ভবত কিছু বিশেষ কমান্ড-লাইন সুইচ প্রয়োজন csc?

আমি আমার কোনও বিকাশের জন্য ভিজ্যুয়াল স্টুডিও ব্যবহার করছি না, এটি খাঁটি কমান্ডলাইন স্টাফ।


অন্য উত্তরে কিছু মন্তব্যে যেমন উল্লেখ করা হয়েছে, মাইক্রোসফ্টের (সিসি ইন্টার্নারালস) ডিবাগভিউ: টেকনেট.মাইক্রোসফটকম /en-us/sysinternals/bb896647.aspx
জর্জ বারবিলিস

উত্তর:


77

অন্যরা যেমন উল্লেখ করেছে, শ্রোতাদের এই স্ট্রিমগুলি পড়ার জন্য নিবন্ধভুক্ত হতে হবে। এছাড়াও মনে রাখবেন Debug.Writeশুধুমাত্র ফাংশন হবে DEBUGবিল্ড পতাকা, সেট করা হয় যখন Trace.Writeশুধুমাত্র যদি ফাংশন হবে TRACEবিল্ড পতাকা সেট করা হয়।

DEBUGএবং / বা TRACEপতাকাগুলি সেট করা সহজেই ভিজ্যুয়াল স্টুডিওতে প্রজেক্টের বৈশিষ্ট্যগুলিতে বা সিএসসি.এক্সে নিম্নলিখিত যুক্তি সরবরাহ করে

/define:DEBUG;TRACE


5
আমার জন্য এটি দরকারী (এটি প্রত্যাশা করেনি) যে ডেবগ এবং ট্রেস অবজেক্ট একই ডিগ্রী শ্রোতাদের ব্যবহার করে তা জানতে এটি কার্যকর ছিল, সুতরাং, একই জায়গায় (গুলি) উভয়ই ডিবাগ.উইরাইট এবং ট্রেস.রেট আউটপুট, এটি কেবল নির্ভর করে শর্তে তারা কার্যকর হতে পারে না
হ্যালো_আরথ

1
তারা কি অবস্থা সম্পর্কে আপনি বিস্তারিত বলতে পারেন ? ঠিক কোন অবস্থাতেই একটি ডিবাগ.উরাইট ট্রেস.রাইটের মতো কাজ করবে না?
পেসারিয়ার

2
এটি আমার পক্ষে কাজ করে না, আমি বনাম প্রকল্পের বৈশিষ্ট্যগুলিতে ডিবাগ করেছি এবং পতাকাগুলি সন্ধান করেছি এবং ডিবাগ ব্যবহার করছি W রাইটলাইন, লাইনটি কার্যকর করে, তবে আউটপুট উইন্ডোতে কিছুই উপস্থিত হয় না, অন্য কেউ পরামর্শ পেয়েছিল?
f1wade

114

ডিবাগিং System.Diagnostics.Debug.WriteLineআউটপুট উইন্ডোতে প্রদর্শিত হবে ( Ctrl+ Alt+ O), আপনি অন্য স্থানে আউটপুট থেকে কল নির্দিষ্ট TraceListenerকরতে Debug.Listenersসংগ্রহের সাথে একটি যোগ করতে পারেন Debug.WriteLine

নোট: Debug.WriteLineকল আউটপুট উইন্ডোতে প্রদর্শন না করতে পারে যদি আপনি ভিসুয়াল স্টুডিও বিকল্প "পুনর্চালনা তাৎক্ষণিক উইন্ডো সব আউটপুট উইন্ডো পাঠ্য" মেনুর অধীনে চেক করেছেন সরঞ্জামবিকল্পডিবাগসাধারণ । "প্রদর্শন করতে সরঞ্জামসমূহবিকল্পডিবাগ ," বাক্স "পাশে পরীক্ষা সরঞ্জামবিকল্পদেখান সব সেটিংস "।


4
আমি নিশ্চিত করতে চাই যে (Ctrl + Alt + O) ভিজ্যুয়াল স্টুডিও 2012
ইশিকাওয়া

45

TraceListenerএগুলি কনসোলে উপস্থিত হওয়ার জন্য আপনাকে একটি যুক্ত করতে হবে।

TextWriterTraceListener writer = new TextWriterTraceListener(System.Console.Out);
Debug.Listeners.Add(writer);

ডিবাগ মোডে এগুলি ভিজ্যুয়াল স্টুডিও আউটপুট উইন্ডোতে উপস্থিত হয়।


2
স্পষ্টতই ডিবাগভিউ .NET ডিবাগ.উইট () এবং উইন 32 আউটপুটডেবগস্ট্রিং (): টেকনিকট.মাইক্রোসফট
en-

@ ডেলচ্যাম্বারস: আমি মনে করি এটি সঠিক নয়। এই পৃষ্ঠাটি দাবি করেছে OutputDebugString()এবং (কার্নেল)DbgPrint().
মাইক সি

1
@ ডিএলচামার্স: আমি মন্তব্যটি প্রত্যাহার করি; আমি আবিষ্কার করেছি যে ডিবাগভিউ ক্যাপচার করতে পারে Debug.Write() যদি এর ক্যাপচার সেটিংসে "গ্লোবাল উইন 32 " থাকে - যার জন্য এটি অ্যাডমিন মোডে চালানো দরকার।
মাইক সি

10

আপনি ভিজ্যুয়াল স্টুডিওতে ডিবাগ করার সময় "আউটপুট" উইন্ডোটি প্রদর্শন করুন (দেখুন-> আউটপুট)। এটি সেখানে প্রদর্শিত হবে।



5

আমি যখন কোডটিতে ডিবাগ.উইট ("") লিখি , এটি "আউটপুট উইন্ডো" নয়, "তাত্ক্ষণিক উইন্ডো" তে আউটপুট দেয়।

আপনি চেষ্টা করতে পারেন. "তাত্ক্ষণিক" উইন্ডো প্রদর্শনের জন্য ( ডিবাগউইন্ডোতাত্ক্ষণিক )।


2

আমার মামলার সমাধান হ'ল:

  1. আউটপুট উইন্ডোটিতে রাইট ক্লিক করুন;
  2. 'প্রোগ্রাম আউটপুট' পরীক্ষা করুন

0

VB.NET জন্য নিম্নলিখিত প্রয়োগ করা হয়। আপনাকে "ডিবাগ" নির্বাচন করতে হবে এবং নিশ্চিত করতে হবে যে আপনি "ডিবাগ শুরু করুন"। এটি টিপে পৌঁছে যেতে পারে F5

কনসোল.ওরাইটলাইন কেবলমাত্র আপনার আউটপুট উইন্ডোতে "রিলিজ" হিসাবে নির্মাণের সময় বার্তা প্রদর্শন করবে।

পূর্বে উল্লিখিত হিসাবে, Viewআউটপুট সহ আউটপুট উইন্ডোটি খুলুন এবং আপনি কনসোল দেখতে চাইলে "বিল্ড" নির্বাচন করে তা নিশ্চিত করুন Deb রাইট্রাইনলাইন বার্তা বা "ডিবাগ" যদি আপনি ডিবাগ.উইরাইটলাইন বা ট্রেস.উইরাইটলাইন বার্তাগুলি দেখতে চান।

আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.