带汇编器的 gdb:打印进位标志的状态
我有一个 x86 汇编程序,正在使用 gdb 进行调试。有没有办法打印 gdb 内进位标志的状态,例如“print $cf”?
I've got an x86 assembler program which I'm debugging with gdb. Is there a way to print the status of the carry flag inside gdb with, like, "print $cf"?
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(3)
我使用“p”检查 EFLAGS 寄存器
,其中“p”只是“print”命令的缩写。
我还发现使用“/t”查看位很有帮助(也可以使用 /x 表示十六进制,/d 表示十进制)。
然后,您可以与 EFLAGS 寄存器的图表进行比较。
I check the EFLAGS register using
where "p" is just short for the "print" command.
I also find it helpful to see the bits using "/t" ( also /x for hex, /d for decimal).
You can then compare with the chart for the EFLAGS register.
gdb 的另一个不错的选择是在 eflags 上添加一个观察点。
GDB 检查符号表
这是求和的程序12345 和 23456 可以在tutorialspoint的一个很好的教程中找到: TutorialPoint 汇编教程
观察点捕获当程序添加“6”和“5”时,eflags 寄存器中的进位标志和调整标志已被更改
Another nice option with gdb is to add a watchpoint on eflags.
GDB Examining the Symbol Table
This is program to sum 12345 and 23456 as found in a good tutorial from tutorialspoint: TutorialPoint assembly tutorial
The watchpoint catches that the Carry Flag and Adjust Flag in the eflags register have been altered when the program adds '6' and '5'
您可以使用:
来获取整组标志。您将看到如下一行:
这意味着
eflags
寄存器设置为0x41
,并设置了进位和零标志。You can use:
to get the entire set of flags. You'll see a line like:
which means that the
eflags
register is set to0x41
, with the carry and zero flags set.