问题标签 [minidump]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
1 回答
2153 浏览

debugging - 如何设置 AeDebug 以获取带有进程名称的小型转储?

我必须对 C++ 项目进行一些事后调试。已知的执行方法是将 cdb 调试器设置为小型转储生成器,然后处理收集的转储。我几乎阅读了整个网络,但没有找到一种解决方案来生成一个带有已崩溃进程名称的小型转储

有没有办法以 cdb 生成带有进程名称的转储文件的方式设置 AeDebug\Debugger 注册表变量?当我将对 cdb.exe 的调用封装在一个批处理文件中时,它启动良好,但在符号搜索中保持阻塞。我必须执行 Ctrl+C 才能停止批处理,然后创建具有正确进程名称的小型转储......但我当然不能在无人看管的生产环境中设置这样的东西......

以前有人这样做过吗?

0 投票
3 回答
4376 浏览

c# - 使用回调调用 MiniDumpWriteDump

我想使用 MiniDumpWriteDump 函数来创建一些自定义转储文件(主要是,我想导出一个包含线程调用堆栈的最少信息量的转储文件),但是我在定义需要作为传递的结构时遇到了困难回调函数的参数

电话看起来像这样:

所以我的问题是如何定义MINIDUMP_CALLBACK_INPUT:

C 中存在问题的结构的定义是:

0 投票
1 回答
703 浏览

windbg - cdb 和 windbg 无法加载 MiniDump,但 VS 2008 可以正常加载它们

我正在尝试构建一些自动故障转储分析,但我无法让 cdb 或 windbg 加载我的故障转储。它们在 VS 2008 中加载得很好。

当我在文件上运行 dumpchk.exe 时,我得到:

当我在文件上运行 cdb 时,我得到:

0 投票
1 回答
4932 浏览

windows - Minidump 创建空转储文件

我们有一个进程内崩溃处理程序,它使用MiniDumpWriteDump()DbgHelp 来编写一个小型转储,以防进程崩溃。我知道这不是最好的方法,但是,目前我们没有其他选择。

问题是:某个可执行文件总是创建 0 字节转储。但它适用于其他进程。这种行为背后的可能原因是什么?

0 投票
5 回答
3098 浏览

minidump - 如何调试“ngen”ed 图像的 WER 小型转储

在安装时在 .NET 托管应用程序上执行 ngen 并从应用程序的 Windows 错误报告中检索故障转储时,如何使用它来查看堆栈跟踪、变量等?

以下是与该问题相关的一些背景:我们有一个在安装时生成的 .NET 应用程序。当它由于未处理的 .NET 异常而崩溃时,崩溃被存储在 Windows 错误报告中,并且我能够从 winqual.microsoft.com 下载 minidump.mdmp 文件。

我将 minidump.mdmp 放在包含 .dbg 文件的文件夹中,用于构建崩溃的应用程序,然后双击 minidump.mdmp 以在 VS2008 SP1 的新实例中打开它。我的堆栈跟踪如下所示:

kernel32.dll!RaiseException() + 0x3d 字节
mscorwks.dll!RaiseTheExceptionInternalOnly() + 0x295 字节
mscorwks.dll!JIT_Throw() + 0x130 字节
MyApp.ni.exe!000007feee74c84c()
[下面的帧可能不正确和/或丢失,没有为 MyApp.ni.exe 加载符号]
0000000070000d5e()
MyApp.ni.exe!000007feee611000()
000000000300bf78()
000000000300bf60()

Modules 窗口表明已为 OS 和 .NET DLL 加载了符号,但对于应用程序模块,我得到以下信息:

MyApp.exe -> 符号文件中没有本机符号。
MyApp.ni.exe -> 找不到匹配的二进制文件。
MyAppsLibrary.ni.dll -> 找不到匹配的二进制文件。

0 投票
6 回答
41781 浏览

c++ - 崩溃时如何为我的进程创建小型转储?

我无法通过更改系统设置从我的进程中创建小型转储。所以我的问题是:

  • 系统崩溃时是否会为用户进程创建一个小型转储

    如果是,我需要配置哪个设置

  • 还是我必须以编程方式创建小型转储。

  • 调查崩溃时小型转储的效果如何

我正在使用 Windows XP、C++、VC6

0 投票
5 回答
8683 浏览

debugging - 为什么 Minidumps 不提供良好的调用堆栈?

多年来,我在许多游戏项目中使用了 minidump,它们似乎有大约 50% 的机会拥有有效的调用堆栈。我能做些什么来让他们有更好的调用堆栈?

我尝试将最新的 dbghelp.dll 放在 exe 目录中。这似乎对一些人有所帮助。

Visual Studio 2008 或 2010 更好吗?(我仍在使用 VS 2005)。

我使用的代码看起来像这个示例

0 投票
3 回答
897 浏览

c++ - 有用的东西放在 minidumps 的用户流段中

我对开发人员在可以嵌入到 minidump 中的用户流数据结构中放入哪些有用的东西感兴趣。MSDN 将 MiniDumpWriteDump 的参数描述为:

PMINIDUMP_USER_STREAM_INFORMATION UserStreamParam

并如此描述参数:

UserStreamParam [in] 指向 MINIDUMP_USER_STREAM_INFORMATION 结构数组的指针。如果此参数的值为 NULL,则 minidump 文件中不包含用户定义的信息。

我正在考虑将程序的最后n行日志嵌入到用户流中,因为测试人员往往不会一直发送带有所有错误的格式正确的日志。

此外,我可以将硬件规格(内存、CPU、视频等)放在该部分中。

人们还使用用户流细分做什么?

0 投票
1 回答
827 浏览

.net - 在(混合).NET 代码中捕获 C 运行时库致命错误?

我有一个项目,它包含一个调用几个 C++/CLI DLL 的 C# 应用程序。如果我在本机代码中有 Visual Studio C 运行时库致命错误,似乎无法捕捉到它。

举一个简单的例子,如果我把它放在本机代码中:

该应用程序将崩溃(在发布版本中)。它不会抛出异常,我无法用 __try...__except 捕获它。

我想捕捉这些类型的错误,这样我就可以显示一个很好的错误对话框,最好是使用调用堆栈。我愿意创建一个小型转储,但我尝试通过在其中一个 C++/CLI DLL 中调用 ::SetUnhandledExceptionFilter() 来创建一个小型转储,但这似乎也不起作用。

有什么方法可以优雅地处理 .NET 应用程序中的 C 运行时库致命错误?

0 投票
4 回答
1283 浏览

c++ - 如何在顶级过滤器中获取 Win32 崩溃的字符串描述(我正在寻找堆栈顶部的指令地址)

如果我使用类似于此处描述的类/方法,如何在堆栈顶部获取调用的描述/地址?

基本上我想要一些可以在调用我们的错误跟踪系统时使用的值。我想根据导致异常的指令的地址“唯一”识别。

(通常是 mydll.dll!1234ABDC() 的形式)

编辑:

一些背景资料:

我正在创建一个小型转储以通过电子邮件发送到缺陷跟踪系统 (fogbugz)。为了减少重复,我试图为崩溃想出一个合理的“签名”。我知道 FB 有一个 xml PI,但它需要用户登录,我们还不确定我们能否负担得起让人们嗅探我们的流量并获取用户信息的费用。电子邮件现在也更容易实现。稍后我们将使用 XML API 来提交 minidump。