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

Memo

Internal Architecture of Delve - Speaker Deck

GoのデバッガDelveの解説。

Tasks

Reference

Archives