我正在使用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
Run Code Online (Sandbox Code Playgroud)
我使用"..."而不是打印的实际路径.
我正确地打印了第一个参数,但是gdb没有获取第二个参数的地址,而是说下一个值是-1.我回去检查第一个字符串的地址,gdb说它也是-1,即使我刚刚发现它是别的东西!
这不是一个多线程程序,所以我不知道可能会改变什么地址:/
编辑:仅在使用x/s打印地址内容后才会出现.
| 归档时间: |
|
| 查看次数: |
163 次 |
| 最近记录: |