windbg相关内容

在内存中固定一个 DLL(增加引用计数)

我正在尝试运行一个应用程序,但该应用程序由于访问冲突而退出.在调试器中运行应用程序我可以看到这是由卸载的库引起的.我迫不及待地等待应用程序的下一个版本,所以我正在尝试解决这个问题. 我想知道 WinDbg 是否提供了一种增加加载模块的引用计数的方法,类似于 C++ LoadLibrary() 调用.然后我可以中断模块加载并增加受影响的 DLL 的引用计数,看看我是否可以使用该应用程序. ..
发布时间:2021-11-26 20:12:02 其他开发

如何调试托管堆中的损坏

我的程序抛出了一个catch(Exception e)块无法处理的错误,然后它崩溃了: 访问冲突损坏状态异常. 这很奇怪,因为据我所知,非托管代码会抛出损坏的状态异常,而在这里我在调用 StringBuilder 方法. 代码在后台线程中运行,并且不时崩溃,无法轻松重现.所以我将 WinDbg 附加到进程中,并有以下异常堆栈: 000000001dabd8c8 000007fe ..
发布时间:2021-11-26 10:50:39 C#/.NET

无法在 WinDbg 中加载 SOS

背景:我是 WinDbg 的新手,并试图让它第一次运行.我想检查从托管在 Windows Server 2008 (x86) 上的 IIS 7 中的正在运行的 ASP.NET 4 站点获取并下载到我的本地计算机的内存转储. 我安装了调试工具并首次启动了 WinDbg,打开故障转储.我去了文件|符号文件路径并将路径设置为 *srv*c:\symbols*http://msdl.microsof ..
发布时间:2021-11-26 10:42:06 其他开发

.Net 内存转储中的大量死线程

在分析 .Net4.5 WCF w3wp 进程的内存转储过程中,我遇到了许多标识为死的线程.!threads 显示 107 个线程中有 68 个已死,这似乎相当高.我想知道这些线程是否可以容纳大量内存,因为进程最终会高达 20GB+ 并且似乎永远不会停止. 我如何检查这些线程并查看这些线程持有的对象/内存?有这么多正常吗? 0:000>!threads线程数:107未启动线程:0背景主题: ..
发布时间:2021-11-25 07:18:45 C#

在 64 位机器上捕获的 32 位进程的调试转储

我最近收到了来自客户的 64 位故障转储. 我们的进程都是 32 位的,但客户的机器运行的是 x64 Server 2008. Visual Studio(2008 和 2010 Express)告诉我必须使用 MSVSMON.EXE 的 64 位版本,我不能,因为我没有 64-位机. 我很确定在 WinDbg 中有一种方法可以做到这一点,但我发现 WinDbg 具有敌意. 有 ..
发布时间:2021-11-25 06:19:30 C#

kb 为 64 位进程显示什么?

我最近在分析调用堆栈时犯了一个错误,因为我没想到应用程序是 64 位的.我使用了 WinDbg 命令 kb 来显示调用堆栈和传递给方法的参数. 在 64 位上,参数不是通过堆栈传递,而是在寄存器(RCX、RDX、R8 和 R9)中传递.似乎 WinDbg 没有或没有完全实现这一点.部分我猜这几乎是不可能的,因为寄存器值可能同时发生了变化. 但是,WinDbg 帮助仍将 kb 列为 Us ..
发布时间:2021-11-25 06:00:18 C#

我可以在 x64 WIN7 上同时安装 x86/x64 windbg 吗?

我需要分析一些 x86 转储文件,所以我想在我的电脑上安装 x86 windbg. 或者我是否可以使用 x64 windbg 来分析 x86 转储文件? 解决方案 是的,这样做是个好主意,因为您需要 32 位版本来调试 32 位应用程序/转储.所有文件都位于安装目录中,因此您可以并排安装任意数量的安装. 另外,请记住,如果您使用 64 位工具创建转储,您将获得 64 位转储 - ..
发布时间:2021-11-25 05:54:18 C#

.Net 内存转储中的大量死线程

在分析 .Net4.5 WCF w3wp 进程的内存转储过程中,我遇到了许多标识为死的线程.!threads 显示 107 个线程中有 68 个已死,这似乎相当高.我想知道这些线程是否可以容纳大量内存,因为进程最终会高达 20GB+ 并且似乎永远不会停止. 我如何检查这些线程并查看这些线程持有的对象/内存?有这么多正常吗? 0:000>!threads线程数:107未启动线程:0背景主题: ..
发布时间:2021-11-24 10:31:15 C#

Windbg 命令的每个结果作为脚本中的参数

我打算在进程转储的特定内存区域中搜索操作码. 我想在搜索时有一些条件. 喜欢:$$>script.wds #call 00400000 L?01000000 for(00400000 ~ 01000000){//这个条件是如果参数的操作码是地址不在这个区域.if(arg1 的操作码 !in 00400000 ~ 01000000).打印 arg1} 解决方案 您可以组合使用 ..
发布时间:2021-09-25 19:32:35 其他开发

Microsoft 调试符号不起作用

我尝试分析一些内存转储.但我堆叠了一些 Microsoft dll (sechost.dll) 的调试符号.我做什么: 1) !sym 嘈杂 2) .symfix 3) .sympath 我的 .sympath 是: 符号搜索路径为:srv*扩展符号搜索路径为:cache*;SRV*http://msdl.microsoft.com/download/symbols 4 ..
发布时间:2021-09-25 19:32:33 其他开发

windows - 我如何访问总的“用户模式堆栈跟踪数据库(ust)"?

如何访问由“gflags.exe"创建的全部“用户模式堆栈跟踪数据库",如 sql DB?否则,你能告诉我一些关于 ust DB 的 API 文档吗? 我使用“gflags.exe"调整了 +ust 标志,因此我可以获得创建内存块的堆栈跟踪. 但我想通过调用堆栈(如umdh或leakdiag)编译统计内存分配组,仅供研究.我想有一些查询 ust DB 的接口,但我找不到..有什么方法可 ..
发布时间:2021-09-25 19:32:29 其他开发

从符号中部分删除类型信息

正如我们最近了解到的,微软已经从ntdll 某些版本中的符号. 假设我有一个库的源代码,我想发布公共符号,但从该 PDB 中删除了一些类型定义,我将如何在技术上实现这一点,尤其是在不破坏 PDB 身份信息(时间戳和校验和)的情况下? 我在在线文档中找不到编译器开关这将允许我传递要排除的类型列表. 请注意,我不想从私有符号切换到公共符号,而是要减少公共符号. 解决方案 Wi ..
发布时间:2021-09-25 19:32:26 其他开发

WinDbg c 级调试?

刚开始步进我的内核模式 USB 驱动程序,它是在汇编程序中.如何将 WinDbg 配置为 c 级调试?这就是我现在的样子 =/ MyDriver!MyDriver_EvtDeviceAdd+0xb:af20801b 833d647020af03 cmp dword ptr [MyDriver!DebugLevel (af207064)],30:kd>磷MyDriver!MyDriver_EvtD ..
发布时间:2021-09-25 19:32:18 其他开发

Windows 进程句柄数持续增长

我正在 Windows 10 上处理 C++ 项目,我注意到随着时间的推移,与进程相关的句柄会增加并持续增长. 网上搜索的原因我不确定这是否意味着进程有内存泄漏或者这是否正常. 当内存分配然后释放时,我会看到句柄增加和减少吗? 我一直在使用它,因为我正在努力寻找原因:https://docs.microsoft.com/en-us/archive/blogs/markrussin ..
发布时间:2021-09-25 19:32:15 其他开发

在远程内核调试中部分丢失了 DLL

我正在使用 IDA + WinDBG 插件进行一些远程内核调试,我想在 DLL 内的某个函数中设置断点,这是我在 IDA 中反汇编它时发现的.我切换到加载目标 DLL 的进程,但不幸的是我发现内存中的 DLL 部分丢失,包括我的函数. 证明示例如下.在这里,IDA 识别出函数 sub_180001FC8,但在 WinDBG 中,此反汇编在地址 0x7fff3d131fff 处中断. 截 ..
发布时间:2021-09-25 19:32:12 其他开发

如何在一个命令中禁用 cdb 中显式命名的异常?

sx 系列命令接受异常/事件的名称,例如 av、异常代码或 *. 问题是 * 捕获所有未命名的异常.如果我想在发生任何异常时执行命令,无论是否显式命名,该怎么办? 例如 sxe -c "bla-bla-bla" -c2 "ku-ku-ku" avsxe -c "bla-bla-bla" -c2 "ku-ku-ku" dzsxe -c "bla-bla-bla" -c2 "ku-ku- ..
发布时间:2021-09-25 19:32:09 其他开发

Windows 调试工具:Symbol 代理不代理

我正在尝试使用 Windows 调试工具中的 symproxy.dll 设置符号代理.当我从调试器发出“.reload/f"时,找不到任何符号文件.看起来 Symproxy 不会去 Microsoft 符号服务器来实际获取符号.例如,我在 Wireshark 中什么也看不到. SYMPROXY.DLL 肯定正在加载——我可以在事件日志中看到一些条目,并且 http://my-server/s ..
发布时间:2021-09-25 19:32:07 其他开发

故障转储文件中的主机信息

是否可以获得有关创建转储文件的主机的信息,例如操作系统版本、服务包、.NET 框架版本等. 解决方案 打开转储文件时会自动列出操作系统版本等. 您可以使用 !eeversion 命令获取 .NET 框架版本. 0:000>!eeversion2.0.50727.4952 免费工作站模式SOS 版本:2.0.50727.4952 零售版 要获取加载模块的附加信息,请使用 lm 的详 ..
发布时间:2021-09-25 19:32:04 其他开发