【发布时间】:2011-07-05 08:00:56
【问题描述】:
我有一个程序在一个测试用例中产生了一个致命错误,我可以通过读取日志和致命错误的堆栈跟踪来定位问题 - 结果是对空指针进行了读取操作。
但是当我尝试将 gdb 附加到它并在可疑代码周围设置断点时,就无法观察到空指针!程序运行顺利,没有任何错误。
这是一个单进程、单线程的程序,我以前没有经历过这种事情。谁能给我一些cmets?谢谢。
附加:我还尝试在致命触发代码之前调用 pause() 系统调用,并希望程序在致命点之前休眠,然后在其上即时附加 gdb,遗憾的是,没有发生致命事件。
【问题讨论】:
-
尝试使用
valgrind/memcheck进行调试? -
啊,海森堡的不确定性原理,应用于编程
-
臭名昭著的heisenbug
-
可能是未初始化的指针,或用作设置指针条件的值,在非调试中恰好为零。调试时它具有不同的起始值。