জিডিবি ডিবাগারটির জন্য সর্বাধিক কৌশলযুক্ত / দরকারী কমান্ড


138

আপনি জিডিবি বা ডিবিএক্সের মতো কোনও ডিবাগার চালানোর সময় আপনি কী আপনার সবচেয়ে জটিল এবং দরকারী কমান্ডগুলি পোস্ট করতে পারেন?


আমি এই ডকুমেন্টেশন ভাল আছে। scc.ustc.edu.cn/zlsc/sugon/intel/debugger/cl/…
রিক

উত্তর:


134
  1. ব্যাকট্রেস পূর্ণ : স্থানীয় ভেরিয়েবলগুলির সাথে ব্যাকট্রিজ সম্পূর্ণ করুন
  2. উপরে , নীচে , ফ্রেম : ফ্রেমগুলির মাধ্যমে সরান
  3. ঘড়ি : একটি নির্দিষ্ট শর্ত পূরণ হলে প্রক্রিয়া স্থগিত করুন
  4. প্রিন্টটি বেশ চালু করুন : প্রাকৃতিকভাবে ফর্ম্যাট করা সি উত্স কোড প্রিন্ট করে
  5. লগিং সেট করুন : সমর্থনের জন্য অন্যকে দেখানোর জন্য লগ ডিবাগিং সেশন
  6. প্রিন্ট অ্যারে চালু করুন : প্রিন্ট অ্যারে প্রিন্টিং
  7. সমাপ্তি : ফাংশন শেষ পর্যন্ত চালিয়ে যান
  8. সক্ষম এবং অক্ষম করুন : ব্রেকপয়েন্টগুলি সক্ষম / অক্ষম করুন
  9. tbreak : একবার বিরতি করুন, এবং তারপরে ব্রেকপয়েন্টটি সরান
  10. যেখানে : লাইন নম্বর বর্তমানে কার্যকর করা হচ্ছে
  11. স্থানীয়দের তথ্য : সমস্ত স্থানীয় ভেরিয়েবল দেখুন
  12. তথ্য আরগস : সমস্ত ফাংশন আর্গুমেন্ট দেখুন
  13. তালিকা : উত্স দেখুন
  14. rbreak : নিয়মিত অভিব্যক্তি মেলে ফাংশন বিরতি

7
info locals- সমস্ত স্থানীয় ভেরিয়েবল দেখুন; তালিকা - উত্স দেখুন; rbreak - নিয়মিত এক্সপ্রেশন মেলে ফাংশন বিরতি।
পল বিগগার

উত্স / পাথ / টু / ম্যাক্রো / ফাইল এবং আমার নিফটি ম্যাক্রোগুলির সমস্তই সেকেন্ডে আমাকে ডিবাগ করতে সহায়তা করে।
সুধংশু

1
set print object onপলিমারফিক উপাদানগুলির জন্য এবং set print elements 0দুটি কমান্ড যা আমি প্রায়শই ব্যবহার করি। বেশ দরকারী।
কিরিল কিরভ

1
এছাড়াও, t a a bt(অর্থ thread apply all backtrace)। (প্রায়) অন্যান্য সমস্ত কমান্ডের সাহায্যে ব্যবহার করা যেতে পারে। বিশেষত সঙ্গে দরকারী bt full
কিরিল কিরভ

101

একটি পাঠ্য ব্যবহারকারী ইন্টারফেস দিয়ে জিডিবি শুরু করুন

gdb -tui

21
আমি বিশ্বাস করতে পারি না যে এই বৈশিষ্ট্যটি আমাকে এত বছর ধরে পালিয়েছে। আপনাকে ধন্যবাদ, আপনাকে ধন্যবাদ আপনাকে ধন্যবাদ!
দেবসোলার

ধন্যবাদ আপনি আমার অনেক সময়
সাশ্রয় করেছেন

1
এবং অন্যটি: <মাইনাস>
আরইটি


খুব সুন্দর বৈশিষ্ট্য। এটিকে এখনও মিস করেছি ...
প্রবীণম্যাক্স

45

জিডিবি .0.০ থেকে শুরু করে, এখানে ফেরতযোগ্য ডিবাগিং রয়েছে , সুতরাং আপনার নতুন প্রিয় কমান্ডগুলি হ'ল :

* reverse-continue ('rc') -- Continue program being debugged but run it in reverse
* reverse-finish -- Execute backward until just before the selected stack frame is called
* reverse-next ('rn') -- Step program backward, proceeding through subroutine calls.
* reverse-nexti ('rni') -- Step backward one instruction, but proceed through called subroutines.
* reverse-step ('rs') -- Step program backward until it reaches the beginning of a previous source line
* reverse-stepi -- Step backward exactly one instruction
* set exec-direction (forward/reverse) -- Set direction of execution.

21

"-টুই" পরম দিয়ে জিডিবি চালু করার পরিবর্তে আপনি "WH" টাইপ করে কিছুক্ষণ পরে পাঠ্য মোডেও যেতে পারেন।


3
'সাধারণ' কমান্ড লাইন ভিউতে ফিরে যেতে Ctrl-a!
কেভিন

2
"- 'ইনস্টল করা' WH 'এর ব্যবহার করা যেতে পারে sh আরও কম খাটো .. :)
রাজ_জিটি 1

6
Ctrl-a a? এটা কি একটা কৌতুক? আরও কম্যান্ড tmux/ screenকমান্ডের মতো দেখায় । এবং আমার জন্য কাজ করে না। এটা তোলে এক হতে হবে যেমন প্রতি ডক্স : C-x C-a, C-x a, C-x A
এক্স-ইউরি

এটা আসলে C-x a। এছাড়াও আপনি সঙ্গে মতামত সুইচ করতে পারেন C-x 1এবং C-x 2যখন Tui মোডে দেখতে সমাবেশ পাশাপাশি (যদি প্রয়োজন হতে)।
স্যাম হুইটলক

16

thread apply all btবা thread apply all print $pc: সমস্ত থ্রেড কী করছে তা দ্রুত খুঁজে বের করার জন্য।


সেই আদেশটি আমি দীর্ঘদিনের জন্য খুঁজছিলাম! একে একে 30 টি থ্রেড চেক করা সত্যিই বাজে!
টথফু


6

-command=<file with gdb commands>Gdb গুলি চালানোর সময় বিকল্পটি ব্যবহার করা Using হিসাবে একই -x <command file>। এই কমান্ড ফাইলে জিডিবি কমান্ড যেমন ব্রেকপয়েন্ট, অপশন ইত্যাদি থাকতে পারে g


আপনি -iexgdb কমান্ড লাইনে স্বতন্ত্র কমান্ড যুক্ত করতে বিকল্পটিও ব্যবহার করতে পারেন ।
doug65536

5

স্ক্রিপ্টিং জিডিবি হ'ল একটি ভাল কৌশল, অন্য আপনি থ্রেড করার সময় অন্যান্য থ্রেডগুলি চালনা রোধ করতে আমি শিডিয়ুলার লকিং চালু / বন্ধ করতে চাই।


1
আপনি কিভাবে শিডিয়ুলার লকিং সেট করবেন?
ডিফ্ট_কোড

3
set scheduler-locking ongdb এর ভিতরে
বেন

কীভাবে আপনি এটি ডিফল্ট করবেন? আমি এটি চেষ্টা করেছিলাম .gdbinit তবে gdb প্রিন্ট করে / home/omry/.gdbinitament: উত্সযুক্ত কমান্ড ফাইলটিতে ত্রুটি: লক্ষ্য 'কিছুই নয়' এই আদেশটি সমর্থন করতে পারে না।
ওমরি ইয়াদান

4
  • .Gdbinit ব্যবহার করে (ফাইল শুরু করুন যেখানে আপনি ম্যাক্রো লিখতে পারেন এবং জিডিবি থেকে কল করতে পারেন)। আপনার হোম ডিরেক্টরিতে .gdbinit রাখুন যাতে প্রতিটি সময় জিডিবি লোড হওয়ার পরে এটি বাছাই করা হয়
  • সমস্ত সক্রিয় থ্রেডের তালিকা তৈরি করার জন্য তথ্য থ্রেডস এবং f (#) -> # থ্রেড নম্বরটিতে আপনি স্যুইচ করতে চান

  • কখনও কখনও আমি হেক্স থেকে দশমিক বা বাইনারি রূপান্তর করতে জিডিবি ব্যবহার করি, এটি একটি ক্যালকুলেটর খোলার পরিবর্তে খুব কার্যকর

    • p / d 0x10 -> 0x10 এর দশমিক সমতুল্য দেয়
    • p / t 0x10 -> বাইনারি 0x10 এর সমতুল্য
    • p / x 256 -> হেক্সের সমতুল্য 256

4

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


2
আপনি কমান্ড উইন্ডোতে ফোকাসটি focus cmdএমনভাবে ব্যবহার করতে পারেন যাতে উপরে / নীচে তীরগুলি কাজ করে। আপনি ব্যবহার করে ফিরে যান focus src
নাথান ফেলম্যান

3

এটি দরকারী হতে পারে, আমি নিশ্চিত যে এটি উন্নতি হতে পারে যদিও, স্বাগতম স্বাগত:

define mallocinfo
  set $__f = fopen("/dev/tty", "w")
  call malloc_info(0, $__f)
  call fclose($__f)

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