Debugger
概要
デバッガは、デバッグ作業を支援するコンピュータプログラムのこと。
gdb
add.cファイルの、main関数のデバッグをするときを考える。
.gdbinitファイル
カレントディレクトリに .gdbinit
ファイルを作成しておくと、定点観測しやすくなる。
break *main # /xは16進数表示する display /x $eax display /x $ebx display /x $esi # /4iは次の4命令を表示する display /4i $pc
gdb -q add
実行する
gdbコンソールでrunを実行する。
Reading symbols from add... (No debugging symbols found in add) Breakpoint 1 at 0x1129 (gdb) r Starting program: /home/orange/Project/my_asm/dokusyu/ch4/add [Thread debugging using libthread_db enabled] Using host libthread_db library "/lib/x86_64-linux-gnu/libthread_db.so.1". Breakpoint 1, 0x0000555555555129 in main () 1: /x $eax = 0x55555129 2: /x $ebx = 0x0 3: /x $esi = 0xffffdb48 4: x/4i $pc => 0x555555555129 <main>: endbr64 0x55555555512d <main+4>: push %rbp 0x55555555512e <main+5>: push %rbx 0x55555555512f <main+6>: mov $0x7b,%ebp
(gdb) x/ 32b $esp
ステップイン
si
で進める。
(gdb) si 0x000055555555512f in main () 1: /x $eax = 0x55555129 2: /x $ebx = 0x0 3: /x $esi = 0xffffdb18 4: x/4i $pc => 0x55555555512f <main+6>: mov $0x7b,%ebp 0x555555555134 <main+11>: add $0x1,%ebp 0x555555555137 <main+14>: mov $0x1c8,%ebx 0x55555555513c <main+19>: add %ebp,%ebx
TUIモード
TextUserInterfaceの略。
gdb -tui add
layout asm
layout regs