当我们想使用本机调试器(如CDB或WinDBG)调试.NET应用程序时,我们必须在本机调试器和托管世界之间使用"桥",因为本机调试器本身并不理解托管代码.它是本机调试器.为了提供这个桥,CLR附带了一个调试扩展名SOS.DLL.这理解CLR的内部结构,因此允许我们执行诸如输出托管调用堆栈.转储托管堆等操作. Windbg对于这些类型的问题非常有效,但它有其缺点,因为它不是真正的托管调试器,所以在.NET代码中设置断点或单步执行代码,甚至像在visual Studio这样的托管调试器中那…
sos.dll/mscordacwks.dll 公共语言运行库(CLR)是执行托管代码的Microsoft.NET框架的核心引擎.简单地说,它通过在托管程序集中使用中间语言和元数据,JIT按需编译代码,构建程序集定义和使用的类型的内存表示,并确保生成的代码是安全的.安全的和可验证的,并在需要时执行.这个引擎本身是用本机代码实现的.当我们想使用本机调试器(如CDB或WinDBG)调试.NET应用程序时(如果我们想使用事后内存转储文件调试它,我们目前做了很多工作),我们必须在本机调试器和托管世界之间…
一.SOS扩展命令 SOS包含几十个命令,要熟练使用SOS,首先要了解SOS有哪些命令.下面给出SOS命令列表. 命令 描述 BPMD [<module name> <method name>] [-md <MethodDesc>] 建立一个断点在指定模块的指定方法上. 如果指定模块和方法尚未被载入,该命令等到该模块被载入并且被即时(just-in-time)编译的通知后再建立断点. CLRStack [-a] [-l] [-p] 只提供托管代码的栈跟踪. -p 选项显…
  SecAnnotate.exe(.NET 安全批注器工具) SignTool.exe(签名工具) Sn.exe(强名称工具) SOS.dll(SOS 调试扩展)   SqlMetal.exe(代码生成工具) Storeadm.exe(独立存储工具) Tlbexp.exe(类型库导出程序) Tlbimp.exe(类型库导入程序) Winmdexp.exe(Windows 运行时元数据导出工具) Winmdexp.exe 错误消息 Winres.exe(Windows 窗体资源编辑器)   此文…
http://blog.csdn.net/cslie/article/details/2158780 SOS 调试扩展 (SOS.dll) 提供公共语言运行时(CLR)内部环境的有关信息,帮助你在WinDbg.exe调试器和Visual Studio中调试托管程序. ![command] [options] 命令 命令 描述 BPMD [<module name> <method name>] [-md <MethodDesc>] 建立一个断点在指定模块的指定方法上.…
大家都知道,在调试托管代码时,一定会加载到sos/clr/mscorwks/mscordacwks这些动态库,才能够很好的完成我们的调试工作,那么他们的版本对应关系是怎样的呢,特别是clr.dll/mscorwks.dll有什么关系呢? clr是通用语言运行时库,对应的就是clr.dll/mscorwks.dll,在clr发展过程中,文件名发生了变化,他们的版本对应关系如下: .NET framework 版本 CLR 版本 CLR 文件名 1.1 1.1 mscorwks.dll 2.0 2.…
SOS.dll 中提供的 Son of Strike 扩展 (SOS),用于调试 WinDbg 中的托管代码.在启动了调试程序并将其附加到托管进程(或加载故障转储) .load C:\Windows\Microsoft.NET\Framework\v4.0.30319\SOS.dll The call to LoadLibrary(C:\Windows\Microsoft.NET\Framework\v4.0.30319\SOS.dll) failed, Win32 error 0n193 "%…
SOS.dll (SOS Debugging Extension) lays threads associated with a live thread. The -special option displays all special threads created by the CLR. Special threads include garbage collection threads (in concurrent and server garbage collection), debug…
The version of SOS does not match the version of CLR you are debugging 和 PDB symbol for clr.dll not loaded  解决WinDbg调试Dump文件不同环境mscordacwks.dll版本问题 程序发生了崩溃,我抓了一个mini Dump,Mini dump 有一个优点就是非常的小.比full dump 要小很多. 0:020> .loadby sos clr //首先加载sos 0:020>…
在C#中一定要检查引用时的数据类型 WinAPI 的数据类型 默认是32位的,但是引用时外部的是 Long类型默认是64位的.所以引用时需要将 long 改为 int 型. 参照 http://blog.sina.com.cn/s/blog_8248282d0101hcbd.html https://blog.csdn.net/jinhuicao/article/details/83584973 情况一: 对 PInvoke 函数“TestDLL!TestDLL.Form1::mySum”的调用…