标签: minidump

Minidump符号不会在发布模式下加载

我正在尝试使用VS 2010调试minidump.

虽然由我的应用程序生成的"调试模式"生成的小型转储工作正常并且可以正确调试,但由"发布模式"内置的应用程序生成的小型转储不起作用.我的意思是,在调试minidump时,我遇到了"No Source Available",因为符号可能有问题.

"模块"窗口中的"符号状态"显示:"符号文件中没有本机符号."

如果我从符号路径加载符号,我得到"在此文件夹中找不到匹配的符号文件".当然这是不真实的(我一直都知道,但以防我检查他们是否真的与ChkMatch.exe匹配,他们这样做).

我已经设法弄清楚哪些构建开关使minidump不可用 - 那些是"优化代码"和"调试信息".使minidump"工作"的唯一方法是取消选中"优化代码"并使用"完整"调试信息(不,pdb-only不起作用).这两个都有性能影响我真的想避免使用这种构建设置为我的应用程序的发布版本.

有谁知道为什么这两个开关使minidumps不合适?

谢谢.

c# debugging minidump symbols

4
推荐指数
1
解决办法
833
查看次数

MiniDumpWriteDump 及其 MINIDUMP_TYPE 类型

不久前,我们了解到即使发布版本也可能无法正常运行 - 可能会崩溃 - 可能会挂起等。因此,我们决定实施转储创建过程。所有步骤都相当快地在互联网上找到了。但有一点——主要的事情——对我们来说仍然无法理解。

根据 MSDN,MINIDUMP_TYPE 支持 23 个标志。但对于下一个问题,没有深入的技术解释:它们在各自的应用领域都是独立的吗?或者它们可以成对、三组使用吗?它们可以同时使用吗?我可以在某些组中使用它们吗(例如,一些 3 个标志 - 生成与其他 5 个标志几乎相同的转储。)我的意思是,当我将用于 ex. 1+3 标志 - 绝对等于使用标志 4+6+9。或者标志 1 或标志 3 或... - 是所有其他标志的叠加?或者是什么?我想了解所有可用标志之间所有可能的交叉。因为也许使用标志 3+12+14 没有实际意义,例如,我当前的目标是使用内存中绝对所有可用数据创建转储。我应该能够查看所有线程、所有 local-static-global-in_heap 变量。我的意思是,当我打开一些由 bla+bla+bla 标志组合生成的转储时,它应该与我可以将调试器直接附加到进程时完全相同。我应该获取所有可能的数据!

PS MiniDumpWithFullMemory - 没有给我这样的能力(((为什么?@FULL@内存这个词 - 并不意味着完整?它只是什么的一部分?

flags minidump types dump minidumpwritedump

4
推荐指数
1
解决办法
2666
查看次数

Windows coredump的打印堆栈跟踪,而无需交互进入windbg / visual studio

我想通过调用以脚本编写的预定义命令来获取导致堆栈崩溃的线程堆栈跟踪,以便运行脚本并获得包含所有线程的反向跟踪的日志文件。然后,我可以解析此日志文件以查看是否存在已知问题。

windows minidump windbg visual-studio

3
推荐指数
1
解决办法
2309
查看次数

如何阅读Windows 10 BSOD迷你转储分析

我希望这里有人可以提供帮助。

我有一台新的Windows 10计算机(所有部件均由EVGA组成)。

我得到了随机的BSOD,因此我抓了一个小型转储,安装了SDK并进行了调查。我只是不明白它在报告什么。

有人可以向我指出指南的方向,还是对这个小型转储进行解码。注意:每个转储看起来都很相似。例如,来自“ irp”的几乎相同的报告

这是转储...

Microsoft(R)Windows调试器版本10.0.10586.567 X86版权所有(c)Microsoft Corporation。版权所有。

加载转储文件[C:\ Windows \ Minidump \ 033016-4718-01.dmp]迷你内核转储文件:仅寄存器和堆栈跟踪可用

符号搜索路径为:srv *可执行搜索路径为:Windows 10内核版本10586 MP(8个进程)免费x64产品:WinNt,套件:TerminalServer SingleUserTS内置:10586.162.amd64fre.th2_release_sec.160223-1728机器名称:内核基础= 0xfffff801 8d674000 PsLoadedModuleList = 0xfffff8018d952cd0调试会话时间:2016年3月30日星期三18:15:33.639(UTC + 1:00)系统正常运行时间:0天2:47:26.264加载内核符号。

按ctrl-c(cdb,kd,ntsd)或ctrl-break(windbg)可中止花费太长时间的符号加载。在.reload之前运行!sym noisy来跟踪加载符号的问题。

................................................... ................................................................. ................................................................. ........加载用户符号加载已卸载的模块列表.............


  • *
  • 错误检查分析*
  • *

使用!analyze -v获取详细的调试信息。

BugCheck 9F,{3,ffffe000935ea880,fffff8018f25a890,ffffe00092718bd0}

可能是由于:ACPI.sys

后续行动:MachineOwner

0:kd>!分析-v


  • *
  • 错误检查分析*
  • *

DRIVER_POWER_STATE_FAILURE(9f)驱动程序未能在特定时间内完成电源IRP。参数:Arg1:0000000000000003,设备对象阻塞Irp的时间过长Arg2:ffffe000935ea880,堆栈的物理设备对象Arg3:Win7及更高版本上的fffff8018f25a890,nt!TRIAGE_9F_POWER,否则为堆栈Arg4的功能设备对象:ffffe00092718bd0,已阻止的IRP

调试详细信息:

DUMP_CLASS:1

DUMP_QUALIFIER:400

BUILD_VERSION_STRING:10586.162.amd64fre.th2_release_sec.160223-1728

系统_制造商:EVGA INTERNATIONAL CO。,LTD

SYSTEM_PRODUCT_NAME:默认字符串

SYSTEM_SKU:默认字符串

SYSTEM_VERSION:默认字符串

BIOS_VENDOR:American Megatrends Inc.

BIOS_VERSION:1.07

BIOS_DATE:2016年1月4日

基板_制造商:EVGA INTERNATIONAL CO。,LTD

基板_产品:111-SS-E172

BASEBOARD_VERSION:1.0

DUMP_TYPE:2

DUMP_FILE_ATTRIBUTES:0x8内核生成的分类转储

BUGCHECK_P1:3

BUGCHECK_P2:ffffe000935ea880

BUGCHECK_P3:fffff8018f25a890

BUGCHECK_P4:ffffe00092718bd0

DRVPOWERSTATE_SUBCODE:3

IMAGE_NAME:ACPI.sys

DEBUG_FLR_IMAGE_TIMESTAMP:56cbf9c9

MODULE_NAME:ACPI

FAULTING_MODULE:fffff800d5de0000 …

windows minidump windows-10

3
推荐指数
1
解决办法
2万
查看次数

关于内存转储的问题

我目前正在尝试设计一个内存转储工具,它可以从另一个进程获取崩溃进程的内存转储.但我对此完全陌生,我想以此为契机,深入了解内存转储技术.

我想知道为崩溃进程创建内存转储的工作范例.我目前的狂野想象如下:

当一个进程崩溃时,操作系统将始终知道(我不知道它应该如何).然后,OS启动了某种机制,将崩溃进程的虚拟地址空间的内容复制到所谓的转储文件中.然后我们可以使用WinDbg来调试转储文件.

我想知道,如果我们可以将崩溃进程的整个虚拟地址空间复制到转储文件中,那么文件是不是太大了?或者我们可以指定要转储的虚拟地址空间(内核/用户)吗?

任何人都可以为我提供一些参考资料,特别是在以下方面:

  1. 什么是内存转储?

  2. 如果有所谓的内核转储和用户模式转储,它们是什么?

  3. 在Windows平台上,我需要什么API?MiniDumpWriteDump()等函数是否相关?

  4. 当OS检测到某个进程崩溃时,是否有任何可以监视的信号,以便我的Dump Tool会被通知开始转储?

谢谢花时间看我的话.


ADD1:

(5)什么是小型垃圾场?它与内核/用户模式转储有什么关系?

(6)当我们谈论内存转储时,我们谈论的内存是什么?虚拟内存还是物理内存从这张照片中,我认为它应该是物理记忆.

ADD2:

我刚刚找到了一个关于用DbgHelp.dll中包含的API编写MiniDump 的好参考.我想分享一下.如果您能提供与此相关的其他优质材料,您介意分享吗?谢谢.

(顺便说一下:我将继续用我的进展更新这个帖子.任何评论都会深表赞赏.)

windows minidump windbg crash-dumps

2
推荐指数
1
解决办法
1061
查看次数

WINDBG:显示转储文件捕获标志

这是一个非常简短的问题。我进行了搜索,似乎找不到显示小型转储文件中存在哪些选项的 Windbg 命令。

此外,我想返回将.dump生成相同类型的小型转储的命令的等效参数,例如.dump /ma

minidump windbg

2
推荐指数
1
解决办法
2307
查看次数

为什么 Windows 不创建小型转储?

我有一个在 Windows 8.1、x64 上运行的 x64 平台应用程序......它不时崩溃(它是一个托管在 Windows 服务中的多字节 COM+ 对象)。我想让操作系统在发生异常时写入小型转储文件,因此我在注册表中设置了以下键:

在此处输入图片说明

然而,当确实发生崩溃时,我在 %LOCALAPPDATA%\CrashDumps 中什么也看不到。为什么会这样?是不是因为服务是在本地系统帐户下运行的?

windows service minidump com+ crash-dumps

1
推荐指数
1
解决办法
978
查看次数

MongoDB minidump 文件路径错误

我最近卸载了 MongoDB 3.2 来安装 MongoDB 3.6。从那以后,每次我尝试启动 mongod 时,都会收到以下错误:failed to open minidump file C:\Program Files\MongoDB\Server\3.2018-02-18T17-02-35.mdmp : Access is denied.

我什至不太确定它为什么这么说,Access is denied因为正如我所提到的,我卸载了 MongoDB 3.2,因此 server/3.2/ 目录不再存在。那么有没有办法改变 MongoDB 查找这个文件的位置?

另外,请注意路径在 3.2 之后似乎缺少斜杠......它确实在我的终端中出现,这不是错字,我不确定我应该怎么想。

我正在运行 Windows 10。我想指出的是,我确实使用了 MongoDB“向导”来卸载 MongoDB 3.2 版。


编辑:我决定擦除我所有的数据库数据文件夹并将数据库种子放回,现在它似乎工作正常,但如果可能的话,我会保持问题的开放,直到我们找到问题的明确答案

configuration minidump path mongodb

1
推荐指数
1
解决办法
2769
查看次数