我正在努力调试我正在研究的多线程c ++程序。它似乎在代码中的同一位置崩溃,但只是部分时间由于变量被另一个线程解除分配,导致程序在之后由指针访问变量时崩溃。
因此,我无法单步执行调试程序。有没有办法跟踪gdb中特定变量的所有实例,并跟踪对该内存位置执行的具体操作(所以我可以看到谁解除分配它,以及在哪里)?或者还有其他好方法可以调试吗?
答案 0 :(得分:4)
我正在努力调试我正在研究的多线程c ++程序
使用GDB(或任何其他调试器)调试多线程程序很难。
对于您给出的具体示例:另一个线程仍在访问的一个线程free()
内存,Valgind和AddressSanitizer可能会产生比GDB更好的结果。