GDB は、C/C++ プログラムのデバッグに使用できるデバッガーです。この C/C++ は、GDB によって呼び出される前に、シンボル テーブルを生成する必要があります。たとえば、C++:
g++ -g source.cpp
GDB共通コマンド
最初に、デバッグ シンボルを含む ELF ファイル (exe で修正可能でリンク可能な形式) を生成する必要があります。簡単に言えば、これはデバッグ シンボルを含む実行可能ファイルです。-g
コンパイルするパラメータを追加します。
こんにちは.cpp:
──(kali㉿kali)-[~/dev/Bear]
└─$ g++ -o world -g hello.cpp
──(kali㉿kali)-[~/dev/Bear]
└─$ ls
world hello.cpp
gdb デバッガーを起動します
──(kali㉿kali)-[~/dev/Bear]
└─$ gdb
デバッグを容易にするために、調整を開始する前に実行しますlayout next
このコマンドは、プログラム内の現在の位置周辺のソース コードを表示します。このビューは、特に慣れていないソース コードを操作する場合に、gdb を初めて使用する場合に役立ちます。
GDBを起動したら、初めて入力します
(gdb) layout next
再度実行すると layout next
、アセンブリ言語のプログラムが表示されます。
layout prev
このコマンドは、以前のモードに戻ることです。
デバッグ用にワールド ファイルを使用し、ファイル file を使用して、デバッグ用にワールド ファイルのシンボルを読み込みます。
file を使用して、デバッグに使用するファイルのシンボルを読み込みます
(gdb) file world
Reading symbols from world...
ブレークポイントを設定
特定の行番号でのブレークポイント:
(gdb) break 2
(gdb) break 7
関数にブレークポイントを設定することもできます:
(gdb) break main
世界プログラムを実行する
(gdb) run world
または、いくつかのパラメーターを world プログラムに渡します。
(gdb) run world "ling ling"
次のコマンドを使用して、次の行まで実行します
(gdb) next
関数呼び出しに遭遇し、入って見たい場合は、ステップを使用できます
(gdb) step
関数に入った後、読み続けたくなく、関数が呼び出された場所に戻りたい場合は、finish を使用できます。
(gdb) finish
呼び出し元に戻りたい場合は、return コマンドを使用できます。
print を使用して一部の変数の値を確認する
一部の変数の値を確認するために print を使用することに加えて、display を使用することもできます。これは、各命令の後に情報を再出力するという点で print とは異なります。
clear を使用してブレークポイントをクリアします
たとえば、7 行目のブレークポイントをクリアします。
(gdb) clear 7
または、メソッド名のブレークポイントを数えます:
(gdb) clear main
bt は、関数呼び出しスタック、つまりこの行に到達してから実行されたすべての関数、つまり関数呼び出しスタックを表示します。
(gdb) bt
continue コマンドは、ブレークポイントが停止した場所から次のブレークポイントまで続行するために使用されます。
(gdb) continue
frame [番号] は、コール スタック内の選択されたフレームに移動します。
list コマンドを使用して、現在のソース ファイルの現在の行の周りの領域を出力します。現在の行と呼び出された関数スタックを表示
quit または exit は両方とも gdb デバッガーです。
上記のコマンドは一般的に使用されます。より高度な使用法については、help コマンドを使用してより有用な情報を見つけることができます。
(gdb) help
help コマンドを使用して、より高度なアプリケーションを学習できます。ここでは展開しません。gdb はまだ非常に簡単に習得できます。