2019年12月9日

WinDbg常用命令系列---!findstack

摘要: 简介 !findstack扩展查找所有包含指定的符号或模块的堆栈。此命令搜索线程调用堆栈中的特定符号,并显示匹配的线程。 使用形式 !findstack Symbol[DisplayLevel] !findstack -? 参数 Symbol 指定符号或模块。 DisplayLevel 指定显示内容 阅读全文

posted @ 2019-12-09 19:31 活着的虫子 阅读(459) 评论(0) 推荐(0) 编辑

WinDbg常用命令系列---!uniqstack

摘要: 简介 这个!uniqstack扩展扩展显示的所有线程的堆栈的所有当前进程,不包括显示为具有重复项的堆栈中。 使用形式 !uniqstack [ -b | -v | -p ] [ -n ] 参数 -b将导致显示以包括前三个参数传递给每个函数。 -v将导致显示以包括帧指针省略 (FPO) 信息。 在基于 阅读全文

posted @ 2019-12-09 19:20 活着的虫子 阅读(644) 评论(0) 推荐(0) 编辑

在没有符号和FPO的情况下遍历堆栈(帧指针省略)

摘要: 下面是应用程序崩溃转储的调用堆栈。报告的崩溃是名为“HelperLibrary”的模块内的访问冲突,我们没有该模块的符号或源代码。调用堆栈看起来不太可能: 0:000> kv ChildEBP RetAddr Args to Child WARNING: Stack unwind informati 阅读全文

posted @ 2019-12-09 18:50 活着的虫子 阅读(567) 评论(0) 推荐(0) 编辑

从符号名和偏移量自动获取源和行号

摘要: 从前,非托管代码开发人员必须非常努力地将代码偏移量与源文件名和行号关联起来。一种方法涉及为每个模块生成.cod文件(程序集列表),然后费力地将指令偏移量与.cod文件的内容进行比较。例如,如果从具有客户机接收到错误BatteryMeter!TemperatureAndBatteryUpdaterTh 阅读全文

posted @ 2019-12-09 17:49 活着的虫子 阅读(509) 评论(0) 推荐(0) 编辑

在WinDbg中显示和搜索std::map内容

摘要: 我们希望在WinDbg中自动显示、搜索和过滤std::map对象。std::vectors的脚本相对简单,因为vectors中数据的平面结构;map是更复杂的野兽。具体地说,Visual C++ STL中的映射是作为红黑树实现的。每个树节点都有三个重要的指针:左指针、右指针和父指针。此外,每个节点都 阅读全文

posted @ 2019-12-09 17:17 活着的虫子 阅读(747) 评论(0) 推荐(0) 编辑

在WinDbg中显示和搜索std::vector内容

摘要: WinDbg从来都不擅长可视化。尽管Visual Studio一直都有autoexp.dat,而且最近还出现了本机调试器可视化工具,但WinDbg用户不得不满足于转储内存区域和搜索内存来识别模式。另一方面,如果希望简化调试过程,Visual Studio目前没有提供任何自动化机会。从Visual S 阅读全文

posted @ 2019-12-09 17:04 活着的虫子 阅读(548) 评论(0) 推荐(0) 编辑

面向开发人员的Windows错误报告(WER)

摘要: Windows错误报告是更新的Windows XP上Dr.Watson的替代品。它监视故障并收集可以发送到要分析的服务器(如果用户允许)的有用信息。这项功能帮助微软修复了很多错误——由于收到的报告,微软能够对错误进行优先排序(基于最大点击数或其他严重性度量),并解决了很多问题。真正酷的是,任何开发人 阅读全文

posted @ 2019-12-09 15:16 活着的虫子 阅读(4470) 评论(0) 推荐(0) 编辑

在WinDbg中调试时如何查看类/结构对象成员的值

摘要: 有时,当您调试应用程序时,会碰巧得到指向类的指针,该类只有几个成员变量,包括结构和其他类对象!如何看待内部类/结构变量成员的值??所以,这是提示。下面是用于演示命令的代码。 struct testStruct { int i; char ch; long l; char* str; }; class 阅读全文

posted @ 2019-12-09 11:35 活着的虫子 阅读(2853) 评论(0) 推荐(0) 编辑

如何调试由其他可执行文件启动的进程!

摘要: 问题是,我们要调试由其他应用程序运行的应用程序的启动代码!例如,我将打开一个控制台(cmd.exe),然后打开calc.exe,我想调试初始的calc.exe代码。。Windbg已经解决了这个问题!当您选择“打开可执行文件”时,您有一个小的复选框,上面写着“同时调试子进程”,它实际上确保所有由父EX 阅读全文

posted @ 2019-12-09 11:04 活着的虫子 阅读(473) 评论(0) 推荐(0) 编辑

仅为一个模块加载/重新加载符号

摘要: 很多时候,在调试会话中,我们需要加载/重新加载特定模块的符号(在WinDbg的上下文中)。例如,我们开始调试,在调试时设置正常的符号路径并下载,发现我们需要特定模块的符号。我们修改符号文件路径。如果我们这样做了,.reload /f它从同一个位置再次加载所有符号,这可能需要时间。所以,只找到了加载一 阅读全文

posted @ 2019-12-09 10:58 活着的虫子 阅读(493) 评论(0) 推荐(0) 编辑

如何查看WinDbg扩展有哪些命令

摘要: 如果您想查看任何windbg扩展所支持的命令,可以采用各种方法。 你可以用!<ext_name>.help命令查看该扩展支持的所有命令。用扩展模块名替换<ext_name>。(注意:只有特定扩展支持help命令时,此操作才有效。) 您可以在Dependency Walker中打开扩展DLL,它将在导 阅读全文

posted @ 2019-12-09 10:40 活着的虫子 阅读(352) 评论(0) 推荐(0) 编辑

SOS从内存转储中提取模块(EXE、DLL和其他二进制文件)

摘要: 假设有一种情况,您从客户那里得到一个内存转储,需要模块(DLL、EXE、OCX等)来进一步调试。。(.NET模块可用于通过反向工程查看源代码。)我们可以使用windbg目录中的clr10\sos.dll保存所有模块(在获取内存转储时由目标进程加载)。有趣的是,sos.dll不仅可以提取托管模块,还可 阅读全文

posted @ 2019-12-09 10:28 活着的虫子 阅读(734) 评论(0) 推荐(0) 编辑

Visual Studio 调试技巧---指针,元素个数

摘要: 刚才,我在Visual Studio 中发现了一个以更好的方式调试指针的技巧。您可以在监视窗口中选择“n”,其中“n”是要显示的元素数。我认为下图是不言而喻的。 阅读全文

posted @ 2019-12-09 10:16 活着的虫子 阅读(644) 评论(0) 推荐(0) 编辑

在调试时,有什么更好的方法可以监视最后一个win32错误?

摘要: 我发现在代码中使用win32api时,需要多次监视最后一个win32错误!(在每次使用API后调用GetLastError()是不可行的解决方案!).. 在Visual Studio中,它们提供了一个非常好的小特性。你可以在“监视”窗口中写入@err,hr 同样,您可以使用另一个伪寄存器@eax来监 阅读全文

posted @ 2019-12-09 09:59 活着的虫子 阅读(179) 评论(0) 推荐(0) 编辑

从WinDbg中的转储查看操作系统版本和SP详细信息

摘要: 这是一个很常见的问题,我们几乎总是遇到。想象一下这样一种情况,我们从某个地方得到一个内存转储,想看看在那里运行的是什么操作系统,安装了什么SP。。为此,有一个非常简单的命令。 0:000> vertargetWindows 7 Version 7601 (Service Pack 1) MP (8 阅读全文

posted @ 2019-12-09 09:47 活着的虫子 阅读(1019) 评论(0) 推荐(0) 编辑

导航