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

标签 c++ multithreading gdb

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

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

最佳答案

I'm struggling to debug a multithreaded c++ program that I am working on

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

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

关于c++ - 多线程 gdb - 在崩溃前跟踪变量变化,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13356345/

相关文章:

c++ - 编译错误 C++ 模板函数以迭代器作为参数

c++ - 请给我一些关于如何评估覆盖所有给定区域的最大区域的建议?

linux - 用户线程和内核线程如何与 Linux 堆栈一起工作?

c++ - 在 gdb 中调试 map<int, unique_ptr<A>>

linux - 连接调试器后的断点

无法在调试器中重现错误

c++ - 递归搜索 n 叉树中的元素

c++ - QtConcurrent-在数千个发布到UI线程的结果中保持GUI响应

java - 将内部可运行类导出到 jar (Clips)

ruby-on-rails - 与 MRI Ruby 的并发请求