如何在Win7发生之后调试应用程序崩溃?

时间:2010-05-23 03:05:11

标签: c++ visual-studio vb6 windows-7 crash

我有一个Visual Basic 6应用程序,我最近更改为使用我在Visual Studio 2008中编写的几个C ++ DLL。该应用程序在我的PC上运行正常,但是当我们在其中一个测试中安装它时它在关机期间往往会崩溃 - 我们看到Win 7消息“你的应用程序已经失败”或者它是什么。

我知道Win 7存储可用于分析崩溃的数据。我从构建中获得了源代码和.PDB文件,所以我应该可以使用它,但我无法弄清楚Win 7存储崩溃数据的位置。事件查看器显示崩溃但没有任何数据,目录C:\ Windows \ Minidump不存在。

崩溃文件放在哪里?

4 个答案:

答案 0 :(得分:3)

Microsoft此处提供的文档可用于Vista Service Pack 1:     https://msdn.microsoft.com/en-us/library/windows/desktop/bb787181(v=vs.85).aspx

有一个注册表项,包含4个控制泛型崩溃的子值:

# HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\Windows Error Reporting\LocalDumps

DumpType   # 1 = mini-dump, 2 = full dump, 0 = custom dump
DumpCount  # Maximum number of dump files to keep before purging
DumpFolder # Full path to folder to store dump files (no trailing slash)
DumpFlags  # Usually 0, flags only used if DumpType is 0

一旦这些注册表值到位,无论对象可能显示的内容如何,​​都应立即写入崩溃文件。

注意:具有可执行文件名的注册表子键可用于控制仅一个指定进程的崩溃行为。

答案 1 :(得分:0)

为什么不让你的程序在崩溃发生时随时随地保存minidump?我不熟悉VB,但尝试使用SetUnhandledExceptionFilter()和MiniDumpWriteDump()。

答案 2 :(得分:0)

  • 获取minidump for crash
  • 获取WDK,Using Debugging Tools for Windows

  • 使用Windbg打开故障转储

  • 使用命令!analyze

    !analyze扩展显示有关当前异常或错误检查的信息。

  • 详细了解窗口调试

创建转储:

您可以通过在运行中输入命令“windbg -I”将windbg配置为defaut调试工具。

Dr. Watson工具也可以为您做到这一点。

答案 3 :(得分:0)

您甚至可以使用carh报告机制并获取本地保存的转储文件,然后使用Visual Studio进行调试。 Visual C ++中有相当多的免费资源,但在VB中并不多。