繁体   English   中英

在GDB中打印装配变量

[英]Printing Assembly Variable in GDB

我没有完整的源代码,但有一个带符号的目标文件。 有一条读线:

=> 0x080489cd <+169>:   call   0x8049275 <read_line>
   0x080489d2 <+174>:   mov    %eax,(%esp)
   0x080489d5 <+177>:   call   0x8048d59 <phase_1>

in the function:
 8048d59:   55                      push   %ebp
 8048d5a:   89 e5                   mov    %esp,%ebp
 8048d5c:   83 ec 08                sub    $0x8,%esp

我把ab放在第一行,并在函数名称中添加了一个以确定。 输入“1”后尝试了p *(char**)$esp ,我得到:

0x80489da "\350\355\006"

这不是我的预期。 我原本应该看到“1”。 我也尝试过:

gdb x $esp
0xbffff0cc: 0x080489da

gdb x *0xbffff0cc

0x80489da <main+182>: 0x0006ede8

如果你打破第一个功能(我假设你的意思是:“我把ab放在第一行”)然后你看到的是返回地址。 看起来你实际上是在看到调用phase_1的返回地址。

如果您正在寻找的是第一个参数,请尝试:

p *(char**)($esp+4);

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM