我正在努力调试我正在处理的多线程 C++ 程序。它似乎在代码中的同一位置崩溃,但只是在某些时候由于变量被不同的线程释放,导致程序在之后的指针访问变量时崩溃。
因此,我无法单步调试程序。有什么方法可以跟踪 gdb 中特定变量的所有实例,并跟踪对该内存位置执行了哪些特定操作(这样我就可以看到谁释放了它,在哪里)?或者还有其他好的调试方法吗?
最佳答案
I'm struggling to debug a multithreaded c++ program that I am working on
使用 GDB(或任何其他调试器)调试多线程程序很困难。
对于您给出的具体示例:一个线程free()
ing 另一个线程仍在访问的内存,Valgind和 AddressSanitizer可能会产生比 GDB 更好的结果。
关于c++ - 多线程 gdb - 在崩溃前跟踪变量变化,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13356345/