我试图计算金丝雀值设置和检查机制 .
#include
int main(void)
{
return printf("Hi!\n");
}
当拆卸主体时,我明白了
(gdb) disas main
0x080483f4 : lea 0x4(%esp),%ecx
0x080483f8 : and $0xfffffff0,%esp
0x080483fb : pushl -0x4(%ecx)
0x080483fe : push %ebp
0x080483ff : mov %esp,%ebp
0x08048401 : push %ecx
0x08048402 : sub $0x14,%esp
0x08048405 : mov %gs:0x14,%eax
0x0804840b : mov %eax,-0x8(%ebp)
0x0804840e : xor %eax,%eax
0x08048410 : movl $0x8048500,(%esp)
0x08048417 : call 0x8048320
0x0804841c : mov -0x8(%ebp),%edx
0x0804841f : xor %gs:0x14,%edx
0x08048426 : je 0x804842d
0x08048428 : call 0x8048330
0x0804842d : add $0x14,%esp
0x08048430 : pop %ecx
0x08048431 : pop %ebp
0x08048432 : lea -0x4(%ecx),%esp
0x08048435 : ret
我使用断点设置为0x0804840e
b *0x0804840e
程序流程在此断点处停止后,我希望 gdb 转到下一个 instruction 而不是下一个 line of c code . 我不认为我可以使用 next . 除了在每条指令设置断点之外,我还有什么其他选择?