在 Visual Studio Express 2013 中,如何判断哪个线程在小型转储中崩溃?
In Visual Studio Express 2013, how can I tell which thread crashed in a minidump?
当我打开一个小型转储时,我得到了一些关于崩溃的基本信息:
我不知道是哪个线程崩溃了。界面中是否有一些指示器显示哪个线程崩溃或以其他方式确定哪个线程产生了异常?
我怀疑调试器会在我开始调试时将我带到崩溃的正确位置(假设它能够加载所有正确的符号等),但如果没有它很难确定某种确认。
关于 Express 版本,我不能确定。通常会有一个操作框,您可以在其中开始调试。
如果你这样做,它会显示调用堆栈和线程,包括线程 ID:
但是,Visual Studio (source) 的 Express 版本可能不可用,所以我建议您执行以下操作:
- 获取 Microsoft 的免费调试器 WinDbg 的副本。最方便的方法是从 Codemachine.
下载
- 安装它,然后运行WinDbg。
- 输入
!analyze -v
命令。它应该为您提供异常代码、调用堆栈和线程 ID。
为了完整起见,黄色箭头表示当前选择的线程。它是显示调试器当前停止(或在转储文件的情况下崩溃)的线程的大纲:
此外,转储文件名中的最后一个数字似乎是崩溃线程的 ID。
当我打开一个小型转储时,我得到了一些关于崩溃的基本信息:
我不知道是哪个线程崩溃了。界面中是否有一些指示器显示哪个线程崩溃或以其他方式确定哪个线程产生了异常?
我怀疑调试器会在我开始调试时将我带到崩溃的正确位置(假设它能够加载所有正确的符号等),但如果没有它很难确定某种确认。
关于 Express 版本,我不能确定。通常会有一个操作框,您可以在其中开始调试。
如果你这样做,它会显示调用堆栈和线程,包括线程 ID:
但是,Visual Studio (source) 的 Express 版本可能不可用,所以我建议您执行以下操作:
- 获取 Microsoft 的免费调试器 WinDbg 的副本。最方便的方法是从 Codemachine. 下载
- 安装它,然后运行WinDbg。
- 输入
!analyze -v
命令。它应该为您提供异常代码、调用堆栈和线程 ID。
为了完整起见,黄色箭头表示当前选择的线程。它是显示调试器当前停止(或在转储文件的情况下崩溃)的线程的大纲:
此外,转储文件名中的最后一个数字似乎是崩溃线程的 ID。