草庐IT

windows - 跟踪在 Windbg 中创建对象的堆栈跟踪

我正在尝试追踪Windows中C++应用程序中的内存泄漏,并且我得到了包含大量泄漏对象的应用程序的内存转储。我正在使用Windbg通过执行以下操作来追踪它们://Getheapstats!heap-s这显示了以下内容:HeapFlagsReservCommitVirtFreeListUCRVirtLockFast(k)(k)(k)(k)lengthblockscont.heap-----------------------------------------------------------------------------00150000000000021024272272202

windows - Windbg 磨合需要很长时间

我想捕获有时会停止响应几分钟的应用程序的堆栈跟踪。当应用程序停止响应时,windows桌面也停止响应鼠标点击,尽管此时其他一些已经运行的应用程序工作正常(例如windbg工作正常,ProcessExplorer刷新其屏幕,但不响应鼠标事件).虽然应用程序没有响应,但它实际上占用了一个CPU内核的大约80%。这就是我想要获得堆栈跟踪的原因。行为不端的应用程序通常需要大约2-3分钟才能完成其奇怪的工作,或者如果按下Ctrl+Esc,它会立即响应(当然还会打开开始菜单...)我将WinDbg附加到行为不当的应用程序,当我发出Break命令时,直到应用程序开始再次响应时才会发生入侵。据我所知,

windows - WinDbg 没有显示整个调用堆栈?

我正在尝试使用WinDbg调试一款名为“Ballmaster”的非常古老的游戏(我没有其源代码)。当显示对话框时,我将WinDbg附加到游戏中,这样UI线程的调用堆栈就不会改变。以下是正在运行的线程列表:当我点击Ballmasterthread,呈现如下调用栈:ntdll!NtDelayExecution+0xcKERNELBASE!SleepEx+0x99KERNELBASE!Sleep+0xfUSER31!HookedCreateWindowExA+0x41DlgBox!Ordinal49+0x35ddDlgBox!Ordinal49+0x4d58uxtheme!ThemePreD

windows - 在 WinDbg 中定义自定义错误检查代码

有没有一种方法可以定义自定义代码(带有消息/描述等),以便在Windows的内核模式驱动程序中调用KeBugCheckEx来发出自定义BugCheck代码,WinDbg显示该自定义错误检查代码附带的关联消息? 最佳答案 有关已知错误检查代码的文本被编译到其中一个扩展DLL中。据我所知,这不是可以通过任何一种简单的方式扩展的东西(即你不能只在文件的某个地方添加文本)。 关于windows-在WinDbg中定义自定义错误检查代码,我们在StackOverflow上找到一个类似的问题:

windows - 如何使用 windbg 分析 Chrome Aw Snap 后的异常

我的Web应用程序中一直有“AwSnap”。在HowdoIdebugatabcrashinGoogleChrome的帮助下使用windbg我试图找出问题所在。到目前为止我完成的步骤:从Crashes目录中得到一个.dmp文件加载到windbg设法查看堆栈(使用“k”)尝试!analyze时没有显示任何有意义的内容我需要什么才能看到导致崩溃的模块如何从这里进步?编辑:有一个错字。"!analyze-v"的工作类似于:kb、dd、.exr、.cxr、kv对于所有ChromeAwSnappers-!analyze-v就是你要找的信息如下...0:000>!analyze***********

windows - WinDbg 窗口符号

我正在尝试调试我编写的应用程序的转储文件。我将以下符号路径添加到WinDbg我假设这会下载调试它所必需的Windows符号。然后我在WinDbg中运行以下命令“!analyze-v”这开始分析,然后由于找不到符号而失败。当我查看C:\MyServerSymbols时,我看到以下内容我希望看到的不仅仅是kernelbase.dll分析命令提示找不到ntdll符号。下面是它给我的完整输出。有谁知道如何获取它需要的符号吗?0:001>!analyze-v**********************************************************************

c++ - WinDbg 说在图像列表中找不到 ".dll"

我试图在WinDbg中加载一个dll,但遇到了这个错误。详情如下。使用VisualC++express构建A.dll。将A.pdb和A.dll放在d:\test\目录下。设置图片路径和符号路径为d:\test.sympathgivesOKD:\test尝试使用以下命令加载.reload/fA.dll它给了"A.dll"wasnotfoundintheimagelist.Debuggerwillattempttoload"A.dll"atgivenbase00000000.Pleaseprovidethefullimagename,includingtheextension(i.e.ke

windows - windbg !heap 输出中的 'size' 数字是什么意思?

我在我的DMP文件中看到这样的输出:HeapentriesforSegment00inHeap0015000000150640:00640.00040[01]-busy(40)00150680:00040.01808[01]-busy(1800)00151e88:01808.00210[01]-busy(208)00152098:00210.00228[00]001522c0:00228.00030[01]-busy(22)001522f0:00030.00018[01]-busy(10)00152308:00018.00048[01]-busy(3c)WinDbg文档是这样说的:He

windows - WinDbg - 将字符串参数与内存中的字符串进行比较

我需要将作为参数传递给WinDbg的字符串与内存中的字符串进行比较。如何实现?例如,字符串位于加载的PE中的特定偏移处。所以,我可以通过执行da/c100轻松读取字符串.但是,我如何使用这个字符串,将它与arg1进行比较?,在WinDbg脚本中,使用.if?(和$SPAT(),我猜)我试图读取da的输出命令进入别名或用户定义的寄存器,但我没有成功。 最佳答案 您可以使用as/c将字符串分配给别名:0:012>as/cHello.printf"%ma",061300000:012>.echo@"${Hello}"Helloworld然

windows - 实现 DebugExtensionProvideValue 会破坏 WinDbg 内部状态?

我正在实现DebugExtensionProvideValue在我的扩展中,这样我就可以提供自定义伪寄存器。它在CDB中完美运行,最初在WinDbg中运行良好,但在停止调试并打开一个新的可执行文件后,发生了一些事情,WinDbg最终处于一种奇怪的不可用状态。当您触发问题时,WinDbg将此消息打印到命令窗口:Unabletodelivercallback,3131发生这种情况后,WinDbg似乎会在命令窗口中打印两次所有输出!我的扩展代码很简单:EXTERN_CHRESULTCALLBACKDebugExtensionProvideValue(PDEBUG_CLIENTClient,U