ভিজ্যুয়াল স্টুডিও ডিবাগ মোডে অবজেক্টের মানগুলি অনুলিপি করুন


138

ভিজ্যুয়াল স্টুডিও ডিবাগ মোডে ভেরিয়েবলগুলির মান দেখানোর জন্য ওভার হভার করা সম্ভব হবে এবং তারপরে "অনুলিপি করুন", "অনুলিপিটি অনুলিপি করুন" বা "মানটির অনুলিপি করুন" এ ডান ক্লিক করুন।

যদি ভেরিয়েবল কোনও অবজেক্ট এবং কেবলমাত্র একটি প্রাথমিক ধরণের না হয় তবে অবজেক্টটি প্রসারিত ও অন্বেষণ করার জন্য একটি + চিহ্ন রয়েছে। ক্লিপবোর্ডে এটি সমস্ত অনুলিপি করার উপায় কি?

উত্তর:


190

তাত্ক্ষণিক উইন্ডোতে টাইপ করুন

?name_of_variable

এটি সবকিছু মুদ্রণ করবে এবং আপনি যে কোনও জায়গায় ম্যানুয়ালি এটি অনুলিপি করতে পারবেন বা তাড়াতাড়ি উইন্ডোটির লগিং বৈশিষ্ট্যগুলি কোনও ফাইলটিতে স্বয়ংক্রিয়ভাবে লিখতে ব্যবহার করতে পারেন।

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

আপডেট 2 @ পিপুমকিনের প্রশ্নের উত্তর দিতে, বা নতুন ইএপিতে একটি নতুন এক্সপোর্ট বৈশিষ্ট্য রয়েছে যা ব্যবহারকারীরা জেসন, এক্সএমএল, এক্সেল বা সি # কোডে পরিবর্তনশীল মান রফতানি করতে পারবেন।

সম্পূর্ণ প্রকাশ: আমি এখানে বর্ণিত সরঞ্জামটির সহ-নির্মাতা।


5
এটি আরও ভাল হত যদি এটি সমস্ত কিছু দেখানোর জন্য পুনরাবৃত্তভাবে প্রসারিত করতে পারত। এটি প্রচুর পাঠ্য হতে পারে তবে আমি সম্ভবত এটি গাছের আরও গভীর মানের জন্য অনুসন্ধান করতে চাই।
কোবাস স্মিত

3
পিএস আমি বগইড এর বৈশিষ্ট্যগুলি ভালবাসি। ট্রেইল এখনই ডাউনলোড করার সময় এবং যখন এটির মেয়াদ শেষ হয়ে যায় এবং আমি আমার চোখের গলাগুলি বের করা শুরু করি তা আমার বসকে আমার জন্য কিনে দেবে .. :)
পাইটর কুলা

16
যে কেউ 100 টিরও বেশি আইটেম আউটপুট করতে জানেন? আমি তাৎক্ষণিক উইন্ডোতে প্রদর্শিত হয়েছে প্রথম 100 পরে এই পাবেন: <আরও ... (। প্রথম 335 100 আইটেম দেখানো হয়েছে)>
lachs

6
"তাত্ক্ষণিক উইন্ডো" বলতে কী বোঝায়?
অ্যালেক্স

3
@ অ্যালেক্স: ভিজ্যুয়াল স্টুডিওতে, ডিবাগ> উইন্ডোজ> তাত্ক্ষণিক যান - এটি আপনাকে ডিবাগ করার সময় মূল্যায়ন বা সম্পাদন করার জন্য এক্সপ্রেশনগুলি প্রবেশ করতে দেয়
জেটেক

49

আপনি তাত্ক্ষণিক উইন্ডোতে কোডের নীচে চালাতে পারেন এবং এটি কোনও এক্সএমএল ফাইলে কোনও বস্তুর সিরিয়ালযুক্ত এক্সএমএল উপস্থাপনা রফতানি করবে:

(new System.Xml.Serialization.XmlSerializer(obj.GetType())).Serialize(new System.IO.StreamWriter(@"c:\temp\text.xml"), obj)

উত্স: ভিজুয়াল স্টুডিও কীভাবে ডিবাগার থেকে অবজেক্ট সিরিয়াল করতে হয় to


5
এটি আপভোট করা উচিত যাতে লোকেরা আরও সহজে এটি খুঁজে পায়। এই দুর্দান্ত সমাধানটি খুঁজে পাওয়ার আগে আমি প্রচুর অনুরূপ এস.ও. প্রশ্নগুলির মধ্য দিয়েছিলাম, যা বিরল ক্র্যাশ সমস্যার দীর্ঘকাল ধরে চলমান প্রোগ্রামের ক্র্যাশ হওয়ার পরে আমাকে একটি বড় তালিকা <তালিকা <বাইট>> একটি এক্সএমএল পাঠ্য ফাইলে ডাম্প করার অনুমতি দেয়। একটি মাত্র সংযোজন: যখন আমি এটি প্রথম চালিতাম তখন আমার একটি ত্রুটি হয়েছিল: "মূল্যায়নের জন্য অস্থায়ীভাবে চালনার জন্য একটি থ্রেড প্রয়োজন the মূল্যায়ন সম্পাদনের জন্য ওয়াচ উইন্ডোটি ব্যবহার করুন।" ঘড়ির উইন্ডোটি রিফ্রেশ করার পরে, কমান্ডটি চালানোর দ্বিতীয় প্রচেষ্টা সফল হয়েছিল।
ক্রেগ.ফিড

ব্যাট_প্রগ্রাম: আপনি আপনার উত্তরের প্রথম লাইনটি পরিবর্তন করতে চাইতে পারেন, কারণ এটি সূচিত করে যে আউটপুটটি কী হবে তা বস্তুর একটি তালিকা, তবে যা সত্যই আউটপুট হচ্ছে তা কোনও একক নির্দিষ্ট বস্তুর (ভেরিয়েবল) একটি সিরিয়ালযুক্ত এক্সএমএল উপস্থাপনা।
ক্রেগ.ফিড

Cannot evaluate expression because the code of the current method is optimized.???
ফালকো আলেকজান্ডার

আপনার যদি File.WriteAllText(@"c:\movie.json", JsonConvert.SerializeObject(movie));
জসন থাকে

The debugger is unable to evaluate this expression। আমি ভিজ্যুয়াল স্টুডিও 2019 ব্যবহার করছি; আমি objপরিবর্তনশীল নামের সাথে প্রতিস্থাপন করেছি যা টাইপ হয়System.Collections.Generic.List 1[[System.ValueTuple 3[[System.String, System.Private.CoreLib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=7cec85d7bea7798e],[System.String, System.Private.CoreLib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=7cec85d7bea7798e],[System.String, System.Private.CoreLib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=7cec85d7bea7798e]], System.Private.CoreLib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=7]]
ড্রয়

27

একটি সাম্প্রতিক এক্সটেনশন অবজেক্ট এক্সপোর্টার রয়েছে যা এটি স্বাচ্ছন্দ্যে করে।

http://www.omarelabd.net/exporting-objects-from-the-visual-studio-debugger/

সম্প্রসারণ: https://visualstudiogallery.msdn.microsoft.com/c6a21c68-f815-4895-999f-cd0885d8774f


1
অবজেক্টের বৃহত তালিকার জন্য সমস্যা প্রদান বলে মনে হচ্ছে
ব্যাট_প্রোগ্রামার

@ ব্যাট_প্রোগ্রামার কোনওভাবেই ওমরের দুর্দান্ত সরঞ্জামটি ব্যবহার থেকে নিরুৎসাহিত করবেন না, দয়া করে নোট করুন যে ওজকোড এক্সপোর্ট বৈশিষ্ট্যটি বিশাল আকারের অবজেক্টগুলিকে সমর্থন করার জন্য সূক্ষ্মভাবে সুরক্ষিত হয়েছে। দয়া করে এটি ব্যবহার করে দেখুন এবং এটি আপনার পক্ষে ভাল কাজ করে কিনা তা আমাকে জানান।
ওমর রবিভ

20

আপনি সেই অবজেক্টের জন্য একটি ঘড়ি যুক্ত করতে পারেন, এবং ঘড়ির উইন্ডোতে, আপনার অনুলিপি করতে চান এমন সমস্ত কিছু প্রসারিত করুন এবং নির্বাচন করুন এবং তারপরে এটি অনুলিপি করুন।


1
ধন্যবাদ পিএমএন যা আমাকেও সহায়তা করেছিল। ম্যানুয়ালি গাছটি প্রসারিত করে (ডান ক্লিক থাকলে খুব ভাল লাগবে, সমস্তটি প্রসারিত করুন) এবং তারপরে এটি ক্লিপবোর্ডে অনুলিপি করে, পরে আমি এটি আটকে দিতে পারি এবং গাছটির নিচে গভীরভাবে তাকিয়ে থাকা একটি মান সন্ধান করতে পারি।
কোবাস স্মিত

10

Https://stackoverflow.com/a/23362097/2680660 থেকে সর্বাধিক জনপ্রিয় উত্তর :

কোনও ভাগ্যের সাথে আপনার অ্যাপসোমেনে জেসন.নেট রয়েছে। এই ক্ষেত্রে এটি আপনার তাত্ক্ষণিক উইন্ডোতে পপ করুন:

Newtonsoft.Json.JsonConvert.SerializeObject(someVariable)

4

আপনার শ্রেণি এবং পদ্ধতিগুলি সাজানোর জন্য অ্যাট্রিবিউটগুলি ব্যবহার করে আপনি ডিবাগারডিসপ্লের বৈশিষ্ট্যটি যেমন ডিবাগিংয়ের সময় আপনার অবজেক্ট ডিসপ্লে থেকে একটি নির্দিষ্ট মান পেতে পারেন eg

[DebuggerDisplay("Person - {Name} is {Age} years old")]
public class Person
{
  public string Name { get; set; }
  public int Age { get; set; }
}

জিনিসটি হ'ল, আমার কেবলমাত্র কিছু কিছু নয়, সমস্ত বস্তুর সামগ্রীর অনুলিপি করতে সক্ষম হওয়া প্রয়োজন। হ্যাঁ, আমি পুরো অবজেক্টের সাথে একটি জটিল পর্যাপ্ত পরিমাণে ডিবুগারডিসপ্লের অ্যাট্রিবিউট তৈরি করতে পারতাম, তবে ক্লাসে যে কোনও পরিবর্তনের জন্য অ্যাট্রিবিউটেরও পরিবর্তন দরকার হবে।
ফারহিনহা

@ ফারিণা অবজেক্টটি দিয়ে আপনি কী করতে চান? সম্ভবত এটির সিরিয়ালযুক্ত এক্সএমএল সংস্করণ এমন কোনও সম্পত্তি থাকতে পারে।
ডেভ অ্যান্ডারসন

1

গুগল আমাকে এই 8 বছরের পুরানো প্রশ্নের দিকে নিয়ে গেছে এবং আমি অবজেক্টডাম্পার ব্যবহার করে শেষ করেছি অনুলিপি- ডিবাগার ডেটার সাথে সাদৃশ্যপূর্ণ কিছু অর্জন করতে । এটি একটি হাওয়া ছিল।

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


1

আমি সবসময় ব্যবহার:

string myJsonString = JsonConvert.SerializeObject(<some object>);

তারপরে আমি স্ট্রিংয়ের মানটি কপি করি যা দুর্ভাগ্যক্রমে পিছনের স্ল্যাশগুলিও অনুলিপি করে।

ব্যাকল্যাশগুলি অপসারণ করতে এখানে যান: https://www.w3schools.com/jsref/tryit.asp?filename=tryjsref_replace

তারপরে <p id="demo">Visit Microsoft!</p>উপাদানটির মধ্যে আপনি অনুলিপি করা পাঠ্যের সাথে পাঠ্যটি প্রতিস্থাপন করুন। তারপরে var res = str.replace("Microsoft", "W3Schools");লাইনটি প্রতিস্থাপন করুন

var res = str.replace(/\\/g, '')

এই নতুন পরিবর্তনগুলি চালান তবে ডানদিকে "চেষ্টা করে দেখুন" বোতামটি ক্লিক করতে ভুলবেন না।

এখন আপনার কাছে জেসন ফর্ম্যাটে অবজেক্টের সমস্ত পাঠ্য থাকা উচিত যা আপনি একটি জসন ফর্ম্যাটারে http://jsonformatter.org এর মতো ড্রপ করতে পারেন বা একটি পোকো তৈরি করতে আপনি এখন ব্যবহার করতে পারেন http://json2csharp.com/


1

আমি জানি যে আমি পার্টিতে কিছুটা দেরি করেছি, তবে আপনি যদি JSON আউটপুট পছন্দ করেন তবে কোনও বস্তুর সিরিয়ালকরণের জন্য আমি একটি JSON বাস্তবায়ন লিখেছিলাম। নিউটোনসফট.জসন রেফারেন্স ব্যবহার করে।

private static void WriteDebugJSON (dynamic obj, string filePath)
{
    using (StreamWriter d = new StreamWriter(filePath))
    {
        d.Write(JsonConvert.SerializeObject(obj));
    }
}

0

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

 myList.Any(s => s.ID == 5062);

যদি এটি সত্য ফিরে আসে

var myDebugVar = myList.FirstOrDefault(s => s.ID == 5062);
?myDebugVar

0

আমি ঠিক ভেরিয়েবল এবং নির্বাচিত অ্যাডওয়াচটিতে ক্লিক করেছি, এটি সমস্ত মান সমন্বিত ওয়াচ উইন্ডো নিয়ে আসে। আমি সমস্ত নির্বাচন করেছি এবং এটি একটি পাঠ্য সম্পাদককে একটি পাঠ্যে আটকানো করেছি, এটিই যথেষ্ট।


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