【发布时间】:2011-12-04 04:49:43
【问题描述】:
我正在尝试计算金丝雀值设置和检查机制。
#包括 诠释主要(无效) { 返回 printf("嗨!\n"); }反汇编时,我得到了
(gdb) disa main 0x080483f4 : lea 0x4(%esp),%ecx 0x080483f8 : 和 $0xfffffff0,%esp 0x080483fb : pushl -0x4(%ecx) 0x080483fe : 推送 %ebp 0x080483ff : 移动 %esp,%ebp 0x08048401 : 推送 %ecx 0x08048402 : 低于 $0x14,%esp 0x08048405 : 移动 %gs:0x14,%eax 0x0804840b : 移动 %eax,-0x8(%ebp) 0x0804840e : xor %eax,%eax 0x08048410 : 移动 $0x8048500,(%esp) 0x08048417 : 调用 0x8048320 0x0804841c : 移动 -0x8(%ebp),%edx 0x0804841f : 异或 %gs:0x14,%edx 0x08048426 : 0x804842d 0x08048428 : 调用 0x8048330 0x0804842d : 添加 $0x14,%esp 0x08048430 : 弹出 %ecx 0x08048431 : 弹出 %ebp 0x08048432 : lea -0x4(%ecx),%esp 0x08048435 : 回复我在 0x0804840e 处设置了一个断点
b *0x0804840e程序流在此断点处停止后,我希望gdb 转到下一个指令,而不是下一个c 代码行。我认为我不能为此使用next。那么除了在每条指令处设置断点,我还有什么其他选择呢?
【问题讨论】:
-
GDB 确实有相当不错的在线帮助 -
help会给你一个主题列表,其中正在运行;help running列出了“stepi -- 准确的第一步指令”,help stepi给出了更详细的描述。