Dou*_*ith 3 c debugging stack gdb cpu-registers
我有一个作业,要求我找到主要的寄存器检查的返回值(我们正在学习gdb),我将如何去做呢?
一般来说,查看调用约定.
在x86中,所有调用约定在EAX上返回小整数结果,在EDX上返回大(64位)结果:EAX(EDX保持较高位),浮点结果为FP0.
在x64中,RAX返回小整数结果,浮点结果为FP0.
在ARM(包括拇指模式)中,整数结果在R0中返回.
如果你想找出断点的位置,我的建议是在主函数的开头加一个断点.如果这样做,返回地址(即main将在完成执行后返回的位置)将是堆栈顶部的值.如果你在那里放置一个断点,你将在main函数完成执行后立即中断.
由于main的返回类型为int,因此您可以查看EAX(或RAX或R0)以查看main返回的值.
| 归档时间: |
|
| 查看次数: |
171 次 |
| 最近记录: |