回答:
info locals
-すべてのローカル変数を表示します。リスト-ソースを表示; rbreak-正規表現に一致する関数で中断します。
set print object on
ポリモーフィック要素の場合、set print elements 0
私が頻繁に使用する2つのコマンドです。かなり便利です。
t a a bt
(を意味しますthread apply all backtrace
)。他のほとんどすべてのコマンドで使用できます。特にで役立ちbt full
ます。
テキストユーザーインターフェイスで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」と入力して、しばらくしてからテキストモードに切り替えることもできます。
Ctrl-a a
?それは冗談ですか?tmux
/ screen
コマンドのように見えます。そして、私にはうまくいきません。これは、のいずれかでなければなりませんようあたりのドキュメント:C-x C-a
、C-x a
、C-x A
。
C-x a
です。また、Tuiモードでビューを切り替えてC-x 1
、C-x 2
アセンブリを表示することもできます(必要な場合)。
thread apply all bt
またはthread apply all print $pc
:すべてのスレッドが何をしているかをすばやく見つけるため。
たとえば、stl-views.gdbで定義されたマクロ
-command=<file with gdb commands>
gdbの起動中にオプションを使用する。と同じ-x <command file>
。このコマンドファイルには、ブレークポイント、オプションなどのgdbコマンドを含めることができます。特定の実行可能ファイルをgdbを使用して連続してデバッグ実行する必要がある場合に役立ちます。
-iex
オプションを使用して、gdbコマンドラインで個々のコマンドを追加することもできます。
スクリプトgdbは良いトリックですが、他のスレッドが実行中に実行されないように、スケジューラーのロックをオン/オフに設定するのが好きです。
set scheduler-locking on
gdb内
オプション-tuiを使用してgdbを起動し、コードの実行行がプログラム内のどこにあるかを強調表示する画面を含む子プロセスを表示する代わりに、Cx oおよびCx aを使用して、この機能にジャンプします。これは、機能を使用していて一時的にそれを使用しない場合に便利です。上矢印を使用して前のコマンドを取得できます。
focus cmd
上/下矢印が機能するように、フォーカスをコマンドウィンドウに変更できます。を使用して切り替えますfocus src
。
STLをデバッグするには、.gdbinitにコンテンツを追加し、次の手順に従います。