在不停止程序的情况下调试程序

时间:2018-11-06 09:27:44

标签: c++ gdb

我有一个大型的多线程程序,用cpp编写并用gcc编译。 我时不时地在运行时遇到错误。有没有一种方法可以附加gdb(或其他任何方法)并尝试查看每个线程在做什么,并且可能会看到一些内部类成员?

问题是我不希望gdb冻结程序。有对时间敏感的部分,冻结程序会改变其行为(如果足够长的时间,可能会使其崩溃)。

1 个答案:

答案 0 :(得分:1)

  

是否可以附加gdb(或其他任何东西)并尝试查看每个线程在做什么,也许还可以看到一些内部类成员?

是:GDB可以检查每个线程的堆栈跟踪以及局部和全局变量(前提是您已使用调试信息进行编译)。

  

问题是我不希望gdb冻结程序。

这比较棘手:GDB只能检查停止的线程。

如果某些线程应继续运行,则应调查non-stop debugging mode