3

我正在没有安装开发 IDE (Visual Studio C++) 的 Windows 8 系统上测试我的 C++ 应用程序崩溃。我能够从 Windows 事件日志中获得以下信息:

Fault bucket , type 0
Event Name: APPCRASH
Response: Not available
Cab Id: 0

Problem signature:
P1: my_app_name.exe
P2: 1.0.2.0
P3: 4fffd4db
P4: my_app_name.exe
P5: 3.0.2.0
P6: 4fffd4db
P7: c0000005
P8: 00074eb0
P9: 
P10: 

Attached files:
C:\Windows\Temp\WER4AEB.tmp.appcompat.txt
C:\Windows\Temp\WER4B0B.tmp.WERInternalMetadata.xml
C:\Windows\Temp\WER4B0C.tmp.hdmp
C:\Windows\Temp\WER4CD2.tmp.dmp

These files may be available here:
C:\ProgramData\Microsoft\Windows\WER\ReportQueue\AppCrash_my_app_name.exe_8ea1c961fdc39248f2954cb7413ed349afffc9_cab_0d004d0d

Analysis symbol: 
Rechecking for solution: 0
Report Id: 4c93c3b5-ccc2-11e1-9b6e-000c297b96e1
Report Status: 4
Hashed bucket: 

我试图转到提供的路径以获取 .hdmp 和 .dmp 文件,但该报告中没有任何内容。

知道如何处理这种情况吗?

4

2 回答 2

3

我认为您的服务崩溃转储可能会写在这里:

%WINDIR%\System32\Config\SystemProfile

根据this不确定这是否仍然是Win 8的相同路径。

您可以使用AdPlusProcDump或使用MiniDumpWriteMiniDump以编程方式将内存转储写入您选择的位置,ETW也可用于事件跟踪。

转储文件可以在 Visual Studio 或 WinDbg 中打开,然后您可以查看应用程序状态。

在 WinDbg 中:

!analyze -v

将尝试为您找到崩溃的原因,希望这会有所帮助。

于 2012-07-13T09:29:40.643 回答
1

您可以使用 Visual Studio 远程调试器工具(google it)来允许您通过 Visual Studio 连接到正在运行的进程。当然机器必须在同一个网络上。

  1. 转到“调试->附加到进程”。
  2. 将传输更改为“远程”
  3. 在“Qualifier”中输入目标机器的IP
  4. 选择要附加到的进程。
  5. 调试!

此外,如果您有故障转储(.hdmp、.dmp... 可用),您可以通过 WinDBG 运行它们,WinDBG(如果您有符号和源代码路径设置)将在您运行命令C:\ProgramData\Microsoft\Windows\WER\ReportQueue\后将您指向代码行。!analyze -v您不需要在目标机器上安装 WinDBG。

于 2012-07-13T09:27:23.247 回答