如何在Handled Exception上获得崩溃转储?

时间:2009-10-08 15:35:35

标签: windows debugging crash-dumps

我的dll被一个模块使用,它会肮脏地捕获所有异常并将其登录到文件中。

我的问题是客户站点中存在访问冲突,该访问冲突只能在其计算机上重现,我希望该客户能够为此问题生成转储文件。

我试图在我的dll中生成一个AV并使用adplus生成一个转储文件,但是因为AV被使用我的dll的模块捕获而没有创建转储。

所以我的问题是:

有没有办法在处理异常时生成崩溃转储文件?

谢谢,

2 个答案:

答案 0 :(得分:2)

使用ADPlus,您可以阅读有关配置ADPlus here(特殊例外的小型转储)的更多信息

您的配置文件将如下所示:

<ADPlus>
  <Settings>
    <RunMode>CRASH</RunMode>
    <Option>Quiet</Option>
  </Settings>
  <Exceptions>
    <Config>
      <Code>AllExceptions</Code>
      <Actions1>FullDump</Actions1>
    </Config>
  </Exceptions>
</ADPlus>

答案 1 :(得分:1)

对于Windows Vista SP1及更高版本,可以将Windows错误报告服务配置为在应用程序崩溃时生成崩溃转储:

在注册表项下:

HKEY_LOCAL_MACHINE \ SOFTWARE \ Microsoft \ Windows \ Windows错误报告\ LocalDumps]

定义值:

  • DumpFolder(REG_EXPAND_SZ) - 存储转储文件的位置
  • DumpType(REG_DWORD) - 2表示完全转储,1表示迷你转储

这适用于32位和64位程序。见http://msdn.microsoft.com/en-us/library/bb787181.aspx