pan*_*ajt 4 c++ debugging multithreading
在 Java 中调试挂起的应用程序很容易。您可以获取应用程序的内存转储并使用 eclipse jvm dump 分析器来查看线程的状态以及每个线程被阻塞的位置?
C++ 中存在这样的东西吗?
你可以用 C++ 做同样的事情;强制进行核心转储并在之后查看它。
或者,如果您使用的是 MSVC,则只需在应用程序运行时将调试器附加到应用程序即可。点击“全部破坏”并浏览线程。
gdb 中的魔法调用是:
线程全部应用bt
这将为所有线程运行 bt(回溯)命令。除非您完全剥离了程序,否则您应该能够看到每个函数的名称。
这适用于实时调试和事后调试(即针对核心运行 gdb)。