首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >关于内存转储的问题

关于内存转储的问题
EN

Stack Overflow用户
提问于 2010-11-02 07:58:33
回答 1查看 1.7K关注 0票数 2

我目前正在设计一个内存转储工具,它可以从另一个进程获得崩溃进程的内存转储。但我对此完全陌生,我希望以此为契机,对内存转储技术有一个坚实的了解。

我想知道为崩溃的进程创建内存转储的工作模式。我现在的疯狂想象如下:

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

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

有谁能为我提供一些参考,特别是在以下几个方面:

  1. 什么是内存转储?
  2. 如果有所谓的内核转储和用户模式转储,它们是什么?
  3. 在windows平台上,我需要哪些API?像MiniDumpWriteDump()这样的函数是否相关?
  4. 当OS检测到某些进程崩溃时,是否有我可以监视的信号,以便通知我的转储工具开始转储?

谢谢你抽出时间看我的话。

ADD1:

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

(6)当我们谈论内存转储时,我们指的是哪种内存? Memory 虚拟内存还是物理,我认为应该是物理内存。

ADD2:

我刚刚找到了一个很好的参考文献,可以用DbgHelp.dll中包含的API编写MiniDump。我想和大家分享。如果你能提供其他与此相关的好材料,你介意分享吗?谢谢。

(顺便说一句,我会随着进度不断更新这个帖子。谨请提出任何意见。)。

EN

回答 1

Stack Overflow用户

发布于 2010-11-02 08:06:04

为什么这是你自己做的?已经有很多工具可以做到这一点。Windows调试工具包括adplus和sysinternals的ProcDump都可以做到这一点。它们都支持大量的选择,并已经受了彻底的考验。两者都是免费的。

至于你的其他问题:

1)内存转储是给定进程的内存空间的转储。有不同的转储与不同级别的细节。WinDbg的帮助文件包含所有细节。

2)对于用户应用程序,不需要内核转储。内核转储用于调试内核模式代码,即驱动程序和操作系统本身。

3)您可以使用dbgeng.dll创建用户模式转储(它包含在用于Windows的调试工具中),但正如我所说的,您应该首先考虑现有的工具。

4) Windows使用结构化异常处理,因此崩溃基本上是一个未处理的异常。可以将第一次和第二次机会异常通知调试器,以便它们可以在异常引发时以及在没有异常处理程序可用时创建转储。

票数 6
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/4075817

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档