我正在调试一个程序并遇到了我以前从未见过的事情。以下摘自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
。当我进入函数时,参数突然有一个不同的值。
可能的原因是什么?我没有要求你调试我的代码(我没有包含任何内容,所以你怎么样?),我只需要一个指向正确方向的指针。这件事让我没有任何关于要寻找什么的线索。
答案 0 :(得分:2)
您应该进入混合装配模式(Ctrl + x 2)并执行stepi以检查实际执行的指令。我最近有这个 - 在我的情况下,这是一个优化,C代码当然没有透露。在你的情况下,它可以揭示内存溢出。
值得一试。