以下简短的c程序:
void foo(int a, int b) {
printf("a = %p b = %p\n", &a, &b);
}
main() {
foo(1, 2);
}
好的,现在我用gdb来查看这个程序。我得到了输出:
a = 0x7fff5fbff9ac b = 0x7fff5fbff9a8
并在输出后停止执行(在 foo() 中)。现在我检查了 0x7fff5fbff9ac ,内容是:
1....正确
然后是 0x7fff5fbff9a8 和内容:
2...正确
现在我想查看函数的返回地址并检查(a + 4 个字节):
x/g 0x7fff5fbff9b1(8 个字节!!地址,因此是“g”(巨字))
其内容是:
(gdb) x/g 0x7fff5fbff9b1
0x7fff5fbff9b1: 0xd700007fff5fbff9
但是:这不是 MAIN 的退货广告!我的错在哪里?