কীভাবে জিডিবি দিয়ে স্টেপ-ইন, স্টেপ-ওভার এবং স্টেপ-আউট করবেন?


42

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

যে কেউ সাহায্য করতে পারেন?


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

@ এমএপি আমি আবার চেষ্টা করব। আমি আরও ভাল ডিবাগার (কেডিবিজি) ব্যবহার করার চেষ্টা করেছি তবে আমি উবুন্টুতে এটি ব্যবহার করতে সফল হই না
পিচি উয়ানা

উত্তর:


38

help running কিছু ইঙ্গিত সরবরাহ করে:

আছে stepএবং nextনির্দেশাবলী (এবং এছাড়াও nextiএবং stepi)।

(gdb) help next
Step program, proceeding through subroutine calls.
Usage: next [N]
Unlike "step", if the current source line calls a subroutine,
this command does not enter the subroutine, but instead steps over
the call, in effect treating it as a single source line.

সুতরাং আমরা দেখতে পারেন stepপদক্ষেপ মধ্যে সাবরুটিনের কিন্তু nextপইঠা হবে উপর সাবরুটিনের।

stepএবং stepi(এবং nextএবং nexti) "লাইন" বা "নির্দেশ" বাড়তি দ্বারা পার্থক্য করা হয়।

step -- Step program until it reaches a different source line
stepi -- Step one instruction exactly

সম্পর্কিত finish:

(gdb) help finish
Execute until selected stack frame returns.
Usage: finish
Upon return, the value returned is printed and put in the value history.

আরও অনেক দরকারী তথ্য https://sourceware.org/gdb/onlinesocs/gdb/Continuing-and-Stepping.html এ রয়েছে


এটি ভিন্ন উত্স লাইনে পৌঁছানো পর্যন্ত এর অর্থ কী ?
পিচি উয়ানা

1
for(i=0;i<10;i++) { printf("%d\n",i); }এক উত্স লাইন তবে একাধিক নির্দেশনা।
স্টিফেন হ্যারিস

3
স্টেপ-আউট করার কোনও উপায় আছে কি? দৌড়াদৌড়ি করে সাহায্য পাওয়া যায়নি।
নিউকেগুই

1
"স্টেপ আউট" বলতে কী বোঝ? finishকমান্ড বর্তমান সময় স্ট্যাক ফ্রেম, যা স্বাভাবিকভাবে বর্তমান সাবরুটিন সম্পূর্ণ আহ্বানকারী ফিরে আসবে সম্পন্ন করা হবে।
স্টিফেন হ্যারিস

@ পিচিওয়ানা জিডিবি পরবর্তী
সংখ্যার

0

আমি এখানে এসেছি কারণ আমার একই প্রশ্ন ছিল। আমি অবশেষে বুঝতে পেরেছিলাম যে আমার উদ্দেশ্যে যে কোনও সময় আমি কোনও লুপের "স্টেপ-আউট" এর মতো কিছু ব্যবহার করতে পারি আমি লুপের পরে কেবল একটি অন্য ব্রেকপয়েন্ট স্থাপন করতে পারি এবং তারপরে প্রোগ্রামটিকে continueলুপটি শেষ করতে এবং তার পরে ব্রেকআপপয়েন্টে চালিয়ে যেতে পারি। দুঃখিত এটি যদি বেশিরভাগ লোকের কাছে সুস্পষ্ট হয় তবে এই প্রশ্নের উত্তর খোঁজার জন্য এটি সম্ভবত সহায়ক helpful

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