ভিজ্যুয়াল স্টুডিওর আউটপুট উইন্ডোতে লেখা


605

আমি ডিবাগিং উদ্দেশ্যে আউটপুট উইন্ডোতে একটি বার্তা লেখার চেষ্টা করছি। আমি জাভা মত একটি ফাংশন জন্য অনুসন্ধান system.out.println("")। আমি চেষ্টা Debug.Write, Console.Writeএবং Trace.Write। এটি একটি ত্রুটি দেয় না, তবে এটি কোনওটি মুদ্রণও করে না।

"DEBUG ধ্রুবককে সংজ্ঞায়িত করুন" এবং "ট্র্যাক ধ্রুবককে সংজ্ঞায়িত করুন" বিকল্পগুলি চেক করা হয়েছে।

মেনু সরঞ্জামসমূহবিকল্পগুলিডিবাগিং"সমস্ত আউটপুট উইন্ডো পাঠ্যটিকে তাত্ক্ষণিক উইন্ডোতে পুনর্নির্দেশ করুন" বিকল্পটি চেক করা হয়নি।

কনফিগারেশন: অ্যাক্টিভ (ডিবাগ)

দ্রষ্টব্য: আমি প্রাসঙ্গিক হলে উইজার্ডের সাথে "উইন্ডোজ ফর্ম অ্যাপ্লিকেশন" হিসাবে একটি প্রকল্প তৈরি করেছি। কোথায় দেখতে হবে আমার ধারণা নেই।


32
ব্যবহারের চেষ্টা করুনDebug.WriteLine()
নিকসন কান্তি পল

9
যেহেতু এটি একটি পুরানো পোস্ট, তাই আমি যারা এই প্রশ্নটি নিয়ে হোঁচট খায় তাদের একটি মন্তব্য হিসাবে এটি যুক্ত করব। আসলে কোড পরিবর্তন করার পরিবর্তে, আপনি বিশেষ ব্রেকপয়েন্টগুলি ট্র্যাপপয়েন্টসও ব্যবহার করতে পারেন। এমএসডিএন ডকুমেন্টেশন
ওয়াঙ্কো দ্য সান

13
কেবলমাত্র একটি অনুস্মারক যে ডিবাগ.উরাইটলাইন () কেবলমাত্র দেবুগ চলাকালীনই কাজ করবে। তার মানে এটি এফ 5 দিয়ে চালানো, সিটিআরএল-এফ 5 নয়। এটি মিস করা সহজ।
kirk.burleson

3
এটি সত্য, তবে একটি সহজ সরঞ্জাম হ'ল ডিবাগভিউ যা ডিবাগের বাইরে চলাকালীন সমস্ত আউটপুটটি ডিবাগ স্ট্রিমে দেখায়
the_mandrill

2
আপনি যদি ভিজ্যুয়াল স্টুডিও পরীক্ষার কাঠামোর অধীনে চলমান ইউনিট পরীক্ষা থেকে আউটপুট লেখার চেষ্টা করছেন তবে নিয়মগুলি কিছুটা আলাদা, বিশদগুলির জন্য এই উত্তরটি দেখুন।
yoyo

উত্তর:


754

System.Diagnosticsনেমস্পেস যুক্ত করুন এবং তারপরে আপনি Debug.WriteLine()IDE- এর আউটপুট উইন্ডোটিতে দ্রুত কোনও বার্তা মুদ্রণ করতে ব্যবহার করতে পারেন । আরও তথ্যের জন্য, দয়া করে এগুলি দেখুন:


2
ধন্যবাদ. আমি ধরে নিয়েছি আউটপুট লেখার কোনও উপায় নেই যদি আমি ডিবাগিং (সিটিআরএল-এফ 5) না করে শুরু করি?
পূর্ববর্তী_পরিবর্তক

1
আমার ধারণা আপনি এটি খুঁজছেন: stackoverflow.com/questions/562590/…
ভরগভ ভাট

আবারও ধন্যবাদ তবে তা আমার পক্ষে কার্যকর হয়নি। ট্রেস ধ্রুবক সংজ্ঞায়িত হলেও ট্রেস ডিবাগিং মোড ছাড়া প্রিন্ট করে না।
পূর্ববর্তী_পরিবর্তক

এখানে কেবল একটি ছোট অ্যাপ চালিয়েছি, আমার পক্ষে কাজ করে fine আপনার পরিবেশে সম্ভবত একটি সামান্য ভুল আছে?
ভরগব ভাট

1
এটি আমার পরীক্ষার কোড; পেস্টবিন.com/b7P0bYEa এটি বেশ সহজ তবে এখনও কিছুই নয়। আমি এটি অন্য সিস্টেমে চেষ্টা করব।
পূর্ববর্তী_পরিবর্তক

154

এটি ডিবাগ আউটপুট উইন্ডোতে লিখবে:

using System.Diagnostics;

Debug.WriteLine("Send to debug output.");

6
আমার জন্য এই "আউটপুটগুলি" তাত্ক্ষণিক উইন্ডোতে
নিউজান্দার

আমি এটি ইউনিট পরীক্ষার সেটগুলিতে চেষ্টা করেছি। আমি নির্বাচিত পরীক্ষাটি ডিবাগ করেছিলাম, তবে ডিবাগ উইন্ডোতে আমি কী প্রিন্ট করার চেষ্টা করেছি তার কিছুই ছিল না।
ফ্রাঙ্ক এইচ।

এটি ডিবাগ উইন্ডোতে আউটপুট দেয়, তবে আমি কেবল ওয়েব পৃষ্ঠাটি বন্ধ করে দিই। আমি কোডটি সম্পাদন করার সময় আমি একটি তাত্ক্ষণিক প্রদর্শন চাই। এক মিনিট অপেক্ষা করুন - আমি খুঁজে পেলাম যে কোডটি কার্যকর করা অবস্থায় আউটপুট উইন্ডোটি লুকানো আছে। আমি যদি উইন্ডোটি প্রদর্শন করি তবে আমার আউটপুটটি সেখানে।
জো কটন

আমরা কি এই বার্তাটির লগটি ডিবাগ উইন্ডোতে মুদ্রিত রাখতে পারি? বা ভিজ্যুয়াল স্টুডিও ডিবাগ উইন্ডোর লগগুলিতে অ্যাক্সেসের কোনও উপায় সরবরাহ করে ..?
আনমল রাঠোদ


55
Debug.WriteLine

আপনি যা খুঁজছেন

যদি তা না হয় তবে এটি করার চেষ্টা করুন:

মেনু সরঞ্জামসমূহবিকল্পগুলিডিবাগিং → আনচেক অবিলম্বে আউটপুট প্রেরণ করুন


1
সম্ভবত ডিবাগ.উরাইট () গাড়ীর রিটার্নটি সন্নিবেশ করছে না, তাই বার্তাগুলি বাফার হচ্ছে?
গাই স্টারবাক

2
আমি মিবা যা বলেছিলাম তা না করা পর্যন্ত আমি ডিবাগ। রাইটলাইন ("স্ট্রিং") দেখছিলাম না। Tools|Options|Debugging uncheck Send Output to Immediate
স্কিনদীপ 2366

3
আমি মনে করি পরবর্তী সংস্করণগুলিতে চেক বাক্সটি "সমস্ত আউটপুট উইন্ডো পাঠ্যটিকে তাত্ক্ষণিক উইন্ডোতে পুনর্নির্দেশ করুন"
হুদিনি সুদারল্যান্ড

6
ভিএস ২০১৫-তে এটি বলা হয়েছে: "সমস্ত আউটপুট উইন্ডো পাঠ্যটিকে তাত্ক্ষণিক উইন্ডোতে পুনঃনির্দেশ করুন", সেক্ষেত্রে কিছুকে যথাযথ সেটিংটি সন্ধান করতে 5 মিনিট সন্ধান করতে হয়েছিল :) - আমি শুরু করে একটি স্ক্রোলিং করছিলাম যা দিয়ে শুরু করে একটি বিকল্প খুঁজে পেয়েছি " প্রেরণ করুন ... ":)
ডিবিএ

22

আমার জন্য, কেবল ট্রেস নেমস্পেস এবং ডিবাগ ওয়ান কাজ করেনি:

System.Diagnostics.Trace.WriteLine("message");

আমি ভিজুয়াল স্টুডিও 2010 এর অধীনে একটি সি # প্রকল্পে কাজ করছি।


2
আমি ভিএস 2013 পেশাদার ব্যবহার করছি এবং ভিজ্যুয়াল স্টুডিও ইউনিট পরীক্ষার কাঠামোটি ব্যবহার করে ইউনিট পরীক্ষা থেকে আউটপুট পাওয়ার চেষ্টা করছি। এটি টেস্ট হারনেসকে ক্যাপচার করে এবং ডিবাগ.উরাইটলাইন তবে পুনরায়নির্দেশ করে তবে ট্রেস.উইটলাইনকে নয়। এবং আপনি পরীক্ষাগুলি ডিবাগ না করে আপনি ট্রেস আউটপুটটি দেখতে পাবেন না (কেবল সেগুলি চালনা করবেন না)।
yoyo

15

আপনি খুঁজছেন হতে পারে

MessageBox.Show()

অথবা

Debug.Writeline()

8
MessageBox.Show()আপনি যখন ডিবাগিংয়ের উদ্দেশ্যে একাধিক মান লিখতে চান তখন খুব বিরক্তিকর হতে পারে।
ডেমেন্টিক

4
প্রশ্নটি ছিল "ভিজ্যুয়াল স্টুডিওর আউটপুট উইন্ডোতে লিখতে?" একটি বার্তা বাক্সে না।
আমির টইটোউ

@ আমিরটুইটো একটি বার্তা বাক্স একটি আউটপুট উইন্ডো।
অধ্যাপক

4
হ্যাঁ আপনি ঠিক বলেছেন, কিন্তু প্রশ্নটি ছিল "ভিজ্যুয়াল স্টুডিওর আউটপুট উইন্ডোতে লেখা?" এবং এই কোডটি ব্যবহার করে কোনও সাধারণ বার্তার বাক্সে নয়:
ম্যাসেজবক্স.শো

4
@ প্রফাক ভিজ্যুয়াল স্টুডিও আউটপুট উইন্ডো নির্দিষ্ট প্রোগ্রামের একটি খুব নির্দিষ্ট জিইউআই উপাদান, এবং MessageBox.Showএটিতে লেখেন না।
jpmc26

9

কল

System.Diagnostics.Debug.WriteLine("message");

নেট কোর (ভি 1.0 বা 1.1) এর সাথে কাজ করার সময় ব্যর্থ হয় ।

আমাদের কাছ থেকে একটি লগার তৈরি এবং ব্যবহার করার কথা রয়েছে Microsoft.Extensions.Logging, তবে সেই লগটি কেবল ডটনেট.এক্সপি পপআপ কনসোল উইন্ডোতে উপস্থিত হয়, ভিজ্যুয়াল স্টুডিওর আউটপুট উইন্ডোতে নয়।


সুতরাং ডিবাগ.উইটলাইন (), কনসোল.উরাইটলাইন () এবং ট্রেস.উরাইটলাইন ()। নেট কোর এর জন্য আউটপুটে কিছু আউটপুট আউট করছে না? লগক্লাস না লিখে কোনও ধরণের সরল লগিং ব্যবহার করার উপায়? সম্ভাব্য সমাধানের জন্য সরঞ্জামগুলি> বিকল্পগুলি> ডিবাগিং এবং "এর থেকে আউটপুট দেখান:" অনুসন্ধান করেছেন checked
ওয়াউটার ভ্যানহের্ক

4

এটির জন্য একটি তৃতীয় পক্ষের কাঠামো প্রয়োজন, নাম সেরিলগ , তবে তবে আমি এটি দেখতে পেয়েছি এমন কোনও জায়গায় আউটপুট পাওয়ার সাথে এটি একটি খুব মসৃণ অভিজ্ঞতা বলে খুঁজে পেয়েছি ।

আপনার প্রথমে সেরিলোগের ট্রেস সিঙ্কটি ইনস্টল করতে হবে । একবার ইনস্টল হয়ে গেলে আপনার এভাবে লগার সেট আপ করতে হবে:

Logger = new LoggerConfiguration()
    .MinimumLevel.Verbose()
    .WriteTo.Trace()
    .CreateLogger();

(আপনি একটি ভিন্ন সর্বনিম্ন স্তর সেট করতে পারেন অথবা একটি কনফিগ মান বা স্বাভাবিক Serilog কার্যকারিতা কোন সেট করুন। এছাড়াও আপনি সেট করতে পারেন Trace, configs ওভাররাইড করতে একটি নির্দিষ্ট স্তর এটির বা তবে আপনি এই কাজ করতে চান।)

তারপরে আপনি কেবল বার্তাটি সাধারণভাবে লগ করেন এবং সেগুলি আপনার আউটপুট উইন্ডোতে প্রদর্শিত হয়:

Logger.Information("Did stuff!");

এটি এত বড় চুক্তির মতো বলে মনে হচ্ছে না, তাই আমাকে আরও কিছু বাড়তি সুবিধা ব্যাখ্যা করতে দিন explain আমার জন্য সবচেয়ে বড়টি হ'ল আমি একই সাথে আউটপুট উইন্ডো এবং কনসোল উভয়টিতে লগ করতে পারি :

Logger = new LoggerConfiguration()
    .MinimumLevel.Verbose()
    .WriteTo.Trace()
    .WriteTo.Console(standardErrorFromLevel: LogEventLevel.Error)
    .CreateLogger();

এটি আমার সমস্ত কলগুলির Console.Writeসাথে সদৃশ না করে আমি কীভাবে আউটপুট গ্রাস করলাম তার পরিপ্রেক্ষিতে এটি আমাকে দুর্দান্ত নমনীয়তা দিয়েছে Debug.Write। কোডটি লেখার সময় আমি আমার কমান্ড লাইন সরঞ্জামটি ভিজ্যুয়াল স্টুডিওতে চালাতে পারতাম যখন এটি বের হয়ে যাওয়ার পরে আমার আউটপুটটি হারাবে না। যখন আমি এটি স্থাপন করেছিলাম এবং কোনও ডিবাগ করার প্রয়োজন ছিল (এবং ভিজ্যুয়াল স্টুডিও উপলব্ধ ছিল না), কনসোল আউটপুটটি আমার ব্যবহারের জন্য সহজেই উপলব্ধ ছিল। একই বার্তাগুলি কোনও তফসিলযুক্ত কাজ হিসাবে চলাকালীন কোনও ফাইলে (বা অন্য কোনও ধরণের সিন্কে) লগইন করা যায়।

তল লাইনটি হ'ল সেরিলোগ ব্যবহার করে এটি অনেকগুলি গন্তব্যগুলিতে বার্তা ডাম্প করা সত্যিই সহজ হয়ে গেছে, আমি নিশ্চিত হয়েছি যে আমি কীভাবে দৌড়েছি তা নির্বিশেষে আমি আউটপুটটি সহজেই অ্যাক্সেস করতে পারি।

এটির জন্য খুব ন্যূনতম সেট আপ এবং কোডও প্রয়োজন।


1
Serilog এখন এ "ডিবাগ" বেসিনে হয়েছে github.com/serilog/serilog-sinks-debug যে ঠিক একই ভাবে, ফাংশন, কিন্তু সামান্য সুন্দর বিন্যাস :-) আছে HTH!
নিকোলাস ব্লুমহার্ট

কেন একটি নেট পাবলিক (স্ট্যাটিক হতে পারে) পদ্ধতি তৈরি করে আপনার কনসোল.ওরাইট বা ডিবাগ.উরাইট ইত্যাদির মতো প্রয়োজনীয় সমস্ত কিছু সেখানে রাখবেন না এবং এটিকে সর্বত্র ব্যবহার করবেন না কেন?
শ্যালিয়াস

@ সেলিউলস "একই বার্তাগুলি কোনও ফাইল (বা অন্য কোনও ধরণের সিঙ্ক) এ যখন নির্ধারিত কাজ হিসাবে চলতে থাকে তখন লগইন করা যায় The নীচের লাইনটি সেরিলোগ ব্যবহার করে বিপুল সংখ্যক লোকের কাছে বার্তাগুলি ফেলে দেওয়া সত্যিই সহজ করে দিয়েছে গন্তব্যগুলি, আমি কীভাবে এটি চালিয়েছি তা নির্বিশেষে আমি সর্বদা আউটপুট সহজেই অ্যাক্সেস করতে পারি তা নিশ্চিত করে "।
jpmc26

1

এটি মূল প্রশ্নের উত্তর নয়। তবে যেহেতু আমি এই প্রশ্নটি খুঁজে পেয়েছিলাম যখন ইন্টারেক্টিভভাবে বস্তুর ডেটা ডাম্পিংয়ের কোনও মাধ্যম অনুসন্ধান করার জন্য, আমি অনুভব করেছি যে অন্যরা এই অত্যন্ত দরকারী বিকল্পটি উল্লেখ করে উপকৃত হতে পারেন।

আমি চূড়ান্তভাবে কমান্ড উইন্ডোটি ব্যবহার করেছি এবং Debug.Printনীচে প্রদর্শিত কমান্ডটি প্রবেশ করলাম । এটি একটি মেমরির অবজেক্টটিকে এমন ফর্ম্যাটে মুদ্রিত করেছে যা পাঠ্য হিসাবে অনুলিপি করা যায়, যা সত্যই আমার প্রয়োজন।

> Debug.Print <item>

  id: 1
  idt: null
  igad: 99
  igbd: 99
  gl_desc: "New #20"
  te_num: "1-001-001-020"


0

নিম্নলিখিতটি আমার জন্য ভিজ্যুয়াল স্টুডিও 2015 এ কাজ করেছে:

OutputDebugStringW(L"Write this to Output window in VS14.");

আউটপুটডিবগ্রস্ট্রিংয়ের জন্য ডকুমেন্টেশন এখানে পড়ুন ।

এখানে চিত্র বর্ণনা লিখুন মনে রাখবেন যে এই পদ্ধতিটি কেবল তখনই কাজ করে যদি আপনি আপনার কোডটি ডিবাগ করেন ( debug mode)


11
এটা কি সি ++? প্রশ্নটি ট্যাগ করা হয় # #
jpmc26

0

ডিবাগিং উদ্দেশ্যে, System.Diagnostics.Debug.Writeline()আপনার ডিবাগ শ্রোতা না থাকলে কমান্ডটি আপনার কোডের প্রকাশ সংস্করণে সংকলিত হবে না। এটি সমস্ত ট্রেস শ্রোতাদের কাছে লিখেছে যার মধ্যে ডিবাগ মোডে চলার সময় ভিএস আউটপুট উইন্ডো অন্তর্ভুক্ত রয়েছে।

একটি কনসোল অ্যাপ্লিকেশন জন্য। Console.Writeline()কাজ করবে তবে আউটপুটটি এখনও আপনার বাইনারি প্রকাশের সংস্করণে উত্পন্ন হবে।

ডিবাগ পরীক্ষাগুলি যখন স্বাভাবিক আউটপুট উইন্ডোতে ডিবাগ আউটপুট প্রদর্শিত হবে; যদিও কনসোল.উইটারলাইন আউটপুট দেয় না (তবে পরীক্ষার আউটপুট উইন্ডোটিতে এটি পাওয়া যায়))

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