使用GNU Debugger,我如何逐步执行__asm__语句?

时间:2011-04-05 05:09:34

标签: gdb debugging

  __asm__("\n\
    movl $1, %eax\n\
  "); 

如何逐步浏览__asm__以便我可以打印寄存器以查看它们存储的内容?现在,我暂停了__asm__行,然后我尝试按stepisi并且它没有进入movl行。我做错了什么?

1 个答案:

答案 0 :(得分:1)

si 踩过movl指令(您可以通过输入display/i $pc并观察输出如何变化来验证这一点。

未发生的事情(以及可能让您困惑的事情)是对源的更新。那是因为你在 asm ()内的代码没有任何行号注释,所以GDB无法分辨它应该显示哪一行。

通常,编译器会将此类注释放入程序集中。但是你在这里绕过了编译器。如果你想要行号是正确的,你必须自己添加这些注释(通常不值得麻烦)。