Windbg+SOS命令大全:深入CLR对象与堆栈检查

需积分: 9 12 下载量 110 浏览量 更新于2024-11-05 收藏 365KB PDF 举报
"windbg+sos帮助文档" 是一个PDF文档,主要涵盖了使用Windbg调试器与SOS扩展命令在.NET Framework 2.0环境下的各种功能和操作。该文档由Charles Ju整理,包含了对象检查、代码和堆栈分析、CLR数据结构检查等多个方面的内容,旨在帮助开发者更有效地进行.NET应用的调试工作。 详细内容: 1. **对象检查**: - **DumpObj**: 用于显示指定对象的信息,包括类型、大小和字段值。 - **DumpArray**: 用于打印数组的内容和元数据信息。 - **DumpStackObjects**: 显示当前堆栈上所有托管对象的列表。 - **DumpHeap**: 提供堆的概览,显示堆上的对象和内存分布。 - **DumpVC**: 用于查看虚函数表(VTable)和类信息。 2. **垃圾回收与引用**: - **GCRoot**: 查找哪些根对象引用了特定的对象,以了解对象为何未被垃圾回收。 - **ObjSize**: 计算对象及其子对象的总大小。 - **FinalizeQueue**: 检查等待终结的对象队列。 3. **代码与堆栈分析**: - **Threads**: 列出应用程序中的所有线程信息。 - **CLRStack**: 显示.NET调用堆栈,有助于理解代码执行路径。 - **IP2MD**: 将指令指针转换为方法描述符。 - **U**: 解析未托管的(native)代码堆栈帧。 - **DumpStack**: 打印完整的堆栈跟踪,包括托管和非托管部分。 - **EEStack**: 显示引擎堆栈信息,用于理解CLR内部状态。 4. **异常处理**: - **PrintException**: 显示有关当前异常的详细信息,包括堆栈跟踪和异常类型。 5. **其他诊断工具**: - **TraverseHeap**: 遍历整个托管堆,检查对象和内存分配。 - **COMState**: 显示COM状态信息,如线程的Apartment State。 - **BPMD**: 设置基于方法描述符的断点。 - **VerifyHeap**: 验证托管堆的完整性和一致性。 - **DumpLog**: 将调试信息输出到日志文件。 - **FindAppDomain**: 查找特定的应用域。 - **SaveModule**: 保存模块到文件,用于离线分析。 - **GCHandles**: 显示有关垃圾收集句柄的信息,可能用于查找句柄泄漏。 - **GCHandleLeak**: 帮助检测可能导致内存泄漏的句柄。 6. **数据结构检查**: - **DumpDomain**: 显示应用域的详细信息。 - **EEHeap**: 输出运行时的引擎堆信息,如对象分配和内存池。 - **Name2EE**: 通过类型名称查找对应的EE(Execution Engine)表示。 - **SyncBlk**: 显示同步块索引和相关信息。 - **DumpMT**: 显示方法表(Method Table)信息。 - **DumpClass**: 显示类的详细信息,包括基类、接口等。 - **DumpMD**: 输出方法定义(MethodDesc)信息。 - **Token2EE**: 通过元数据令牌查找运行时数据。 - **EEVersion**: 显示运行时版本信息。 - **DumpModule**: 显示模块的元数据和加载信息。 - **ThreadPool**: 分析线程池的状态和配置。 - **DumpAssembly**: 显示有关程序集的详细信息。 - **DumpMethodSig**: 输出方法签名。 - **DumpRuntimeTypes**: 显示运行时类型信息。 - **DumpSig**: 解析并显示元数据签名。 - **RCWCleanupList**: 查看RCW(Runtime Callable Wrapper)清理列表。 - **DumpIL**: 显示IL(Intermediate Language)代码。 这些命令和工具是.NET调试的关键组成部分,对于理解应用程序的行为、定位问题和优化性能具有重要作用。通过深入学习和熟练运用,开发者可以更好地驾驭复杂的.NET调试场景。