আপনি কীভাবে ভিজুয়াল স্টুডিওতে তাত্ক্ষণিক উইন্ডোটি ব্যবহার করবেন?


121

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

আপনি কীভাবে তাত্ক্ষণিক উইন্ডোটি ব্যবহার করবেন?


যদি আপনি পৃথক ভিজ্যুয়াল স্টুডিও কমান্ডগুলি ইস্যু করে থাকেন তবে উদাহরণগুলির জন্য [তাত্ক্ষণিক উইন্ডো] [1] দেখুন। এটি দেখায় যে কীভাবে এক্সপ্রেশনগুলি মূল্যায়ন করা যায়, বিবৃতিগুলি কার্যকর করা যায়, ভেরিয়েবল মানগুলি মুদ্রণ করা হবে এবং তত্ক্ষণাত উইন্ডো যদিও forth [1]: msdn.microsoft.com/en-us/library/f177hahy(VS.80).aspx
TStamper

2
কিছু বিশেষ কমান্ড রয়েছে যাগুলির তালিকা পাওয়া শক্ত। msdn.microsoft.com/en-us/library/ms171362(v=vs.100).aspx windbg শক্তি কিছু পাওয়া যায়। সক্ষম হতে ব্যবহৃত, একটি ঠিকানা দেওয়া, নিকটতম প্রতীক খুঁজে। (ln) আমি মনে করি এটি বোকামি করে বন্ধ হয়ে গেছে। স্ট্রাক্ট ইত্যাদির ধরন প্রদর্শন করতে আমি উইন্ডবগির dt কমান্ডটি পেতে চাই least কমপক্ষে আপনি সমস্ত সদস্যকে তাদের মান সহ একটি তালিকাতে পেতে একটি বস্তু ভেরিয়েবল টাইপ করতে পারেন। (বরং খোলা একটি নোড ঘনিষ্ঠ একটি নোড খেলা খেলতে বের করার চেষ্টা চেয়ে।)
kalbr

ভিজ্যুয়াল স্টুডিও 2017 এর জন্য, প্রাসঙ্গিক ডকুমেন্টেশনের লিঙ্কটি হ'ল ডকস.মাইক্রোসফট.ইন.ইউএস
ভিসুয়ালস্টুডিও /

উত্তর:


130

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

উদাহরণস্বরূপ, যদি আপনার কাছে স্থিতিশীল পদ্ধতি থাকে যা দুটি সংখ্যার যোগফল প্রদান করে যেমন:

private static int GetSum(int a, int b)
{
    return a + b;
}

তারপরে তাত্ক্ষণিক উইন্ডোতে আপনি নিম্নলিখিতটি টাইপ করতে পারেন:

? GetSum(2, 4)
6

আপনি দেখতে পাচ্ছেন, স্থির পদ্ধতিগুলির জন্য এটি সত্যিই ভাল কাজ করে। তবে, পদ্ধতিটি যদি স্থিতিশীল না হয় তবে পদ্ধতির সাথে সম্পর্কিত অবজেক্টের সাথে আপনার একটি রেফারেন্সের সাথে ইন্টারঅ্যাক্ট করতে হবে।

উদাহরণস্বরূপ, আসুন আমরা বলি যে এটি আপনার ক্লাসের মতো দেখাচ্ছে:

private class Foo
{
    public string GetMessage()
    {
        return "hello";
    }
}

যদি বস্তুটি ইতিমধ্যে মেমরিতে বিদ্যমান রয়েছে এবং এর স্কোপে রয়েছে, তবে আপনি এটি তত্ক্ষণাত উইন্ডোতে কল করতে পারবেন যতক্ষণ না এটি আপনার বর্তমান ব্রেকআপপয়েন্টের আগে ইনস্ট্যান্ট করা হয়েছে (বা কমপক্ষে, কোডটি ডিবাগ মোডে যেখানেই থামানো হয়েছে তার আগে):

? foo.GetMessage(); // object ‘foo’ already exists
"hello"

এছাড়াও, যদি আপনি কোনও স্মৃতিতে বিদ্যমান উদাহরণের উপর নির্ভর না করে সরাসরি পদ্ধতিটি ইন্টারঅ্যাক্ট করতে এবং পরীক্ষা করতে চান, তবে আপনি তাত্ক্ষণিক উইন্ডোতে নিজের ইনস্ট্যান্টটি ইনস্ট্যান্ট করতে পারেন :

? Foo foo = new Foo(); // new instance of ‘Foo’
{temp.Program.Foo}
? foo.GetMessage()
"hello"

আপনি যদি আরও মূল্যায়ন, গণনা ইত্যাদি করতে চান তবে আপনি এটিকে আরও একধাপ এগিয়ে নিয়ে যেতে পারেন এবং অস্থায়ীভাবে পদ্ধতির ফলাফলগুলি পরিবর্তনশীলগুলিতে নির্ধারণ করতে পারেন .:

? string msg = foo.GetMessage();
"hello"
? msg + " there!"
"hello there!"

তদ্ব্যতীত, আপনি যদি কোনও নতুন অবজেক্টের জন্য একটি ভেরিয়েবলের নামও ঘোষণা করতে না চান এবং এর কোনও পদ্ধতি / ফাংশন চালাতে চান তবে এটি করুন:

? new Foo().GetMessage()
"hello" 

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

পরিদর্শন পদ্ধতিগুলির পাশাপাশি, আপনি সাধারণ গণিতের সমীকরণগুলি করতে পারেন:

? 5 * 6
30

বা মানগুলি তুলনা করুন:

? 5==6
false
? 6==6
true

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

ইন্টেলিসেন্স তাত্ক্ষণিক উইন্ডোতে কাজ করে তবে এটি কখনও কখনও কিছুটা অসম্পূর্ণ হতে পারে। আমার অভিজ্ঞতা হিসাবে, এটি কেবলমাত্র ডিবাগ মোডে উপলব্ধ বলে মনে হয়, তবে নকশায় নয়, নন-ডিবাগ মোডে।

দুর্ভাগ্যক্রমে, তাত্ক্ষণিক উইন্ডোর আর একটি অপূর্ণতা হ'ল এটি লুপগুলিকে সমর্থন করে না।


1
আপনি কীভাবে তাত্ক্ষণিক উইন্ডোটি খুঁজে পাবেন ?
jpaugh

1
Ctrl + Alt + Iবা ডিবাগ -> উইন্ডোজ -> তাত্ক্ষণিক
রায় 16

11

কমান্ডগুলি কার্যকর করতে তাত্ক্ষণিক উইন্ডোটি ব্যবহার করুন

অবিলম্বে উইন্ডোটি কমান্ডগুলি কার্যকর করতে ব্যবহার করা যেতে পারে। >কমান্ড অনুসরণ করে একটি টাইপ করুন ।

এখানে চিত্র বর্ণনা লিখুন

উদাহরণস্বরূপ >shell cmdএকটি কমান্ড শেল শুরু হবে (উদাহরণস্বরূপ, ভিজ্যুয়াল স্টুডিওতে এনভায়রনমেন্ট ভেরিয়েবলগুলি কীভাবে দেওয়া হয়েছিল তা পরীক্ষা করতে এটি কার্যকর হতে পারে)। >clsপর্দা সাফ করা হবে।

এখানে কমান্ডগুলির একটি তালিকা রয়েছে যা এতো সাধারণভাবে ব্যবহৃত হয় যে তাদের নিজস্ব উপাধি রয়েছে: https://msdn.microsoft.com/en-us/library/c3a0kd3x.aspx


2
সুন্দর টিপ আসলে, এটি আমি ব্যবহার করি এমন অন্য কৌশলটির সাথে দুর্দান্তভাবে মিলিত হয়েছে: >open Filenameসমাধানে নির্বাচিত ফাইলটি খুলবে এবং এমনকি ফাইলের নাম সম্পূর্ণ হবে।
ফিলিপ নাগান

6

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

তাত্ক্ষণিক উইন্ডোটি প্রদর্শন করতে, ডিবাগ> উইন্ডোজ> তাত্ক্ষণিক চয়ন করুন বা Ctrl-Alt-I টিপুন

এখানে চিত্র বর্ণনা লিখুন

তাত্ক্ষণিক উইন্ডো সহ এখানে একটি উদাহরণ:

int Sum(int x, int y) { return (x + y);}
void main(){
int a, b, c;
a = 5;
b = 7;
c = Sum(a, b);
char temp = getchar();}

ব্রেকপয়েন্ট

এখানে চিত্র বর্ণনা লিখুন

কমান্ড কল

এখানে চিত্র বর্ণনা লিখুন

https://msdn.microsoft.com/en-us/library/f177hahy.aspx

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