问题标签 [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 投票
3 回答
8992 浏览

c++ - 捕获 R6025 纯虚拟呼叫

我目前使用捕获未处理异常的 MiniDumps,SetUnhandledExceptionFilter但有时我会收到“R6025:纯虚函数”。

我了解纯虚函数调用是如何发生的,我只是想知道是否可以捕获它们,以便我可以在那时创建一个 MiniDump。

0 投票
1 回答
1449 浏览

c++ - 我应该对 Minidumps 使用哪些设置?

目前我们MiniDumpWriteDumpMiniDumpNormal | MiniDumpWithIndirectlyReferencedMemory旗帜打电话。这适用于 Debug 配置中的内部构建,但没有提供我们在 Release 配置中所需的那么多信息。

在 Release 中,minidump 数据包含足够的堆栈信息,以便调试器找出代码中发生故障的位置,但没有其他数据。我不仅仅意味着由于优化而丢失了局部变量,正如您在发布版本中所期望的那样 - 我的意思是,除了调用堆栈和当前代码行之外,没有任何用处。没有寄存器,没有局部变量,没有全局变量,没有局部变量指向的对象——什么都没有。我们甚至没有得到允许我们查看当前对象的“this”。这就是使用的重点MiniDumpWithIndirectlyReferencedMemory——它应该包含本地变量和堆栈变量引用的内存,但似乎没有。

我们应该改用什么标志?我们不想使用MiniDumpWithFullMemory并开始生成超过 600MB 的转储,但如果这意味着获得更多有用的数据,我们会很乐意将转储扩展到我们目前获得的 90KB 以上。也许我们应该使用MiniDumpWithDataSegments(globals) 或...?

0 投票
4 回答
728 浏览

winapi - 查看故障转储中的寄存器

有没有办法在故障转储中查看每个堆栈帧中的寄存器内容?寄存器窗口似乎包含发生异常时的寄存器,但能够在每个堆栈帧中查看它们的内容会很有用。

0 投票
2 回答
3479 浏览

visual-studio - 在 Visual Studio.NET 2005 中无法打开 minidump 文件 (*.dmp)?

我已经使用 win32 api [DllImport("DbgHelp.dll", SetLastError = true)] 创建了一个小型转储 private static extern bool MiniDumpWriteDump(

dmp 文件创建成功。

我正在尝试在另一个 Visual Studio 实例中打开此 *.dmp 文件以找到崩溃的位置,

在 Visual Studio --> 文件 --> 打开项目中,dmp 文件选项不可用。

我在文件打开菜单中选择了所有文件,然后打开了 dmp 文件。但我无法调试,

知道为什么我在 Visual Studio 中的转储文件选项被禁用。

我知道我可以使用 windbg 和其他工具,我可以轻松使用 Visual Studio,因为它可供我使用。

0 投票
4 回答
1224 浏览

c++ - 当提供 windows .dmp 或 .minidmp 时,您如何识别(并访问)要使用的模块/调试符号

读取 Windows *.dmp 文件开始

收到来自随机客户的转储文件,运行调试会话以查看崩溃,您经常会发现它位于 MS 或其他第三方库中。下一个问题是您可能不了解 PC 设置,以至于无法确保您拥有实际可用的模块。

例如,我目前正试图为 ntdll.dll (5.01.2600.5512) 加载符号。在 MSVC 2005 中,模块列表窗口中的路径列在完整路径文件名之前显示 *,并且拒绝加载我为 XP/SP1/SP1a/SP2/SP3 下载的符号。

我有符号服务器设置,可以从 Internet 下载并存储在本地缓存中,这对于我的 PC 上的模块似乎运行良好。使用与方法等效的 GUI

也许我有错误的符号,但由于没有下载新符号,我下一步该去哪里?我是否必须联系客户并询问他们安装了哪些 SP 以及任何其他补丁?我是否必须安装那台机器,然后使用 dmp 文件运行调试器以获取我需要的符号?

0 投票
4 回答
1761 浏览

exception - 捕捉出口(1);

我有一个 MFC SDI 应用程序,它在启动期间加载一个 DLL。我只能查看源代码并使用 DLL,但不能更改和重新编译它。

现在的情况是,每当 DLL 遇到错误时,它都会调用 exit(),如下所示。

在我的 MFC 应用程序中,我设置了 SetUnhandledExceptionFilter 来处理所有异常,还创建了一个 MiniDump 用于调试目的。

所以现在的问题是,每当 DLL 遇到任何错误时,它只会使用状态码 999 调用 exit(),而我的 ExceptionFilter 不会捕获它,因此不会为 PostMortem 调试创建 MiniDump。

我想知道是否:
1. 我的全局异常处理程序是否有其他方法可以捕获这个?
2. 我可以重写exit() 函数,以便在调用它时,我调用它“throw(”error遇到!“)”并且我的全局异常处理程序可以捕获它。
3. 我尝试在我的 MFC 应用程序中使用 atexit(),借此我注册另一个函数以在 DLL 调用 exit() 时抛出错误。但这似乎也不起作用。

我真正想做的是,每当 DLL 遇到错误时,我都希望生成一个 MiniDump,这样我就可以进行事后调试。在这种情况下还有什么其他可能有用的吗?

谢谢。

0 投票
2 回答
7725 浏览

windows - windbg 转储命令失败,错误 0x8007012b

客户正试图捕获挂起的小型转储。他启动 WindDbg 并成功附加到该过程。WinDbg 显示其标题:

并枚举加载的模块。

他输入转储命令:

它报告:

错误 0x299 是:由于文件系统限制,请求的操作无法完成

任何想法这意味着什么或如何诊断?

0 投票
2 回答
4053 浏览

c++ - 由于后期构建步骤,未加载本机 dll 的符号 (pdb)

我有一个用符号构建的本机发布 dll。有一个后期构建步骤可以修改 dll。后期构建步骤会进行一些压缩,并且可能会附加一些数据。pdb 文件仍然有效,但是 WinDbg 和 Visual Studio 2008 都不会在构建后步骤之后加载 dll 的符号。我们需要修改 pdb 文件或 dll 中的哪些位,以使 WinDbg 或 Visual Studio 在加载引用了我们的发布 dll 的转储时加载符号?

文件大小重要吗?校验和或哈希?时间戳?

修改转储?或修改pdb?发货前修改dll?

(我们知道 pdb 是有效的,因为我们能够使用它来手动获取引用已发布 dll 的转储调用堆栈中地址的符号名称。*ss 对调用堆栈中的每个地址手动执行它只是一个完全的痛苦所有线程。)

0 投票
1 回答
1533 浏览

visual-studio - 使用 Visual Studio 2008 Express 进行源代码转储分析?

有没有办法使用 Visual Studio 2008 Express 分析应用程序崩溃小型转储(例如由 SetUnhandledExceptionFilter 或 minidumpwritedump() 创建的)?

我通常在工作中使用“真实”版本的 VS,但是当试图让它在我的个人项目上工作时(使用 VS 2008 Express),它告诉我“当前位置没有可用的源代码”。并且拒绝给我除拆卸窗口以外的任何东西。有问题的应用程序的符号由调试器加载,“调试源文件”属性页包含一个指向我的源代码所在目录的指针,但没有骰子。

甚至可以通过 VS 2008 的 Express 版来做到这一点吗?如果是这样,是否有人对我可以尝试使其正常工作有什么建议?

0 投票
1 回答
107 浏览

hash - Microsoft 如何为 winqual 事件生成事件 ID?

我很好奇用于识别winqual中项目的ID。

我认为这是某种哈希。这是出版的吗?

模块名称、版本和偏移量的哈希?

这似乎是合适的,但是除非使用一些截断/有损算法,否则尺寸太小而无法涵盖可能性。

这似乎是由客户端机器上的 minidump 生成的。