137

gdb や dbx などのデバッガーを実行しているときに、最もトリッキーで便利なコマンドを投稿できますか。

4

12 に答える 12

137
  1. backtrace full:ローカル変数を使用した完全なバックトレース
  2. フレーム:フレーム間を移動
  3. ウォッチ:特定の条件が満たされたときにプロセスを一時停止します
  4. set printpretty on:きれいにフォーマットされたCソースコードを印刷します
  5. ロギングをオンに設定:デバッグセッションをログに記録して、サポートのために他のユーザーに表示します
  6. 印刷配列をオンに設定:かなり配列の印刷
  7. 終了:機能が終了するまで続行します
  8. 有効化と無効化:ブレークポイントを有効化/無効化します
  9. tbreak:1回ブレークしてから、ブレークポイントを削除します
  10. ここで:現在実行中の行番号
  11. info locals:すべてのローカル変数を表示
  12. info args:すべての関数の引数を表示
  13. リスト:ソースを表示
  14. rbreak:正規表現に一致する関数のブレーク
于 2009-09-24T12:20:41.617 に答える
103

テキスト形式のユーザー インターフェイスで gdb を起動する

gdb -tui
于 2009-09-27T10:30:08.280 に答える
45

gdb 7.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.
于 2009-09-27T10:49:38.417 に答える
21

「-tui」パラメータで GDB を起動する代わりに、「w」と入力してしばらくしてからテキスト モードに切り替えることもできます。

于 2009-10-09T07:53:34.870 に答える
16

thread apply all btor thread apply all print $pc: すべてのスレッドが何をしているかをすばやく見つけるため。

于 2009-09-27T09:50:58.423 に答える
6

-command=<file with gdb commands>gdb の起動中にオプションを使用する。と同じ-x <command file>。このコマンド ファイルには、ブレークポイント、オプションなどの gdb コマンドを含めることができます。gdb を使用して特定の実行可能ファイルを連続してデバッグ実行する必要がある場合に便利です。

于 2009-12-15T13:47:58.683 に答える
6

たとえば、stl-views.gdbで定義されているマクロ

于 2009-09-24T12:06:56.903 に答える
5

スクリプティング gdb は良いトリックですが、それ以外は、スケジューラーのロックをオン/オフに設定して、他のスレッドに足を踏み入れているときに他のスレッドの実行を防ぐのが好きです。

于 2009-10-10T08:28:53.930 に答える
4
  • .gdbinitを使用します (マクロを記述して gdb から呼び出すことができる起動ファイル)。.gdbinit をホーム ディレクトリに配置して、gdb がロードされるたびに取得されるようにします。
  • すべてのアクティブなスレッドを一覧表示するinfo threads 、および f(#) -> # 切り替え先のスレッド番号

  • 時々、gdb を使用して 16 進数から 10 進数または 2 進数に変換します。電卓を開く代わりに非常に便利です

    • p/d 0x10 -> 0x10 に相当する 10 進数を与える
    • p/t 0x10 -> 0x10 に相当するバイナリ
    • p/x 256 -> 256 に相当する 16 進数
于 2009-10-13T16:42:24.243 に答える
3

これは便利ですが、改善できると確信しています。ようこそ:

define mallocinfo
  set $__f = fopen("/dev/tty", "w")
  call malloc_info(0, $__f)
  call fclose($__f)
于 2010-01-20T16:10:45.280 に答える
2

STL をデバッグするには、コンテンツを .gdbinit に追加し、次の手順に従います。

http://www.yolinux.com/TUTORIALS/GDB-Commands.html#STLDEREF

于 2010-11-29T11:00:56.177 に答える