আমি ইন্টেলিজে ডিবাগ করার সময় ফেরার আগে ফেরতের মানটি জানতে পারি?


126

সঙ্গে:

Object method(){
    ...
    return /* some complex expression */
}

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

যেভাবে আমি এটা এখন কি একটি অস্থায়ী পরিবর্তনশীল করে হল: Object ret = /* something complex */; return ret;। তবে ঝামেলা সৃষ্টি করে এবং কোডের একটি অতিরিক্ত অপ্রয়োজনীয় লাইনও যুক্ত করে।

দ্রষ্টব্য: এটি আমি ভিজুয়াল স্টুডিওতে ডিবাগ করার সময় ফেরার আগে ফেরতের মানটি জানতে পারি , তবে ইন্টেলিজের জন্য একই প্রশ্ন ।

উত্তর:


31

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

এছাড়াও আপনি ম্যানুয়ালি নিম্নলিখিত করতে পারেন।

  1. রিটার্ন লাইনে ব্রেকপয়েন্ট সেটআপ করুন।
  2. রিটার্ন লাইনটি আঘাত করা হলে, রিটার্ন লাইনে ক্লিক করুন, আপনি যে অপারেশনটি দেখতে চান তা নির্দিষ্টভাবে কার্সারটি রাখুন, তারপরে রান-> মূল্যায়ন এক্সপ্রেশন (বা Alt-F8) এ যান এবং এটি সেই বিন্দুতে এক্সপ্রেশনটি চালানো উচিত এবং এটি ফিরে আসছে কি ফিরে।

দ্রষ্টব্য : আপনি যদি ব্রেকআপপয়েন্ট তৈরি করেন তবে আইডিইএকে আপনার সাথে করতে অনেকগুলি জিনিস থাকতে পারে যেমন আপনি যদি ব্রেক ব্রেকপয়েন্টে ব্রেক করেন তবে আপনি তাদের একটি এক্সপ্রেশন সম্পাদন করতে এবং এটি লগ করতে বলতে পারেন। যদি আপনি ব্রেকপয়েন্টে ডান ক্লিক করেন এবং বৈশিষ্ট্যগুলিতে ক্লিক করেন তবে আপনি কী করতে পারেন তা আপনি চারপাশে দেখতে পারেন।

আপডেট : এটি করার প্রথম পদ্ধতির সাথে একযোগে এটি ব্যবহার করে দেখুন। "ওয়াচ পদ্ধতিটি রিটার্ন মানগুলি" ব্যবহার করবেন না বলে মনে হচ্ছে এটি ডিবাগিং সেশনটি ধীরগতিতে বা নিথর করে দেবে। পরিবর্তে নিম্নলিখিত করুন

  1. আপনি যে রিটার্ন এক্সপ্রেশনটি দেখতে চান তার উপর ডান ক্লিক করুন এবং "ঘড়িতে যোগ করুন" এ ক্লিক করুন
  2. এরপরে উপরে বর্ণিত মত একটি পদ্ধতি ব্রেক ব্রেকপয়েন্ট যুক্ত করুন।
  3. আপনার প্রোগ্রামটি ডিবাগ করুন এবং আপনার পদ্ধতিটি পদ্ধতিটির স্বাক্ষরে ভঙ্গ হবে।
  4. চালিয়ে যাওয়ার জন্য F9 কী টিপুন এবং এটি আবার ভেঙে ফেলা উচিত রিটার্নের এক্সপ্রেশন গণনা করা হওয়ার পরে এবং আপনার রিটার্নের এক্সপ্রেশনটি ওয়াচ কলামে হওয়া উচিত।

মনে রাখবেন যে পদ্ধতির ব্রেকপয়েন্টগুলি ধীরে ধীরে তাই আরও বেশি সময় লাগতে পারে, আপনি যদি খুব বেশি পারফরম্যান্সের আঘাতের বিষয়টি লক্ষ্য করেন তবে এটির উন্নতি করার একটি কল্পিত উপায় হ'ল কেবল রিটার্ন স্টেটমেন্ট ব্রেকপয়েন্ট (কোনও পদ্ধতি ব্রেকপয়েন্ট না রেখে) সেট করে এবং পরে পদ্ধতি ব্রেকআপপয়েন্ট যুক্ত করা রিটার্নের স্টেটমেন্টের পরে ব্রেকপয়েন্টটি হিট করে তারপরে অবিরত।

আশাকরি এটা সাহায্য করবে,


1
আসলে, একবার আপনি একটি ব্রেকপয়েন্ট এবং একটি ওয়াচ (নতুন এক্স ()) যোগ করার পরে, আপনি কেবল সেই ঘড়িতে Alt + F8 করতে পারেন ফিরে আসা অবজেক্টটির 'বিশ্লেষণ' করতে। এটি সত্যিই দরকারী।
কেদার মহাশ্বদে

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

কমপক্ষে 2016.3 থেকে, আরও অনেক ভাল উপায় আছে। বিশদ জন্য বার্চ্ল্যাব থেকে উত্তর দেখুন। এটি এখন স্বীকৃত উত্তর হওয়া উচিত।
মাইকেজএক্স 6 আর

150

ইন্টেলিজ আইডিইএ 2016.3 এ: এটি ডিবাগ প্যানেলের কগ বোতামের ভিতরে লুকানো আছে। নিশ্চিত Show Method Return Valuesকরা হয় পরীক্ষিত

ইন্টেলিজ আইডিয়া 2016.3 "পদ্ধতি রিটার্নের মানগুলি দেখান"

ফাংশনের অভ্যন্তরে কোথাও ভেঙে ফেলার জন্য ডিবাগারটি ব্যবহার করুন যার রিটার্নের মানটি আপনি দেখতে চান।

কার্য পদক্ষেপ

স্টেপ আউট ফাংশন (অথবা উপর পইঠা যতক্ষণ না আপনি অব্যাহতি):

পা বাড়ান

লক্ষ্য করুন যে আপনার চলকগুলিতে রিটার্ন মানটি উপস্থিত হয়:

রিটার্ন মান পর্যবেক্ষণ করুন


3
@ স্ট্যান আমি একটি উত্তর উদাহরণ সরবরাহ করতে আমার উত্তর আপডেট করেছি।
বার্চ্লাবস

40

নেই ওয়াচ পদ্ধতি রিটার্ন মান বোতাম পাওয়া ডিবাগার প্যানেল

পদ্ধতির ফেরতের মান দেখুন : শেষ সম্পাদিত পদ্ধতির রিটার্ন মানগুলি দেখতে এই বোতামটি টিপুন।

পদ্ধতির ফেরতের মানগুলি দেখুন

আইডিইএ 12 কনফিগারেশন:

আইডিইএ 12


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

3
এটি "ভেরিয়েবলস" ফলকে (সম্পূর্ণরূপে যোগ্যতাসম্পন্ন পদ্ধতির নাম ব্যবহার করে) ফেরতের মান দেখায়। এটি গ্রহণযোগ্য উত্তর হওয়া উচিত ছিল। আমার কাছ থেকে ক্র্যাজি কোডার +1 :-)
ওমরি স্পেক্টর

4
@ ক্রাজি কোডার: এই বৈশিষ্ট্যটি এখনও আইডিইএ 13 এর জন্য বিদ্যমান? আমি এটা খুঁজে পাচ্ছি না.
কেভিনার্পে

1
আমি ইন্টেলিজ 15 এ আছি এবং এটিও দেখতে পাচ্ছি না। আপনি একটি স্ক্রিনশট পোষ্ট করতে পারেন?
সানজিভ জীবন

3
জানুয়ারী 2017 (আইডিয়া 2016.3.2): আপনাকে সেটিংস আইকনটিতে ক্লিক করতে হবে (গিয়ার, দ্বিতীয় চিত্রের হলুদ মেনু আইটেমের ঠিক উপরে), একটি মেনুতে "মেথড রিটার্ন মানগুলি দেখান" অন্তর্ভুক্ত রয়েছে shows পুনর্সূচনা কিছু করার কোন প্রয়োজন নেই: একটি পদ্ধতি থেকে পরবর্তী ফেরার পর তার ObjectClassName.methodName () প্রদর্শিত ভেরিয়েবল অধিকার নিচে দেখতে এই
18446744073709551615

1

কিছুক্ষণ আগে এটি জিজ্ঞাসা করা হয়েছিল, তবে আমি যখন এই পরিস্থিতিটি পরিচালনা করতে চাই তখন আমি একটি আলাদা পদ্ধতি ব্যবহার করি।

ডিবাগ করার সময়, আপনি অভিব্যক্তিটি চিহ্নিত করতে পারেন (আপনার ক্ষেত্রে, "প্রত্যাবর্তন" এর ঠিক পরে অভিব্যক্তি) এবং CTRL + ALT + F8 (দ্রুত মূল্যায়ন এক্সপ্রেশন) টিপুন। ইন্টেলিজ আপনাকে একটি সামান্য উইন্ডো পপ আপ করবে যা দেখায় যে মানটি ফিরে আসবে।


2
আপনি যদি একটি ইন্টেল গ্রাফিক চিপ ব্যবহার করেন তবে এই কীবোর্ড শর্টকাটটি আপনার সিকিউন্ডারি মনিটরগুলি বন্ধ করে দেবে
কলি

1
লিনাক্স ব্যবহারকারীরা: Ctrl + Alt + F8 - ব্যবহারকারীকে ২ য় জিইউআই টার্মিনালে প্রেরণ করবে। উবুন্টুতে আমি ফিরে আসতে Ctrl + Alt + F2 চাপলাম।
দিমিত্রি পাভলখিন
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.