windbg相关内容
我转储了一些过程数据. 我得到的DirBase值为00030000 Windows如何生成此值? 内核开始时是否有AVL Tree数据结构提供此数据? 我想学习如何在内核内部创建进程. 什么样的全局变量分配DirBase,ObjectTable等值. 以下是一些示例windbg: !process fb667a00 7 过程fb667a00投标编号:0002 Peb:00000000父投标编
..
我看到了一些有关WinDBG指令的参考和教程. 其中有些像lm,.echo,!running和nt!_PDB. 这些类别之间有什么区别 xxx .xxx !xxx xxx!yyy ? 他们看起来很困惑. 解决方案 有内置命令,元命令(点命令)和扩展命令(爆炸命令). 我个人的观点是,与元命令相比,您不必太在意内置命令的区别,因为有足够的示例说明这些定义不
..
我曾经使用 VirtualKD , WinDBG 和单个虚拟机来调试Windows内核. 最近我有一台Linux机器,现在我想知道-当主机无法运行 VirtualKD/WinDBG * 时,调试Windows内核的最简单方法是什么? 我认为该解决方案将需要两个虚拟机,但是我宁愿在实际计算机上托管两个实例,而不是将一个实例驻留在另一个虚拟实例中... 反正有做那个工作吗? 提
..
我从 http://www.microsoft.com/whdc下载了这些符号/devtools/debugging/symbolpkg.mspx 软件包(Windows 7 RTM x86零售符号,所有语言),但仍然给我相同的错误! .sympath已完成,但仍无法正常工作 .sympath C:\ inetpub \ wwwroot \ ProductsService \ bin
..
从win32threadpool.cpp中我们知道,在检查20s超时之前退出工作线程之前,根据我的理解,它需要通过IsIoPending()方法检查是否有任何IO待处理: 1,当工作线程要退出时,必须完成工作并返回线程池. 2,基于上述1,应该没有IO等待线程退出. 所以我的问题是,为什么在线程死亡时我们需要检查待处理的IO?或者,我们如何模拟上述情况的发生? RetryW
..
我正在Windows 7 64位上基于Qt 4.7.4运行Qt Creator 2.3.0.当我从Qt Creator(ctrl + r)运行该应用程序时,一切正常.但是,当我调试(F5)时,执行每一行会花费很多时间-有时需要2分钟才能执行一行代码. 我在“调试器日志"窗口中注意到以下行:调试器:C:\ Program Files(x86)\ Windows调试工具(x86)\ cdb.ex
..
客户正在尝试捕获挂起的小型转储.他启动了WindDbg并成功附加到该过程. WinDbg显示其标题: Microsoft (R) Windows Debugger Version 6.11.0001.404 AMD64 Copyright (c) Microsoft Corporation. All rights reserved. 并枚举了已加载的模块. 他输入了转储命令:
..
我有一个用符号构建的本机发行版dll.有一个后构建步骤,可以修改dll.后构建步骤进行了一些压缩,并可能附加了一些数据. pdb文件仍然有效,但是在后期构建步骤之后,WinDbg和Visual Studio 2008均不会加载dll的符号.我们需要修改pdb文件或dll中的哪些位,以便在WinDbg或Visual Studio加载引用了我们的发行版dll的转储时,使WinDbg或Visual St
..
如何在内核模式下使用windbg/kd从句柄获取文件路径? 解决方案 使用!handle 7 显示该句柄的详细信息,其中是句柄值,而是进程ID值(均基于十六进制)看到此 msdn 链接以获取更多信息. 您可以从用户模式会话中闪烁进程ID,这是最简单的方法,只需在用户模式下附加并输入管道命令|,它将输
..
我使用提取了一个进程的内存转储 .dump /ma c:\mydump.dmp 我想弄清楚是否设置了特定的ManualResetEvent手柄或正在等待它.我已经尝试过 0:181> !handle 2db0 f Event Handle 0000000000002db0 Type Event Attributes 0 GrantedAccess
..
我正在调试潜在的GDI手柄泄漏.感谢 @Alois Kraus ,因此有了在我的调试会话中,尤其是.NET, ,我发现通常最好有32位进程的32位转储和64位进程的64位转储. 不幸的是,由于收到了2个崩溃转储,该脚本无法正常工作.深入研究它,我发现这些转储中的GdiSharedHandleTable是null: 0:000> dt ntdll!_PEB GdiSharedHandle
..
我正在尝试从转储中跟踪NullReferenceException。 NullReferenceException不是崩溃异常,而是崩溃异常是TargetInvocationException,而InnerException是NullReferenceException。 我正在将Windbg与SOS一起使用,我使用了命令 analyze -v ,这给了我打电话NullReferenceEx
..
我正在使用WinDbg分析 AcroRd32.exe 。 AcroRd32.exe 有2个进程,一个(父亲p)启动另一个进程(子p)。我使用 .childdbg 1 和 | 1s 等命令调试这两个进程。 我切换到child-p,然后切换回父亲-p,监视kernel32.dll的 CreateFileW 和 ReadFile 具有条件断点的API。打开 a.pdf 时,仅使用参数“ C:\a.
..
在对.Net4.5 WCF w3wp进程的内存转储进行分析期间,我遇到了许多被确定为无效的线程。 !threads显示107个线程中有68个已死,这似乎很高。我想知道这些线程是否可以容纳大量内存,因为该进程最终会高达20GB以上,并且似乎永远不会崩溃。 我如何检查此类线程并看到这些持有的对象/内存? 0:000> !threads 线程数:107 UnstartedThrea
..
我正在尝试使用windbg研究在x64机器上为我们的x86进程创建的挂起转储文件。这是一个4.0 x86应用程序,因此,为了获得不受管理的堆栈,我必须执行以下操作: .loadby sos clr .load wow64exts !sw kL 但是每次我尝试通过!clrstack 获取托管堆栈,但标题出现错误。我缺少什么? 解决方案 我相信您将不得不使用
..
我试图深入了解我的转储文件中的CLR异常,但尝试执行时遇到问题: 0:000> .loadby sos clr 对LoadLibrary(C:\ProgramData\dbg\sym\clr.dll\5348A1EF9a0000\sos)的调用失败,Win32错误0n126 “指定的模块可能找不到。” 我试图查看加载的内容,然后看到: 0:000> lm
..
我正在调试Winforms应用程序以防内存泄漏。客户提供的转储文件中,未知内存使用量与.NET堆大小之间存在很大差异。 (约1000mb和200mb)。那么,除了CLR完成的VirtualAllocs之外,未知段中还有什么? !eeheap -gc输出 !地址-摘要输出 解决方案 报告为的内存是通过 VirtualAlloc() 。一些众所周知的来源是:
..
我试图通过WinDbg打印CLR对象/类,但是失败了。 首先,我尝试运行 x clr!Thread * 获得一些CLR类名,输出如下所示。 00007ffd`68957f18 clr!ThreadStore :: s_pOSContext = 00007ffd`685b0bf0 clr!ThreadNative :: SetApartmentState(
..
System.AccessViolationException was unhandled Message=Attempted to read or write protected memory. This is often an indication that other memory is corrupt. Source=System.Windows.Forms StackTr
..
我的转储文件包含OutOfMemoryException,但是所有对象字段似乎都为空.只是虚假警报还是有某种方式可以知道该异常? 0:052> !do 000000027fff10e8 The version of SOS does not match the version of CLR you are debugging. Please load the matching versi
..