gpt4 book ai didi

c++ - 内存转储文件何时准确创建?

转载 作者:太空狗 更新时间:2023-10-29 20:22:26 24 4
gpt4 key购买 nike

我已将我的 Windows 7 配置为在崩溃时创建小型转储文件,但是当我的应用程序崩溃时,没有创建转储文件。寻找答案让我宁愿confused至于何时创建转储文件,何时 Windows 崩溃或我的应用程序崩溃?

在我的例子中,当我的应用程序崩溃时,我正在寻找转储文件。我收到一个典型的崩溃对话框,其中指出:

TheApp Application has stopped working

Windows can check online for a solution to the problem

-> Check online for a solution and close the program

-> Close the program

-> Debug the program

那么我可以在我的应用程序崩溃时为我的应用程序生成转储文件吗?我无法在开发机器上产生这个错误,所以我想从转储文件中返回。是否有任何其他选项来跟踪错误的来源(到源代码)?

最佳答案

首先,配置“崩溃时创建小型转储”设置的位置不同,完全不同。

  1. 您可以将 Windows 配置为在 Windows 崩溃时创建一个内核转储文件,即发生蓝屏死机 (BSOD) 时。这是在 Windows 7 上的以下屏幕中完成的:

    Kernel minidump for Windows crashes

  2. 您可以将 Windows 配置为在应用程序崩溃时创建用户模式转储文件,即代替通常会出现的“Windows 错误报告”对话框。为此,您事先知道,然后配置一个名为LocalDumps (MSDN) 的注册表项。 。默认情况下,将在 %LOCALAPPDATA%\CrashDumps 下面创建转储他们将有命名方案 app.exe.<PID>.dmp .

    WER dialog

  3. 为了完整起见,可能还有其他触发器。唯一确定的方法是:当方法 MiniDumpWriteDump (MSDN)叫做。

我很确定您想要上面的选项 2。如果遇到问题,请查看是否所有 conditions for LocalDump得到满足。

@antlersoft 给出的答案不起作用,原因是I have posted in my blog :在显示对话框时,Windows 已触发断点以停止应用程序,并且已注入(inject) Windows 错误报告的调用堆栈。总而言之,这不是一个好的调试起点。

可行的是:

  1. 附加您选择的调试器
  2. 在调试器中按“开始”
  3. 按 WER 对话框的“调试”按钮
  4. 确认有关已附加调试器的警告
  5. 当系统要求使用选定的调试器开始调试时单击“否”

不建议使用任务管理器创建故障转储,因为它不会考虑应用程序的位数,这可能会在以后造成麻烦。参见 ways to create good and useful crash dumps .

关于c++ - 内存转储文件何时准确创建?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37890603/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com