gdb
rで実行
ブレークポイントがセットされている場合はそこまで実行
bでブレークポイントを設定
(gdb)b hogeでhogeに入る直前まで進む
pでレジスタ内を確認
レジスタ名には$を付けてp $raxのように実行
10進数で表示
スタックってどうやって見るん?
sで一行すすめる
disass 関数名
コード全体と、今実行している場所を示す
矢印が指されているところはまだ実行されていない
その一行上まで実行されている
code:txt
(gdb) disass hoge
Dump of assembler code for function hoge:
0x000055677dead74f <+0>: pushq $0x2
=> 0x000055677dead751 <+2>: pushq $0x2
0x000055677dead753 <+4>: pop %rdi
0x000055677dead754 <+5>: pop %rax
0x000055677dead755 <+6>: add %rdi,%rax
0x000055677dead758 <+9>: push %rax
0x000055677dead759 <+10>: pop %rax
0x000055677dead75a <+11>: retq
set disassembly-flavor intel
intel記法に変える
これを実行した後に、上のやつをやるとintel記法になっている
code:txt
(gdb) disass hoge
Dump of assembler code for function hoge:
0x000055677dead74f <+0>: push 0x2
=> 0x000055677dead751 <+2>: push 0x2
0x000055677dead753 <+4>: pop rdi
0x000055677dead754 <+5>: pop rax
0x000055677dead755 <+6>: add rax,rdi
0x000055677dead758 <+9>: push rax
0x000055677dead759 <+10>: pop rax
0x000055677dead75a <+11>: ret
qで終了