我想编写一个调试/诊断工具,它可以调用Windbg函数来检查转储文件,而不是编写windbg扩展。这可能吗?有任何引用资料吗?非常感谢。 最佳答案 除了WinDbg,您还可以使用在dbghelp.dll中实现的调试API。它记录在MSDN上.该引用文档相当枯燥,但它应该能让您了解API的功能。例如,MiniDumpReadDumpStream是检查转储文件的门户。 关于windows-windbg:是否可以在我自己的程序中嵌入Windgb引擎?,我们在StackOverflow上找到一个
我有一个来自目标应用程序崩溃的mindmp文件。我是否可以为某个版本的软件重建dll/pdb文件并正确地加载windbg符号?我的问题是我们的pdb文件只保留用于主要版本(不幸的是)。这是一个每日构建,我可以自己重建,但我会被错误绊倒。随着!sym嘈杂:“图像标题与内存图像标题不匹配。”DBGENG:C:\...\XXX.dllimageheaderdoesnotmatchmemoryimageheader.DBGENG:XXX.dll-PartialsymbolimageloadmissingimageinfoDBGHELP:Moduleisnotfullyloadedintomem
我写了一个内存泄漏的应用程序-我过去做过以下事情找到泄漏的堆!heap-s检查堆!heap-stat-h查看分配的调用堆栈!heap-p-a为了获取调用堆栈,我将+ust添加到gflags虽然我过去在这方面取得了巨大成功,但!heap-s今天没有显示出任何增长吗?我不知道怎么了?就好像我的分配在堆中,对!heap-s是隐藏的?想法?我正在使用VisualStudio2010pro进行编译(x86和x64)。使用windbg调试 最佳答案 妙语——当分配小于1MB(默认)时,它们转到HeapAlloc(),当它们大于1MB时,它们转到
客户正在trycatch挂起的小型转储。他启动WindDbg并成功附加到进程。WinDbg显示其标题:Microsoft(R)WindowsDebuggerVersion6.11.0001.404AMD64Copyright(c)MicrosoftCorporation.Allrightsreserved.并枚举加载的模块。他输入一个转储命令:.dump/mc:\problem.dmp报告:Creatingc:\problem.dmp-miniuserdumpWriteMemoryFromProcess.Read(0x1f1e000,0x2000)failed,0x8007012bDu
如何在内核模式下使用windbg/kd从句柄获取文件路径? 最佳答案 使用!handle7显示该句柄的详细信息,其中是句柄值,是进程ID值(均基于十六进制)请参见msdn链接以获取更多信息。您可以从用户模式session中获取您的进程ID,这是最简单的方法,只需在用户模式下附加并输入管道命令|它会像这样输出:.0id:1680attachname:D:\test\MyApp.exe所以1680将是procid,然后使用!handle列出句柄然后在内核态输入:!handle71680将显示您想要的内容,here上有一个有用的博客条目.
有没有办法在Windows的中断服务例程上设置断点,负责触发线程调度并打印被中断线程的EIP?我尝试使用hal!HalpClockInterrupt,但它似乎不是正确的位置。nt!KeUpdateRunTime接缝更好:Breakpoint3hitnt!KeUpdateRunTime:805410dca11cf0dfffmoveax,dwordptrds:[FFDFF01Ch]kd>!threadTHREAD82c23bf0Cid0320.0474Teb:7ffa2000Win32Thread:00000000RUNNINGonprocessor0Impersonationtoken:
我正在尝试进行Windows内核调试,因此我为此设置了两台机器:HOST-DEBUGGER-运行windbg调试器的计算机TARGET-DEBUGEE-被调试的计算机HOST和TARGET都运行Windows732位,并且都安装了WindowsDriverKit8.0。我做了以下步骤:在TARGET上,我使用以下命令启用了内核调试:bcdedit/copy{current}/d"Windows7wihdebug"bcdedit/debug{02b760e4-eafc-11e4-8847-ac1155aec81a}onbcdedit/dbgsettingsserialdebugport:
我在转储文件中间歇性地收到浏览器挂起并出现此错误。在3次崩溃中使用!analyze-v后,我收到此错误并堆栈GetUrlPageData2(WinHttp)failed:12007.但是,我永远无法在我的转储文件中找到失败的URL。谁能帮忙?STACK_TEXT:0029e8fc5ffce1fd74ce14500000000000000000user32!NtUserWaitMessage+0x150029e9605ffd5f2c000000010070fab000000000ieframe!CBrowserFrame::FrameMessagePump+0x52e0029e9a85f
我以前使用windbg进行用户模式调试,但我怀疑我对我的系统做了什么,因为我不记得之前使用扩展命令!heap时遇到过问题。我可以清楚地看到ntdll是一个加载的模块:77760000778e0000ntdll(pdbsymbols)C:\ProgramFiles(x86)\WindowsKits\8.1\Debuggers\x86\sym\wntdll.pdb\FA9C48F9C11D4E0894B8970DECD92C972\wntdll.pdb0:001>lmvmntdllstartendmodulename77760000778e0000ntdll(pdbsymbols)C:\P
当vsjitdebugger在HKLM...\AeDebug中配置为默认调试器时,是否可以将WinDbg包含在vsjitdebugger显示的调试器列表中?理想情况下,我希望能够在vsjitdebugger的选项列表中包含更多命令行,当进程遇到未处理的异常时可用:使用DrWatson或使用WinDbg保存小型转储以供以后检查。 最佳答案 曾经有这样一个(未记录的)选项,直到VS7。该界面是一个名为vs7jit的工具.还讨论了here,以及那里提出的其他方向可能仍然有效-特别是JohnRobbins的“调试器选择器”代码。