识别导致内存错误的变量

时间:2013-01-07 06:07:40

标签: c++ debugging memory gdb segmentation-fault

所以我现在遇到了一些奇怪的错误,我正在寻找一些好的方向来确定问题。

基本上我所看到的是一个段错误。症状如下:

  1. 仅在程序处于发布模式时才会发生,而不是在调试中。
  2. 它显示为段错误,GDB告诉我它位于函数末尾的_list_release / _free() / free()

    Program received signal SIGSEGV, Segmentation fault.

    0xb0328af8 in _list_release () from /usr/qnx650/target/qnx6/x86/lib/libc.so.3

    (gdb) bt

    0 0xb0328af8 in _list_release () from /usr/qnx650/target/qnx6/x86/lib/libc.so.3

    1 0xb032a464 in __free () from /usr/qnx650/target/qnx6/x86/lib/libc.so.3

    2 0xb0329f7d in free () from /usr/qnx650/target/qnx6/x86/lib/libc.so.3

  3. 我没有使用任何动态内存(除了可能出现在Eigen(或其他库)中的内容

  4. 我可以在函数结束之前打印所有局部变量,因此它不是双重免费的。
  5. 上次发生这是一个内存故障,适合所有这些问题。烦人的这次我找不到问题。

    我想做的是以下内容:

    1. 这将是非常有用的:如何在调试模式下强制此错误,然后GDB会更有帮助。
    2. 追踪导致问题的小问题的最佳方法是什么? 注意:我不能使用valgrind,它不适用于我正在使用的操作系统(QNX)
    3. 任何帮助都会很棒。

0 个答案:

没有答案