【发布时间】:2014-05-20 01:47:27
【问题描述】:
我正在使用 gdb 调试一个非常简单的汇编程序 (SPARC),但遇到了一个奇怪的问题。我正在尝试使用 gdb 将 argv 中的参数打印到程序的主函数中。出于某种原因,$i1 中的地址(main 的第二个参数)有时会更改为指向 -1。这是我的 gdb 会话的复制粘贴:
(gdb) p/x $i1
$1 = 0xffbff084
(gdb) x/x 0xffbff084
0xffbff084: 0xffbff1e4
(gdb) x/s 0xffbff1e4
0xffbff1e4: "..."
(gdb) x/x 0xffbff088
0xffbff088: 0xff
(gdb) x/x 0xffbff084
0xffbff084: 0xff
我使用“...”而不是打印的实际路径。
我正确打印了第一个参数,但是 gdb 没有得到第二个参数的地址,而是说下一个值是 -1。我回去再次检查第一个字符串的地址,gdb 说它也是 -1,即使我刚刚发现它是别的东西!
这不是一个多线程程序,所以我不知道什么会改变地址:/
编辑:仅出现在使用 x/s 打印地址处的内容之后。
【问题讨论】: