多线程gdb - 在崩溃前跟踪变量

时间:2012-11-13 06:20:42

标签: c++ multithreading gdb

我正在努力调试我正在研究的多线程c ++程序。它似乎在代码中的同一位置崩溃,但只是部分时间由于变量被另一个线程解除分配,导致程序在之后由指针访问变量时崩溃。

因此,我无法单步执行调试程序。有没有办法跟踪gdb中特定变量的所有实例,并跟踪对该内存位置执行的具体操作(所以我可以看到谁解除分配它,以及在哪里)?或者还有其他好方法可以调试吗?

1 个答案:

答案 0 :(得分:4)

  

我正在努力调试我正在研究的多线程c ++程序

使用GDB(或任何其他调试器)调试多线程程序很难。

对于您给出的具体示例:另一个线程仍在访问的一个线程free()内存,ValgindAddressSanitizer可能会产生比GDB更好的结果。