代码之家  ›  专栏  ›  技术社区  ›  Kristopher Johnson

崩溃后获取DLL地址的函数

  •  1
  • Kristopher Johnson  · 技术社区  · 14 年前

    崩溃是可重复的,但我无法在生产机器上安装调试程序,而且崩溃不会发生在开发或调试环境中。我已经设置了Watson医生,我有一个崩溃转储和Watson医生的日志文件。

            10604b70 8b442408         mov     eax,[esp+0x8]
            10604b74 8b542404         mov     edx,[esp+0x4]
            10604b78 50               push    eax
    FAULT ->10604b79 8b4120           mov     eax,[ecx+0x20]    ds:0023:00000020=????????
            10604b7c 52               push    edx
            10604b7d 6801800000       push    0x8001
            10604b82 50               push    eax
            10604b83 ff156c946210 call dword ptr [mydll!DllUnregisterServer+0x1720c (1062946c)]
            10604b89 c20800           ret     0x8
    

    (INT 3指令在上面的程序集片段之前和之后。)

    在windbg中加载崩溃转储没有提供任何附加信息。

    1 回复  |  直到 14 年前
        1
  •  2
  •   Jim Brissom    14 年前

    创建应用程序的崩溃转储并使用调试器对其进行exmain,WinDbg是这里的明显选择。崩溃转储将为您提供堆栈跟踪和详细的错误信息。

    编辑:至于不能安装调试器,DrWatson是预先安装的,能够生成崩溃转储,然后可以在不同的机器上检查。