🍣
gdb
gdb
gdbではなく、cgdbを使う。
sudo apt install cgdb
layout src C言語表示
layout asm アセンブラ表示
Ctrl+x => Ctrl+a ソース表示
| 表示系 | サンプル | |
|---|---|---|
| b 関数 | 関数にbreak設定 | Text |
| b line | line行数にbreak設定 | Text |
| b file.c line | ファイルlineにbreak設定 | Text |
| i b | ブレークポイント表示 | |
| d 番号 | break番号を削除 | Text |
| p 変数 | 変数表示 | Text |
| p &変数 | 変数のアドレス表示 | Text |
| p/x | 変数16進数表示 | Text |
| p レジスタ | レジスタ表示 | Text |
| p 変数[0] | 構造体表示 | Text |
| x アドレス | メモリ表示 | x $rbp-0x19be |
| info local | ローカル変数標示 | |
| p &変数 | 変数のアドレス表示 | Text |
| list 関数名 | ソース表示 | list start_kernel |
| pt 構造体 | 構造体表示 | list start_kernel |
| c | continue 次のブレークまで実行 | list start_kernel |
| n | next 関数入らない | list start_kernel |
| s | skip 関数入る | list start_kernel |
| f | 現在の関数を抜けるまで実行 | list start_kernel |
| ブレーク | |
|---|---|
| watch | write監視 |
| rwatch | read監視 |
| awatch | write / read 両方監視 |
| メモリ表示 | |
|---|---|
| x/x abc | 16進数表示 |
| x/d abc | 10進数表示 |
| x/b abc | 2進数表示 |
| x/o abc | 8進数表示 |
where たどってきた関数表示
up 上関数
down 下関数
マクロ系
info macro this_cpu_read_stable
p this_cpu_read_stable(current_task)
macro expand native_wrmsrl(a, b)
kill
rerun
start
starti
until for文を抜けるのに使う
dddのコツ

dddはTUIモードにすることができない。 TUIモードにする必要がない。-tuiを付けるとgdbが起動しない。
GDBがフリーズする。~/.ddd/initを削除する。
Waiting until GDB gets ready...
アセンブラソース表示はMachine Code Windowを表示する。
Discussion