1
我正在用gdb調試一個非常簡單的彙編程序(SPARC),並且遇到了一個奇怪的問題。我正在嘗試使用gdb將argv中的參數打印到我的程序的主函數中。由於某些原因,$ i1中的地址(main的第二個參數)有時會更改爲指向-1。這裏是我的gdb會話的複製粘貼:爲什麼這個地址在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到的地址打印內容之後。