ktr*_*ktr 1 c debugging gdb segmentation-fault
所以,我现在有些不知所措,希望有人可以提供帮助.我有一个名为'list_free'的库中定义的函数,您可以想象,它释放了您之前创建的列表.当我从另一个模块中调用此函数时,我的程序会出现段错误.在运行GDB时,我得到:
(gdb) bt
#0 *__GI___libc_free (mem=0x65656853) at malloc.c:3709
#1 0x0804f279 in list_free ()
#2 0x0012ffef in set_var (...) at src/calc/model.c:337
#3 0x0804b320 in test_dependency_updates (_i=0) at src/tests/test_calc.c:63
#4 0x080507ea in srunner_run_all ()
#5 0x0804d2b9 in main () at src/tests/test_all.c:19
Run Code Online (Sandbox Code Playgroud)
因此,引起我注意的那条线是#1 ......没有引用该函数的来源.当我将函数的名称更改list_free为list_freex(即,只是不同的东西)时,不再有段错误.另一个奇怪的事情是,如果我更改.c文件中的名称,我不会收到"未定义的list_free引用"的警告或者忘记链接到库中会得到的任何错误.
因此,我被引导相信该功能正在其他地方定义,但我不知道在哪里.A grep -R list_free .没有提供任何帮助,gdb输出似乎没有提示.
所以我想知道是否有人有任何关于如何寻找可以定义此功能的提示.另外,我现在已经重命名了上面提到的功能,因为我似乎没有任何其他选择...但我不确定这是否是一个好/安全的想法?也就是说,我可以通过这样做掩盖其他问题吗?
提前致谢.