windbg相关内容

为什么 windbg 命令以 .或者 !

之间有什么区别吗?和 !? 解决方案 WinDbg 中有不同种类的命令. 常规命令,例如kb 适用于调试会话.例如.显示堆栈转储等 元命令以点为前缀,例如.load.元命令适用于调试器本身.例如.加载扩展,显示帮助等等. 扩展命令以感叹号为前缀,例如!analyze 和 !dumpheap 在调试器扩展(提供附加功能的 DLL)中定义. ..
发布时间:2021-09-25 19:30:18 其他开发

为 Windbg 的 Open Executable 指定命令行

当我使用 Windbg 的“打开可执行文件..."功能使用 Windbg 单步执行可执行文件时,是否可以指定运行可执行文件时要使用的命令行参数?如果是这样,我该怎么做? 解决方案 “打开可执行文件"对话框中有一个可用的参数文本框,可以用您想要传递给可执行文件的任何参数填充. ..
发布时间:2021-09-25 19:30:15 其他开发

在windbg中有没有办法创建一个断点,当在堆栈上传递某个参数时会触发这个断点?

我试图追踪谁进行了特定大小的分配,并且我尝试使用用户模式堆栈跟踪数据库 (gflags +ust),但由于 FPO,我无法看到整个堆栈.所以相反,我想在 RtlAllocateHeap 上设置一个断点,当它产生我正在寻找的分配大小时.唯一的问题是我似乎无法找到让它发挥作用的方法. 我最初尝试使用@esi,因为看起来第三个参数是使用此寄存器传递的,但似乎并非总是如此.然后我尝试@ebp-c 给 ..
发布时间:2021-09-25 19:30:13 其他开发

WinDbg 找不到微软符号

我有一个简单的演示控制台程序来调试,但令人惊讶的是,windbg 无法从 Microsoft 默认存储中获取符号. 我愿意 .reload/f 我得到了摘要: **************** 符号加载错误总结 **************模块名称错误未找到 ConsoleApp PDB:缓存*无法在此位置找到 .pdb 文件系统找不到指定的文件:SRV*https://msd ..
发布时间:2021-09-25 19:30:10 其他开发

根据堆内的内存地址查找哪个函数分配了堆

所以我知道一个内存地址(例如:12208e6c)在一个特定的堆中.使用windbg,有没有办法确定这个堆的起始地址是什么以及哪个函数负责分配它? 解决方案 !address 为您提供有关包含地址的堆的信息: 0:005>!地址 03051234用法:堆基地地址:03050000结束地址:0307c000区域大小:0002c000状态:00001000 MEM_COMM ..
发布时间:2021-09-25 19:30:07 其他开发

使用 WinDbg 在堆上查找所有类型为 X 的 C++ 对象

我正在尝试在堆中查找 module!SomeClass 类型的所有对象.我认为这样的命令会起作用: >s -v 0 L?0xffffffff 模块!SomeClass 但可惜,它没有.如果我知道如何找到该类的 vtable 地址,那么我就可以在内存中搜索对该 vtable 的引用,但我也没有太多运气找到.我该怎么做? 解决方案 0:000>x 模块!SomeClass*table*0: ..
发布时间:2021-09-25 19:30:04 其他开发

如何解决 Windbg 上显示的此错误?

我已经加载了一个 .exe 并且出现了这个错误: Microsoft (R) Windows 调试器版本 6.12.0002.633 X86版权所有 (c) 微软公司.版权所有.命令行:“C:\Users\Public\SoundLog\Code\Código Python\SoundLog\dist\SoundLog.exe"符号搜索路径为:***无效********************* ..
发布时间:2021-09-25 19:30:01 C#/.NET

如何从windbg中的函数获取返回值?

我正在尝试调试一些 win32API,例如返回句柄的 Createthread.如何获取windbg中的返回值? 我做了一些研究,发现返回值通常存储在 EAx 寄存器中. 如果我在 CreateThread 上设置断点,那么我可以进入 Createthread 的程序集,最终我会点击 ret 语句,这意味着 Createthread 正在返回. 此时我应该检查 EAX 寄存器的值 ..
发布时间:2021-09-25 19:29:58 其他开发

使用 windbg 调试 .NET 转储

我制作了一个 .NET 进程的转储(使用 -ma 选项和 procdump.exe 中高 CPU 的触发器),我想在正在运行的线程中查看有关我的代码正在做什么的线索.我明白了: *** procdump -ma -c 65 -s 2 -n 3 service.exe*** 进程超过 65% CPU 2 秒.线程消耗 CPU:4396 (0x112c)' 指示的线程在转储时正在执行: 0:02 ..
发布时间:2021-09-25 19:29:55 C#/.NET

!clrstack -p 没有给出调用堆栈中方法的参数值

我们正在尝试使用 windbg 分析 w3wp 内存转储,我们发现 w3wp 进程由于堆栈溢出而崩溃.我加载了 psscor4.dll 并通过发出 !clrstack 获取了调用堆栈.但我也想知道传递给方法的参数.如果我发出“!clrstack -p"或“!clrstack -a",我们将获得对于所有参数和局部变量.任何想法,为什么我们得到而不是参数和局部变量的实际值? ..
发布时间:2021-09-25 19:29:53 其他开发

在 WinDBG 中使用源代码行号设置断点

我知道在 WinDBG 中使用 bp、bm 命令根据函数名称设置断点有没有办法在源代码行号上设置断点 说 20 意味着它应该在第 20 行设置断点 提前致谢 解决方案 bp `source.c:12` 或者,您可以在 WinDBG 中加载源文件,将光标设置为要设置断点的行,然后按 F9. 也可以尝试 .hh bp 以获取更多信息 ..
发布时间:2021-09-25 19:29:50 其他开发

在 Windbg 中获取 sizeof (type)

我需要一个变量的大小,我想从 Windbg 命令行获取该值.编译代码并添加 C++ sizeof() 只是为了获得该值是困难且无用的. 从文档中我看到 Windbg 可以在值 dt/s 之后进行过滤.但显示该值? 解决方案 我在数据类型上使用 dt 命令,然后很容易看到布局和大小. 0:000>dt 矩形CrashTestD!CRect+0x000 左:Int4B+0x004 顶部 ..
发布时间:2021-09-25 19:29:47 其他开发

无法找到运行时 clr.dll 以使用 sos

我有一个简单的控制台应用程序(目标框架 4.5.2): 使用系统;公开课 SosTest{公开课 Foo{公共 Foo(){Console.WriteLine("创建 foo");}}static void Main(string[] args){var n1 = new Foo();var n2 = new Foo();Console.WriteLine("分配的对象");Console.Wr ..
发布时间:2021-09-25 19:29:44 C#/.NET

WinDbg 在 MS 符号服务器上找不到 ntdll 的符号

我正在尝试调试可执行文件 notepad.exe(来自 Windows 10 发行版),并且需要来自 Microsoft 符号服务器的符号 ntdll.pdb,但调试器返回一个错误,提示他们找不到指定的文件: 0:000>.重新加载重新加载当前模块………………………………………………………………………………………………………………………………………………………………………………SYMSRV: B ..
发布时间:2021-09-25 19:29:42 其他开发

无法读取 windbg 中的故障转储

我的程序中出现了 stackoverflow 异常,该异常可能源自第三方库 microsoft.sharepoint.client.runtime.dll. 使用 adplus 创建故障转储,我面临的问题是,当我在 Windbg 中打开它时,我很难从中获取任何信息.这是我得到的回应: >0:000>.重启/f加载转储文件 [C:\symbols\FULLDUMP_FirstChance_e ..
发布时间:2021-09-25 19:29:39 其他开发

错误:在 WinDbg 中找不到符号文件

我正在使用 VmWare 对 windows vista 进行远程调试,但我遇到了 *** 错误:找不到符号文件.默认为 ntkrpamp.exe 导出符号“ 另外,如果我在windbg中给出“!process 0 0",我得到 **** NT ACTIVE PROCESS DUMP **** NT 符号不正确,请修正符号 我尝试将 _NT_SYMBOL_PATH 设置为“symsrv*s ..
发布时间:2021-09-25 19:29:36 其他开发

确定 ZwWaitForMultipleObjects 正在等待哪些对象

查看windbg 中的故障转储,我可以看到所有当前线程都停在 >~2kChildEBP RetAddr00d2fcc8 7d4e27dc ntdll_7d600000!ZwWaitForMultipleObjects+0x15 或相同的 SingleObject 变体. 当要等待的对象的句柄传递给 ZwWaitForMultipleObjects 时,我假设我可以算出它使用的是哪个对象 ..
发布时间:2021-09-25 19:29:33 其他开发

如何阻止windbg成为交互式调试器?

在 vista/win7 上撤消 windbg -I 的正确方法是什么? 删除HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\AeDebug中的注册表键那么简单吗? 解决方案 您不需要删除整个注册表项.删除 Debugger 值就足够了. 发生异常时,系统首先查看是否有注册的调试器.如果是这样,它只 ..
发布时间:2021-09-25 19:29:30 其他开发

windbg:命令输出到文本文件

如何将 WinDbg 中的命令输出保存到文本文件中? 解决方案 使用 -logo 选项从命令行启动 WinDbg: windbg.exe -logo logfile.txt 这会将完成的所有操作都记录到指定的文件中.您可以找到有关命令行选项的更多详细信息 这里. 或者,如果您已经在调试会话中,您可以使用 .logopen 命令开始记录.有关此命令的详细信息,请参阅 此处 或 ..
发布时间:2021-09-25 19:29:27 其他开发