我有一个用 cpp 编写并用 gcc 编译的大型多线程程序。 我时不时地在运行时遇到错误。有没有办法附加 gdb(或其他任何东西)并尝试查看每个线程在做什么,并可能看到一些内部类成员?
问题是我不希望 gdb 卡住程序。有时间敏感的部分,卡住程序会改变它的行为(如果时间足够长,它可能会崩溃)。
最佳答案
Is there a way to attach gdb (or anything else) and try to look what each thread is doing and maybe see some internal class members?
是的:GDB 可以检查每个线程的堆栈跟踪,以及局部和全局变量(前提是您使用调试信息进行编译)。
The thing is I do not want gdb to freeze the program.
这更棘手:GDB 只能检查停止的线程。
如果你有一些线程应该继续运行,你应该查看 non-stop debugging mode .
关于c++ - 在不停止程序的情况下调试程序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53169027/