gdb デバッガーの最もトリッキーで便利なコマンド [終了]
質問
gdb や dbx などのデバッガーの実行中に、最もトリッキーで便利なコマンドを投稿していただけますか。
解決
- バックトレースがいっぱいです:ローカル変数を使用した完全なバックトレース
- 上, 下, フレーム:フレーム間を移動する
- 時計:特定の条件が満たされたときにプロセスを一時停止する
- プリントプリティをオンに設定:きれいにフォーマットされた C ソース コードを出力します。
- ログオンを設定する:サポートのために他の人に見せるためにデバッグ セッションをログに記録します
- 印刷配列をオンに設定:きれいな配列印刷
- 仕上げる:機能が終了するまで続行
- 有効にする そして 無効にする:ブレークポイントを有効/無効にする
- ティーブレイク:一度ブレークしてからブレークポイントを削除します
- どこ:現在実行中の行番号
- 地元の人に情報を与える:すべてのローカル変数を表示する
- 情報引数:すべての関数の引数を表示する
- リスト:ソースを見る
- ブレイク:正規表現に一致する関数でブレークする
他のヒント
テキストのユーザーインターフェースで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」と入力して使用して、しばらくしてテキストモードに切り替えることができPARAMます。
thread apply all bt
またはthread apply all print $pc
:すべてのスレッドが何をしているかをすばやく見つけるために、
-command=<file with gdb commands>
オプションを使用します。 -x <command file>
と同じ。便利などのブレークポイント、オプションなどのgdbコマンドを含めることができた場合に、特定の実行ファイルが連続したデバッグ通される必要がある。このコマンドファイルは、GDBを使用して実行されます。
スクリプトGDBは、私が好きそれ以外の良いトリックであり、 あなたが一つに強化しているとき、他のスレッドの実行を防ぐために、オン/オフロックセットスケジューラ。
の代わりのコードの実行行がプログラムにある場合、およびC-X oとC-X Aと、この機能のうちでジャンプハイライトされ、画面が含まれている子プロセスを確認するために、オプション-tuiでGDBを起動します。この機能を使用していて、前のコマンドを取得するには上向き矢印を使用することができますので、何が一時的にそれを使用しないように場合に便利です。
- 使用する .gdbinit (マクロを記述して gdb から呼び出すことができる起動ファイル)。gdb がロードされるたびに .gdbinit が取得されるように、ホーム ディレクトリに .gdbinit を配置します。
情報スレッド すべてのアクティブなスレッドをリストし、 f(#) -> # 切り替え先のスレッド番号
時々 gdb を使って 16 進数から 10 進数または 2 進数に変換します。電卓を開く代わりにとても便利です。
- p/d 0x10 -> 0x10 に相当する 10 進数を返します
- p/t 0x10 -> 0x10 に相当するバイナリ
- p/x 256 -> 256 に相当する 16 進数
これは便利です、私は歓迎助け、それはしかし改善することができると確信しています
define mallocinfo
set $__f = fopen("/dev/tty", "w")
call malloc_info(0, $__f)
call fclose($__f)
デバッグSTLには、次の手順に従い、.gdbinitにコンテンツを追加します:
http://www.yolinux.com/TUTORIALS/GDB-Commands。 htmlの#STLDEREFする