要调试多线程程序以防止出现死锁或活锁等情况,那么有用的实用程序是什么?我想知道gcore是否给出了进程中所有正在运行的thred的堆栈转储,或者只是主线程。另外,gcore会暂停/终止正在运行的进程吗?有关调试多线程程序的任何信息都将非常有用。如何在多线程的C++运行过程中获取线程跟踪?
1
A
回答
0
gdb具有一些用于处理线程的好功能。我的最爱之一是thread apply
。这允许您为多个线程运行相同的命令。
例如,如果你想获得的所有线程的回溯,您可以使用此:
thread apply all where
为了打破这种下来,命令thread apply
开始。
接下来是线程列表。在这里,我使用关键字all
将此应用于过程中的每个线程。您也可以使用空格分隔的gdb线程ID列表(thread apply 1 2 3 command
)。
最后是要执行的命令。我用where
向您显示调用堆栈,但您可以使用任何您想要的命令。
1
gdb
支持在线程之间切换以调查所有事情的状态。 Here是一些更多的信息。
0
正如卡尔所说,gdb支持线程。使用GDB的UI(例如Eclipse提供的)可以使这更容易,但是通过键入“info threads”,您可以通过命令行获得线程信息。这将列出线程并允许您通过键入“线程3”等来切换。一旦切换到线程,您可以执行回溯以查看当前线程堆栈和其他您习惯使用的命令线程过程。
相关问题
- 1. 如何在Android中跟踪C线程?
- 2. 如何获得在进程中运行的所有线程的堆栈跟踪?
- 3. 多线程光线跟踪噪声
- 4. Python - 如何在新线程中获取堆栈跟踪
- 5. 使用光线跟踪并行线程
- 6. 使用任务在多线程C#中执行异常跟踪
- 7. 如何在Android进程中获取正在运行的线程?
- 8. 如何从!DAE获取堆栈跟踪的线程ID?
- 9. 如何获取Android 7.0主线程的堆栈跟踪?
- 10. 如何获取线程的堆栈跟踪
- 11. 使用ThreadPoolExecutor,如何获取在线程池中运行的线程的名称?
- 12. 在Java中跟踪消失的线程
- 13. 运行的线程在C#
- 14. iOS。获取UI线程的堆栈跟踪,但是从不同的线程
- 15. 跟踪线程失败
- 16. Java线程创建跟踪
- 17. python多线程长线程运行
- 18. 运行C++线程()
- 19. Python多线程:如何让守护进程线程运行
- 20. 嵌套多线程操作跟踪
- 21. 在多线程进程中运行存储过程
- 22. 在iOS中跟踪WKWebView线程
- 23. 在java中跟踪线程冲突
- 24. 只跟踪同一类型的消息和线程跟踪 - C#
- 25. 如何获取线程状态..在多线程
- 26. 由内核跟踪线程执行
- 27. 在线程对象内运行feedparser时的跟踪/ BPT陷阱
- 28. C#在多线程上运行IronPython
- 29. 单线程C多线程#
- 30. 在``C``线程池中运行'POSIX`线程在``C``线程池中运行`函数指针`