首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >WinDbg是如何使用的,它到底是什么,它与.dmp文件有关吗?

WinDbg是如何使用的,它到底是什么,它与.dmp文件有关吗?
EN

Stack Overflow用户
提问于 2012-11-30 14:04:42
回答 2查看 2.8K关注 0票数 3

在过去,我听说过使用.dmp解析WinDbg文件的引用(我认为--我可能错了)。

我还在.map文件的帮助下进行了相当广泛的调试,并使用标准逻辑启发式方法和Visual调试器进行了广泛的调试。

但是,偶尔,我正在开发的程序会崩溃并创建一个.dmp文件。我从未能够解释.dmp文件。不久前,我发布了一个关于如何解释.dmp文件( 如何在Windows 7上查看.dmp文件? )的问题,但经过一些重大的努力后,我无法找到如何使用这个问题的答案来解释.dmp文件。

今天,我看到了一个不相关的所以问题( C++ try/throw/catch => machine code ),在被接受的答案下面有一条有用的评论再次提到了WinDbg。

不过,如果你真的想找出这个问题,那很容易--只需在WinDbg中追踪

我想遵循这个建议。然而,对我来说,“只在WinDbg中跟踪”并不容易。我过去试过,但不知道这到底意味着什么,也不知道该怎么做!

所以我再试一次。“一劳永逸”,我想得到简单明了的指示:

  1. 什么是WinDbg?
  2. 假设WinDbg与.dmp文件相关,那么转储文件到底是什么以及它与WinDbg的关系如何(如果我的假设是错误的,请纠正我)
  3. 如何创建.dmp文件,以及相应地如何使用WinDbg来分析它们(同样,如果我对WinDbg和.dmp文件之间的关系弄错了,请纠正我)。

如果您可以从只安装和运行Visual的程序员的“起点”回答这个问题。

谢谢!

EN

回答 2

Stack Overflow用户

发布于 2012-11-30 14:26:11

  1. WinDbg是一个多用途调试器。它可以通过附加、设置断点等方式调试活动进程,就像使用任何其他调试器一样。它还可以分析崩溃转储文件,即.dmp文件。它的功能是你给它命令。
  2. .dmp文件是某物的内存转储。这个东西是什么取决于内存转储的用途。例如,它可以用于一个过程。它也可以用于内核。内存转储中的内容也取决于。在您的情况下,这可能是您的流程崩溃时的样子。根据转储类型的不同,内存转储包含的内容可能有所不同。
  3. 有很多种方式。在Windows Vista+上,服务器2008+ --您可以直接从任务管理器执行此操作。右键单击该进程,然后单击“创建内存转储”。WinDbg也可以使用.dump命令从活动进程生成内存转储。其他工具,如adplus,可用于在特定条件下自动创建内存转储,例如当进程超过内存或CPU阈值时,或当进程崩溃时。

WinDbg可以很容易地打开崩溃转储。重要的是,首先要正确加载符号。通常以.pdb文件的形式或从符号服务器(虽然不是必要的,或者总是可能的,但这是非常有用的)。

一旦运行了WinDbg,就可以在崩溃转储中查看可用的命令列表

票数 4
EN

Stack Overflow用户

发布于 2012-11-30 14:41:16

  1. WinDbg是命令行调试器cdb.exe的Gui版本,它既是用户进程又是内核模式调试器,它使用DbgHelp.dll向应用程序或NT内核发出命令(您也可以使用它具有api)。
  2. .Dmp文件是具有不同细节的内存转储,一些文件可以为所有线程的调用堆栈提供足够的细节,而另一些文件则会将整个用户模式内存、处理信息、线程信息、内存信息等放入其中。有关更多信息,请参见。所以转储文件与WinDbg无关,只是可以打开它们,顺便说一句,您可以在Visual Studio中打开.dmp文件。
  3. 就像@vcsjones已经声明您可以使用任务管理器(至少从Vista开始可以这样做),您可以使用原转储,一旦WinDbg被附加,您就可以这样做,我通常做一个完整的迷你转储:.dump /ma c:\mem.dmp,您也可以在使用沃森博士发生崩溃时设置沃森博士

但是,为了能够生成合理的调用堆栈,您必须拥有Windows和应用程序的符号,请注意,由于明显的原因,您不能在内存转储中跨过或设置断点,只能在活动进程中这样做。您还可以让WinDbg以非侵入的方式附加,这样Visual就可以附加,并且可以非侵入地附加WinDbg,并使用WinDbg中的工具集来帮助调试。

对我来说,WinDbg的主要优势是免费的,它是一个小的下载和安装,它速度快,它有一个非常丰富的工具集,诊断问题,要么是困难的,要么是不可能做的使用visual。

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

https://stackoverflow.com/questions/13646781

复制
相关文章

相似问题

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