【发布时间】:2012-08-14 15:38:33
【问题描述】:
十年来我一直在使用 gdb,但从未遇到过这个特殊问题。我升级到 gdb 7.4,问题依旧。
我正在 RHEL5 上调试 Cilk 多线程 C++ 应用程序。执行在段错误处停止。当我要求 gdb 打印某些变量的值(它们是 boost::intrusive_ptr 对模板化对象实例的引用)时,gdb 将打印正确的值,但也会在很短的时间内在所有线程上恢复执行。我怀疑它会恢复执行,因为我的更多调试打印语句滚动到终端(它不仅仅是清除缓冲区——我可以继续打印它并且它会继续恢复执行)。这种持续执行的短暂突增导致我正在跟踪的变量的值发生变化。至少可以说,这会妨碍调试。
我怀疑我有内存泄漏并且堆栈已损坏,但我在代码上运行了 valgrind(具有不同的初始条件),它显示我正在调试的主要子系统中没有内存泄漏,除了名义上的 Cilk 内部泄漏。
【问题讨论】:
标签: gdb