参数如何在调用者和被调用者中有所不同?

时间:2015-07-08 21:20:32

标签: c debugging gdb

我正在调试一个程序并遇到了我以前从未见过的事情。以下摘自gdb

1236            size = init_text_buffer(fn);
(gdb) p fn
$13 = 0x7fff1cd22d80 "-"
(gdb) s
init_text_buffer (fn=0xd00 <error: Cannot access memory at address 0xd00>)
    at editors/vi.c:720
720 {

使用init_text_buffer指针调用函数char,其值为0x7fff78136bd0。当我进入函数时,参数突然有一个不同的值。

可能的原因是什么?我没有要求你调试我的代码(我没有包含任何内容,所以你怎么样?),我只需要一个指向正确方向的指针。这件事让我没有任何关于要寻找什么的线索。

1 个答案:

答案 0 :(得分:2)

您应该进入混合装配模式(Ctrl + x 2)并执行stepi以检查实际执行的指令。我最近有这个 - 在我的情况下,这是一个优化,C代码当然没有透露。在你的情况下,它可以揭示内存溢出。

值得一试。