我想编写一个调试/诊断工具,它可以调用 Windbg 函数来检查转储文件,而不是编写 windbg 扩展。这可能吗?有任何参考吗?
非常感谢。
您可以使用在 dbghelp.dll 中实现的调试 API,而不是 WinDbg。它记录在MSDN上。该参考文档相当枯燥,但它应该让您了解 API 的功能。例如,MiniDumpReadDumpStream
是检查转储文件的网关。
除了现有的答案,WinDBG 是 DbgEng API 的 GUI 前端。您可以使用此 API 编写 WinDBG 扩展或其他独立应用程序。WinDBG SDK 附带了两者的示例,可以在 WinDBG 安装的 \sdk\samples\dumpstk 子目录中找到示例独立应用程序。
更多信息,我写了一篇关于 DbgEng 的文章在这里写扩展:
http://www.osronline.com/custom.cfm?name=articlePrint.cfm&id=559
其中大部分内容也适用于您编写独立应用程序的方式,因为它主要关注 DbgEng 接口的编程模式。
以下是一些使用 dbgeng 接口制作独立可执行文件的链接。
该过程的简短摘要是
调用 DebugCreate() 以创建客户端调用 QueryInterFace() 并调用其方法之一
http://www.woodmann.com/forum/entry.php?252-Dbgeng-based-handles-(PART-2-) http://www.woodmann.com/forum/entry.php?246-A- Simple-Dbgeng-Based-User-Mode-Debugger http://www.woodmann.com/forum/entry.php?248-DbgEng-Based-Debugger-(PART2) http://www.woodmann.com/forum/ entry.php?249-DbgEng-Based-Debugger-(PART2-Contd-) http://www.woodmann.com/forum/entry.php?250-DbgEng-based-Kernel-Debugger http://www.woodmann .com/forum/entry.php?251-Dbgeng-based-Handles
您可以使用 powershell 或命令行版本的 WinDbg(即 cdb)发出命令,然后解析您解释的 cdb 的输出。
这类似于将输出从 cdb 传送到您的应用程序的概念。
有关于以这种方式使用 powershell 的帖子:http ://rkeithhill.wordpress.com/2006/08/14/minidump-crash-analysis-with-powershell/
将命令泵入 cdb 并解释特定命令的输出应该很简单。
Python 与 dbgeng 集成: pykd.codeplex.com
该项目可用作此类集成的演示