调用者和被调用者的参数有何不同?
How can an argument be different in the caller and the callee?
我正在调试一个程序,运行 遇到了我以前从未见过的东西。以下是摘自 gdb
.
1236 size = init_text_buffer(fn);
(gdb) p fn
= 0x7fff1cd22d80 "-"
(gdb) s
init_text_buffer (fn=0xd00 <error: Cannot access memory at address 0xd00>)
at editors/vi.c:720
720 {
函数 init_text_buffer
使用值为 0x7fff78136bd0
的 char
指针调用。当我进入函数时,参数突然有了不同的值。
这可能是什么原因造成的?我不是要你调试我的代码(我没有包括任何代码,所以你怎么能?),我只需要一个指向正确方向的指针。这件事让我完全不知道要寻找什么。
您应该进入混合汇编模式 (Ctrl+x 2) 并执行 stepi 以检查实际执行了哪些指令。我最近有这个——在我的例子中,这是 C 代码当然没有透露的优化。在您的情况下,它可能会显示内存溢出。
值得一试。
我正在调试一个程序,运行 遇到了我以前从未见过的东西。以下是摘自 gdb
.
1236 size = init_text_buffer(fn);
(gdb) p fn
= 0x7fff1cd22d80 "-"
(gdb) s
init_text_buffer (fn=0xd00 <error: Cannot access memory at address 0xd00>)
at editors/vi.c:720
720 {
函数 init_text_buffer
使用值为 0x7fff78136bd0
的 char
指针调用。当我进入函数时,参数突然有了不同的值。
这可能是什么原因造成的?我不是要你调试我的代码(我没有包括任何代码,所以你怎么能?),我只需要一个指向正确方向的指针。这件事让我完全不知道要寻找什么。
您应该进入混合汇编模式 (Ctrl+x 2) 并执行 stepi 以检查实际执行了哪些指令。我最近有这个——在我的例子中,这是 C 代码当然没有透露的优化。在您的情况下,它可能会显示内存溢出。
值得一试。