关于如何破解这个错误,我已经没有好主意了。我有 1000 行代码,每运行 2 或 3 次就会崩溃。它目前是一个用 C 编写的原型命令行应用程序。一个问题是它是专有的,我不能给你源代码,但我很乐意将调试编译的可执行文件发送给 Debian Squeeze x86_64 机器上的任何勇敢的灵魂。
这是我到目前为止得到的:
当我在 GDB 中运行它时,它总是成功完成。
当我在 Valgrind 中运行它时,它总是成功完成。
这个问题似乎源于一个非常基本的递归函数调用。为了找出这个递归函数中的错误,我在一个单独的应用程序中编写了相同的函数。它总是成功完成。
我构建了自己的 gcc 4.7.1 编译器,用它编译了我的代码,但我仍然得到相同的行为。
将我的应用程序转移到另一台机器上以消除硬件问题的风险,我仍然得到相同的行为。
将我的源代码 FT 转移到另一台机器上,以消除构建环境损坏的风险,但我仍然得到相同的行为。
该应用程序是单线程的,并且不进行可能导致竞争条件的信号处理。我memset(,0,)
都是大物件
没有外来依赖,ldd 如下。
ldd 给了我这个:
ldd tst
linux-vdso.so.1 => (0x00007fff08bf0000)
libpthread.so.0 => /lib/libpthread.so.0 (0x00007fe8c65cd000)
libm.so.6 => /lib/libm.so.6 (0x00007fe8c634b000)
libc.so.6 => /lib/libc.so.6 (0x00007fe8c5fe8000)
/lib64/ld-linux-x86-64.so.2 (0x00007fe8c67fc000)
有什么工具可以帮助我吗?如果你处于我的位置,你的下一步是什么?
谢谢!
这就是让我朝着正确方向前进的原因 - Wextra 我已经使用过 -Wall。
谢谢!!!这真的让我发疯了。