Gdbやdbxなどのデバッガーを実行しているときに、最もトリッキーで便利なコマンドを投稿できますか。
テキストユーザーインターフェイスでgdbを起動します
gdb -tui
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.
「-tui」パラメーターを使用してGDBを起動する代わりに、「wh」と入力してしばらくしてからテキストモードに切り替えることもできます。
thread apply all bt
またはthread apply all print $pc
:すべてのスレッドが何をしているかを素早く見つけるため。
たとえば、 stl-views.gdb で定義されているマクロ
-command=<file with gdb commands>
オプションはgdbを起動します。と同じ -x <command file>
。このコマンドファイルには、ブレークポイント、オプションなどのgdbコマンドを含めることができます。gdbを使用して特定の実行可能ファイルを連続してデバッグ実行する必要がある場合に役立ちます。
gdbのスクリプティングは、他のスレッドがステップインしたときに他のスレッドが実行されないようにスケジューラのロックをオン/オフに設定するのが好きなことを除けば、良いトリックです。
オプションの-tuiを使用してgdbを起動して、プログラムの実行中のコード行がどこにあるかを強調する画面を含む子プロセスを表示する代わりに、C-x oおよびC-x aでこの機能に出入りします。これは、機能を使用していて、一時的に使用しないものがある場合に便利です。上矢印を使用して前のコマンドを取得できます。
info threadsすべてのアクティブなスレッドをリストし、f(#)->#切り替えたいスレッド番号
いつかgdbを使用して16進数から10進数または2進数に変換すると、電卓を開く代わりに非常に便利です
これは便利な場合がありますが、改善できると確信しています。
define mallocinfo
set $__f = fopen("/dev/tty", "w")
call malloc_info(0, $__f)
call fclose($__f)
STLをデバッグするには、コンテンツを.gdbinitに追加し、次の手順に従います。