windbg相关内容
我只想找出 WER 将其转储文件写入哪个位置?此位置是否特定于操作系统? 解决方案 WER 文档 说您可以设置注册表设置来控制转储位置和转储类型 HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\Windows 错误报告\LocalDumps\DumpFolder HKEY_LOCAL_MACHINE\SOFTWARE\Microsof
..
之间有什么区别吗?和 !? 解决方案 WinDbg 中有不同种类的命令. 常规命令,例如kb 适用于调试会话.例如.显示堆栈转储等 元命令以点为前缀,例如.load.元命令适用于调试器本身.例如.加载扩展,显示帮助等等. 扩展命令以感叹号为前缀,例如!analyze 和 !dumpheap 在调试器扩展(提供附加功能的 DLL)中定义.
..
当我使用 Windbg 的“打开可执行文件..."功能使用 Windbg 单步执行可执行文件时,是否可以指定运行可执行文件时要使用的命令行参数?如果是这样,我该怎么做? 解决方案 “打开可执行文件"对话框中有一个可用的参数文本框,可以用您想要传递给可执行文件的任何参数填充.
..
我试图追踪谁进行了特定大小的分配,并且我尝试使用用户模式堆栈跟踪数据库 (gflags +ust),但由于 FPO,我无法看到整个堆栈.所以相反,我想在 RtlAllocateHeap 上设置一个断点,当它产生我正在寻找的分配大小时.唯一的问题是我似乎无法找到让它发挥作用的方法. 我最初尝试使用@esi,因为看起来第三个参数是使用此寄存器传递的,但似乎并非总是如此.然后我尝试@ebp-c 给
..
我有一个简单的演示控制台程序来调试,但令人惊讶的是,windbg 无法从 Microsoft 默认存储中获取符号. 我愿意 .reload/f 我得到了摘要: **************** 符号加载错误总结 **************模块名称错误未找到 ConsoleApp PDB:缓存*无法在此位置找到 .pdb 文件系统找不到指定的文件:SRV*https://msd
..
所以我知道一个内存地址(例如:12208e6c)在一个特定的堆中.使用windbg,有没有办法确定这个堆的起始地址是什么以及哪个函数负责分配它? 解决方案 !address
为您提供有关包含地址的堆的信息: 0:005>!地址 03051234用法:堆基地地址:03050000结束地址:0307c000区域大小:0002c000状态:00001000 MEM_COMM
..
我正在尝试在堆中查找 module!SomeClass 类型的所有对象.我认为这样的命令会起作用: >s -v 0 L?0xffffffff 模块!SomeClass 但可惜,它没有.如果我知道如何找到该类的 vtable 地址,那么我就可以在内存中搜索对该 vtable 的引用,但我也没有太多运气找到.我该怎么做? 解决方案 0:000>x 模块!SomeClass*table*0:
..
我已经加载了一个 .exe 并且出现了这个错误: Microsoft (R) Windows 调试器版本 6.12.0002.633 X86版权所有 (c) 微软公司.版权所有.命令行:“C:\Users\Public\SoundLog\Code\Código Python\SoundLog\dist\SoundLog.exe"符号搜索路径为:***无效*********************
..
我正在尝试调试一些 win32API,例如返回句柄的 Createthread.如何获取windbg中的返回值? 我做了一些研究,发现返回值通常存储在 EAx 寄存器中. 如果我在 CreateThread 上设置断点,那么我可以进入 Createthread 的程序集,最终我会点击 ret 语句,这意味着 Createthread 正在返回. 此时我应该检查 EAX 寄存器的值
..
我制作了一个 .NET 进程的转储(使用 -ma 选项和 procdump.exe 中高 CPU 的触发器),我想在正在运行的线程中查看有关我的代码正在做什么的线索.我明白了: *** procdump -ma -c 65 -s 2 -n 3 service.exe*** 进程超过 65% CPU 2 秒.线程消耗 CPU:4396 (0x112c)' 指示的线程在转储时正在执行: 0:02
..
我们正在尝试使用 windbg 分析 w3wp 内存转储,我们发现 w3wp 进程由于堆栈溢出而崩溃.我加载了 psscor4.dll 并通过发出 !clrstack 获取了调用堆栈.但我也想知道传递给方法的参数.如果我发出“!clrstack -p"或“!clrstack -a",我们将获得对于所有参数和局部变量.任何想法,为什么我们得到而不是参数和局部变量的实际值?
..
我知道在 WinDBG 中使用 bp、bm 命令根据函数名称设置断点有没有办法在源代码行号上设置断点 说 20 意味着它应该在第 20 行设置断点 提前致谢 解决方案 bp `source.c:12` 或者,您可以在 WinDBG 中加载源文件,将光标设置为要设置断点的行,然后按 F9. 也可以尝试 .hh bp 以获取更多信息
..
我需要一个变量的大小,我想从 Windbg 命令行获取该值.编译代码并添加 C++ sizeof() 只是为了获得该值是困难且无用的. 从文档中我看到 Windbg 可以在值 dt/s 之后进行过滤.但显示该值? 解决方案 我在数据类型上使用 dt 命令,然后很容易看到布局和大小. 0:000>dt 矩形CrashTestD!CRect+0x000 左:Int4B+0x004 顶部
..
我有一个简单的控制台应用程序(目标框架 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
..
我正在尝试调试可执行文件 notepad.exe(来自 Windows 10 发行版),并且需要来自 Microsoft 符号服务器的符号 ntdll.pdb,但调试器返回一个错误,提示他们找不到指定的文件: 0:000>.重新加载重新加载当前模块………………………………………………………………………………………………………………………………………………………………………………SYMSRV: B
..
我的程序中出现了 stackoverflow 异常,该异常可能源自第三方库 microsoft.sharepoint.client.runtime.dll. 使用 adplus 创建故障转储,我面临的问题是,当我在 Windbg 中打开它时,我很难从中获取任何信息.这是我得到的回应: >0:000>.重启/f加载转储文件 [C:\symbols\FULLDUMP_FirstChance_e
..
我正在使用 VmWare 对 windows vista 进行远程调试,但我遇到了 *** 错误:找不到符号文件.默认为 ntkrpamp.exe 导出符号“ 另外,如果我在windbg中给出“!process 0 0",我得到 **** NT ACTIVE PROCESS DUMP **** NT 符号不正确,请修正符号 我尝试将 _NT_SYMBOL_PATH 设置为“symsrv*s
..
查看windbg 中的故障转储,我可以看到所有当前线程都停在 >~2kChildEBP RetAddr00d2fcc8 7d4e27dc ntdll_7d600000!ZwWaitForMultipleObjects+0x15 或相同的 SingleObject 变体. 当要等待的对象的句柄传递给 ZwWaitForMultipleObjects 时,我假设我可以算出它使用的是哪个对象
..
在 vista/win7 上撤消 windbg -I 的正确方法是什么? 删除HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\AeDebug中的注册表键那么简单吗? 解决方案 您不需要删除整个注册表项.删除 Debugger 值就足够了. 发生异常时,系统首先查看是否有注册的调试器.如果是这样,它只
..
如何将 WinDbg 中的命令输出保存到文本文件中? 解决方案 使用 -logo 选项从命令行启动 WinDbg: windbg.exe -logo logfile.txt 这会将完成的所有操作都记录到指定的文件中.您可以找到有关命令行选项的更多详细信息 这里. 或者,如果您已经在调试会话中,您可以使用 .logopen 命令开始记录.有关此命令的详细信息,请参阅 此处 或
..