1

我正在努力调试我正在处理的多线程 c++ 程序。它似乎在代码中的同一位置崩溃,但只是在某些时候,由于变量被不同的线程释放,导致程序在之后被指针访问时崩溃。

正因为如此,我没有办法单步调试程序。有什么方法可以跟踪 gdb 中特定变量的所有实例,并跟踪对该内存位置执行了哪些特定操作(这样我就可以看到谁释放了它,以及在哪里释放)?或者有没有其他好的方法来调试这个?

4

1 回答 1

4

我正在努力调试我正在处理的多线程 c++ 程序

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

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

于 2012-11-13T06:45:37.220 回答