Windows 关于内存转储的问题
我目前正在尝试设计一个内存转储工具,可以从另一个进程获取崩溃进程的内存转储。但我对这一点完全陌生,我想借此机会对内存转储技术有一个坚实的了解 我想知道为崩溃进程创建内存转储的工作模式。我目前的疯狂想象如下: 当进程崩溃时,操作系统将始终知道这一点(我不知道如何实现,但它应该能够做到)。然后,操作系统启动了某种机制,将崩溃进程的虚拟地址空间的内容复制到所谓的转储文件中。然后我们可以使用WinDbg调试转储文件 我想知道,如果我们能将崩溃进程的整个虚拟地址空间复制到转储文件中,文件会不会太大?或者我们可以指定转储哪个虚拟地址空间(内核/用户) 有谁能为我提供一些参考资料,特别是在以下方面:Windows 关于内存转储的问题,windows,windbg,crash-dumps,minidump,Windows,Windbg,Crash Dumps,Minidump,我目前正在尝试设计一个内存转储工具,可以从另一个进程获取崩溃进程的内存转储。但我对这一点完全陌生,我想借此机会对内存转储技术有一个坚实的了解 我想知道为崩溃进程创建内存转储的工作模式。我目前的疯狂想象如下: 当进程崩溃时,操作系统将始终知道这一点(我不知道如何实现,但它应该能够做到)。然后,操作系统启动了某种机制,将崩溃进程的虚拟地址空间的内容复制到所谓的转储文件中。然后我们可以使用WinDbg调试转储文件 我想知道,如果我们能将崩溃进程的整个虚拟地址空间复制到转储文件中,文件会不会太大?或者我
地址1: (5) 什么是迷你转储?它与内核/用户模式转储有何关系 (6) 当我们谈论内存转储时,我们谈论的是哪个内存?虚拟内存还是物理内存?由此看来,我认为应该是物理内存 地址2: 我刚刚发现了一个使用DbgHelp.dll中包含的API编写小型转储的好方法。我想和大家分享一下。如果你能提供其他与此相关的好资料,你介意分享吗?谢谢
(顺便说一句:我会不断更新我的进度。任何评论都将不胜感激。)为什么你自己这么做?已经有很多工具可以做到这一点。包括adplus和来自sysinternals的都可以做到这一点。它们都支持丰富的选择,并经过了彻底的测试。两者都是免费的 至于你的其他问题: 1) 内存转储是给定进程的内存空间转储。存在具有不同详细级别的各种转储。WinDbg的帮助文件包含所有详细信息 2) 对于用户应用程序,您不需要内核转储。内核转储用于调试内核模式代码,即驱动程序和操作系统本身
3)您可以使用dggun.dl(在Windows的调试工具中)创建用户模式转储,但正如我所说的,您应该首先考虑现有的工具。
4) Windows使用结构化异常处理,因此崩溃基本上是未处理的异常。调试器可以收到第一次和第二次机会异常的通知,以便在引发异常以及没有可用的异常处理程序时创建转储 我喜欢你对Windows内部工作的兴趣,但出于好奇:为什么你想创建一个没有内核调试经验的内存转储工具?为什么你想用现成的替代品来创建你自己的工具?我脑海中浮现的是:SysDump或你提到的WindBg是兴趣驱使我前进,永远。;)