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

标签 c++ gdb

我有一个用 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/

相关文章:

c++ - 在 gdb 中打印整个链表?

c - 如果从 gdb 中的某个文件调用函数,如何中断

c - LDMIA 指令导致损坏的寄存器数据

python - pdb有像gdb一样的布局src吗?

c++ - 我如何才能获得对迭代器指向的对象的引用?

c++ - 如何使用从 shell 脚本调用的 gdb 运行程序,该脚本又通过 boost::process 从 c++ 调用

c++ - 如何在不引发异常的情况下进行通用除法

c++ - 在 C++ 中通过指针传递比通过引用传递有好处吗?

c++ - 文件 IO 打印到屏幕

c - GDB MI机制来调试自执行程序