利用SOS分析调试托管代码--(1)
- 综述
对象查看 |
代码/堆栈检查 |
CLR数据结构检查 |
诊断工具 |
GC历史检查 |
其他 |
DumpObj DumpArray DumpStackObjects DumpHeap DumpVC GCRoot ObjSize FinalizeQueue PrintException TraverseHeap |
Threads ThreadState IP2MD U DumpStack EEStack CLRStack GCInfo EHInfo BPMD COMState |
DumpDomain EEHeap Name2EE SyncBlk DumpMT DumpClass DumpMD Token2EE EEVersion DumpModule ThreadPool DumpAssembly DumpSigElem DumpRuntimeTypes DumpSig RCWCleanupList DumpIL |
VerifyHeap VerifyObj FindRoots HeapStat GCWhere ListNearObj GCHandles GCHandleLeaks FinalizeQueue FindAppDomain SaveModule ProcInfo StopOnException DumpLog VMMap VMStat MinidumpMode AnalyzeOOM |
HistInit HistRoot HistObj HistObjFind HistClear |
FAQ |
- 查看CLR基本的数据结构
--------------------------------------
System Domain: 61fe3478
LowFrequencyHeap: 61fe3784
HighFrequencyHeap: 61fe37d0
StubHeap: 61fe381c
Stage: OPEN
Name: None
--------------------------------------
Shared Domain: 61fe3140
LowFrequencyHeap: 61fe3784
HighFrequencyHeap: 61fe37d0
StubHeap: 61fe381c
Stage: OPEN
Name: None
Assembly: 00432838 [C:\Windows\Microsoft.Net\assembly\GAC_32\mscorlib\v4.0_4.0.0.0__b77a5c561934e089\mscorlib.dll]
ClassLoader: 004328d8
Module Name
602e1000 C:\Windows\Microsoft.Net\assembly\GAC_32\mscorlib\v4.0_4.0.0.0__b77a5c561934e089\mscorlib.dll
--------------------------------------
Domain 1: 003e16b0
LowFrequencyHeap: 003e1a2c
HighFrequencyHeap: 003e1a78
StubHeap: 003e1ac4
Stage: OPEN
SecurityDescriptor: 003e2e28
Name: Wuhong.SOSTest.exe
Assembly: 00432838 [C:\Windows\Microsoft.Net\assembly\GAC_32\mscorlib\v4.0_4.0.0.0__b77a5c561934e089\mscorlib.dll]
ClassLoader: 004328d8
SecurityDescriptor: 0042d3a0
Module Name
602e1000 C:\Windows\Microsoft.Net\assembly\GAC_32\mscorlib\v4.0_4.0.0.0__b77a5c561934e089\mscorlib.dll
Assembly: 0043ac50 [F:\Wuhong.SOSTest\bin\Debug\Wuhong.SOSTest.exe]
ClassLoader: 0043acf0
SecurityDescriptor: 0043d688
Module Name
00132e9c F:\Wuhong.SOSTest\bin\Debug\Wuhong.SOSTest.exe
Name: F:\Wuhong.SOSTest\bin\Debug\Wuhong.SOSTest.exe
Attributes: PEFile
Assembly: 0043ac50
LoaderHeap: 00000000
TypeDefToMethodTableMap: 001300c4
TypeRefToMethodTableMap: 001300d4
MethodDefToDescMap: 00130134
FieldDefToDescMap: 00130164
MemberRefToDescMap: 00130170
FileReferencesMap: 001301dc
AssemblyReferencesMap: 001301e0
MetaData start address: 00d62248 (2436 bytes)
Types defined in this module
MT TypeDef Name
------------------------------------------------------------------------------
0013381c 0x02000002 Wuhong.SOSTest.Program
00133918 0x02000003 Wuhong.SOSTest.Complex
Types referenced in this module
MT TypeRef Name
------------------------------------------------------------------------------
605ff5e8 0x01000001 System.Object
606075f4 0x01000013 System.Console
60601ae0 0x01000015 System.Threading.Monitor
EEClass: 001314cc
Module: 00132e9c
Name: Wuhong.SOSTest.Complex
mdToken: 4050d2302000003
File: F:\Wuhong.SOSTest\bin\Debug\Wuhong.SOSTest.exe
BaseSize: 0x18
ComponentSize: 0x0
Slots in VTable: 12
Number of IFaces in IFaceMap: 0
--------------------------------------
MethodDesc Table
Entry MethodDesc JIT Name
0013c068 001338fc NONE Wuhong.SOSTest.Complex.ToString()
6050e2e0 602e493c PreJIT System.Object.Equals(System.Object)
6050e1f0 602e495c PreJIT System.Object.GetHashCode()
60591600 602e4970 PreJIT System.Object.Finalize()
0013c030 0013388c JIT Wuhong.SOSTest.Complex.set_Real(Double)
0013c038 0013389c NONE Wuhong.SOSTest.Complex.get_Real()
0013c040 001338ac JIT Wuhong.SOSTest.Complex.set_Imaginary(Double)
0013c048 001338bc NONE Wuhong.SOSTest.Complex.get_Imaginary()
0013c050 001338cc JIT Wuhong.SOSTest.Complex..ctor(Double, Double)
0013c058 001338dc NONE Wuhong.SOSTest.Complex.Multiply(Wuhong.SOSTest.Complex)
0013c060 001338ec JIT Wuhong.SOSTest.Complex.MultiplyBySelf()
0013c070 00133908 NONE Wuhong.SOSTest.Complex.Clone()
- 查看对象
OS Thread Id: 0x2e2c (11820)
Child SP IP Call Site
0028f040 002902aa Wuhong.SOSTest.Complex.MultiplyBySelf()
PARAMETERS:
this (0x0028f09c) = 0x01b0b22c
LOCALS:
0x0028f098 = 0x02bf8098
0x0028f094 = 0x00000000
0x0028f090 = 0x00000001
0x0028f08c = 0x01b0b22c
0x0028f088 = 0x00000000
0028f0e0 002900f4 Wuhong.SOSTest.Program.Main(System.String[])
PARAMETERS:
args (0x0028f0f8) = 0x01b0b210
LOCALS:
0x0028f0f0 = 0x00000000
0x0028f0e8 = 0x00000000
0x0028f0e4 = 0x01b0b22c
0028f360 619f21bb [GCFrame: 0028f360]
Name: Wuhong.SOSTest.Complex
MethodTable: 00133918
EEClass: 001314cc
Size: 24(0x18) bytes
File: F:\Wuhong.SOSTest\bin\Debug\Wuhong.SOSTest.exe
Fields:
MT Field Offset Type VT Attr Value Name
605fa380 4000001 4 System.Double 1 instance 1.000000 <Real>k__BackingField
605fa380 4000002 c System.Double 1 instance 2.000000 <Imaginary>k__BackingField
Name: System.Double
MethodTable: 605fa380
EEClass: 60335424
Size: 16(0x10) bytes
File: C:\Windows\Microsoft.Net\assembly\GAC_32\mscorlib\v4.0_4.0.0.0__b77a5c561934e089\mscorlib.dll
Fields:
MT Field Offset Type VT Attr Value Name
605fa380 40003e5 0 System.Double 1 instance 0.000000 m_value
605fa380 40003e6 b28 System.Double 1 shared static NegativeZero
>> Domain:Value 003e16b0:NotInit <<
Name: System.String[]
MethodTable: 605b6c28
EEClass: 60339698
Size: 16(0x10) bytes
Array: Rank 1, Number of elements 0, Type CLASS
Element Methodtable: 605ff9ac
- 查看代码
ilAddr = 00d620ec
IL_0000: nop
IL_0001: ldarg.0
IL_0002: call Wuhong.SOSTest.Complex::get_Real
IL_0007: ldarg.1
IL_0008: callvirt Wuhong.SOSTest.Complex::get_Real
IL_000d: mul
IL_000e: ldarg.0
IL_000f: call Wuhong.SOSTest.Complex::get_Imaginary
IL_0014: ldarg.1
IL_0015: callvirt Wuhong.SOSTest.Complex::get_Imaginary
IL_001a: mul
IL_001b: sub
IL_001c: ldarg.0
IL_001d: call Wuhong.SOSTest.Complex::get_Real
IL_0022: ldarg.1
IL_0023: callvirt Wuhong.SOSTest.Complex::get_Imaginary
IL_0028: mul
IL_0029: ldarg.0
IL_002a: call Wuhong.SOSTest.Complex::get_Imaginary
IL_002f: ldarg.1
IL_0030: callvirt Wuhong.SOSTest.Complex::get_Real
IL_0035: mul
IL_0036: add
IL_0037: newobj Wuhong.SOSTest.Complex::.ctor
IL_003c: stloc.0
IL_003d: ldstr "{0} * {1} = {2}"
IL_0042: ldarg.0
IL_0043: ldarg.1
IL_0044: ldloc.0
IL_0045: call System.Console::WriteLine
IL_004a: nop
IL_004b: ldloc.0
IL_004c: stloc.1
IL_004d: br.s IL_004f
IL_004f: ldloc.1
IL_0050: ret
Normal JIT generated code
Wuhong.SOSTest.Complex.MultiplyBySelf()
Begin 00290230, size 199
00290230 55 push ebp
00290231 8BEC mov ebp,esp
00290233 57 push edi
00290234 56 push esi
00290235 53 push ebx
00290236 81EC8C000000 sub esp,8Ch
0029023C 8BF1 mov esi,ecx
0029023E 8D7DB4 lea edi,[ebp-4Ch]
00290241 B910000000 mov ecx,10h
00290246 33C0 xor eax,eax
00290248 F3AB rep stos dword ptr es:[edi]
0029024A 8BCE mov ecx,esi
0029024C 33C0 xor eax,eax
0029024E 8945E4 mov dword ptr [ebp-1Ch],eax
00290251 894DC4 mov dword ptr [ebp-3Ch],ecx
00290254 833D3C31130000 cmp dword ptr ds:[0013313Ch],0
0029025B 7405 je 00290262
0029025D E8B961A161 call 61CA641B (JitHelp: CORINFO_HELP_DBG_IS_JUST_MY_CODE)
00290262 33D2 xor edx,edx
00290264 8955BC mov dword ptr [ebp-44h],edx
00290267 33D2 xor edx,edx
00290269 8955B4 mov dword ptr [ebp-4Ch],edx
0029026C C745B000000000 mov dword ptr [ebp-50h],0
00290273 33D2 xor edx,edx
00290275 8955C0 mov dword ptr [ebp-40h],edx
00290278 90 nop
00290279 8B4DC4 mov ecx,dword ptr [ebp-3Ch]
0029027C 8B01 mov eax,dword ptr [ecx]
0029027E 8B4028 mov eax,dword ptr [eax+28h]
00290281 FF5008 call dword ptr [eax+8]
00290284 8945AC mov dword ptr [ebp-54h],eax
00290287 8B45AC mov eax,dword ptr [ebp-54h]
0029028A 8945C0 mov dword ptr [ebp-40h],eax
0029028D 33D2 xor edx,edx
0029028F 8955BC mov dword ptr [ebp-44h],edx
00290292 33D2 xor edx,edx
00290294 8955B8 mov dword ptr [ebp-48h],edx
00290297 8B45C4 mov eax,dword ptr [ebp-3Ch]
0029029A 8945B4 mov dword ptr [ebp-4Ch],eax
0029029D 8D55B8 lea edx,[ebp-48h]
002902A0 8B4DB4 mov ecx,dword ptr [ebp-4Ch]
002902A3 E808DE2F60 call 6058E0B0 (System.Threading.Monitor.Enter(System.Object, Boolean ByRef), mdToken: 0600159a)
002902A8 90 nop
002902A9 90 nop
002902AA 8B4DC4 mov ecx,dword ptr [ebp-3Ch]
002902AD E8BEBDEAFF call 0013C070 (Wuhong.SOSTest.Complex.Clone(), mdToken: 0600000b)
002902B2 8945A8 mov dword ptr [ebp-58h],eax
002902B5 8B45A8 mov eax,dword ptr [ebp-58h]
002902B8 8945BC mov dword ptr [ebp-44h],eax
002902BB 8B45C4 mov eax,dword ptr [ebp-3Ch]
002902BE 8945A4 mov dword ptr [ebp-5Ch],eax
002902C1 8B4DBC mov ecx,dword ptr [ebp-44h]
002902C4 3909 cmp dword ptr [ecx],ecx
002902C6 E86DBDEAFF call 0013C038 (Wuhong.SOSTest.Complex.get_Real(), mdToken: 06000004)
002902CB DD5D9C fstp qword ptr [ebp-64h]
002902CE 8B4DBC mov ecx,dword ptr [ebp-44h]
002902D1 3909 cmp dword ptr [ecx],ecx
002902D3 E860BDEAFF call 0013C038 (Wuhong.SOSTest.Complex.get_Real(), mdToken: 06000004)
002902D8 DD5D94 fstp qword ptr [ebp-6Ch]
002902DB DD459C fld qword ptr [ebp-64h]
002902DE DC4D94 fmul qword ptr [ebp-6Ch]
002902E1 DD5D8C fstp qword ptr [ebp-74h]
002902E4 8B4DBC mov ecx,dword ptr [ebp-44h]
002902E7 3909 cmp dword ptr [ecx],ecx
002902E9 E85ABDEAFF call 0013C048 (Wuhong.SOSTest.Complex.get_Imaginary(), mdToken: 06000006)
002902EE DD5D84 fstp qword ptr [ebp-7Ch]
002902F1 8B4DBC mov ecx,dword ptr [ebp-44h]
002902F4 3909 cmp dword ptr [ecx],ecx
002902F6 E84DBDEAFF call 0013C048 (Wuhong.SOSTest.Complex.get_Imaginary(), mdToken: 06000006)
002902FB DD9D7CFFFFFF fstp qword ptr [ebp+FFFFFF7Ch]
00290301 DD4584 fld qword ptr [ebp-7Ch]
00290304 DC8D7CFFFFFF fmul qword ptr [ebp+FFFFFF7Ch]
0029030A DC6D8C fsubr qword ptr [ebp-74h]
0029030D 83EC08 sub esp,8
00290310 DD1C24 fstp qword ptr [esp]
00290313 8B4DA4 mov ecx,dword ptr [ebp-5Ch]
00290316 E815BDEAFF call 0013C030 (Wuhong.SOSTest.Complex.set_Real(Double), mdToken: 06000003)
0029031B 90 nop
0029031C 8B45C4 mov eax,dword ptr [ebp-3Ch]
0029031F 898578FFFFFF mov dword ptr [ebp+FFFFFF78h],eax
00290325 8B4DBC mov ecx,dword ptr [ebp-44h]
00290328 3909 cmp dword ptr [ecx],ecx
0029032A E809BDEAFF call 0013C038 (Wuhong.SOSTest.Complex.get_Real(), mdToken: 06000004)
0029032F DD9D70FFFFFF fstp qword ptr [ebp+FFFFFF70h]
00290335 8B4DBC mov ecx,dword ptr [ebp-44h]
00290338 3909 cmp dword ptr [ecx],ecx
0029033A E809BDEAFF call 0013C048 (Wuhong.SOSTest.Complex.get_Imaginary(), mdToken: 06000006)
0029033F DD9D68FFFFFF fstp qword ptr [ebp+FFFFFF68h]
00290345 DD8570FFFFFF fld qword ptr [ebp+FFFFFF70h]
0029034B DC8D68FFFFFF fmul qword ptr [ebp+FFFFFF68h]
00290351 D80DCC032900 fmul dword ptr ds:[002903CCh]
00290357 83EC08 sub esp,8
0029035A DD1C24 fstp qword ptr [esp]
0029035D 8B8D78FFFFFF mov ecx,dword ptr [ebp+FFFFFF78h]
00290363 E8D8BCEAFF call 0013C040 (Wuhong.SOSTest.Complex.set_Imaginary(Double), mdToken: 06000005)
00290368 90 nop
00290369 90 nop
0029036A 90 nop
0029036B C745E000000000 mov dword ptr [ebp-20h],0
00290372 C745E4FC000000 mov dword ptr [ebp-1Ch],0FCh
00290379 68B7032900 push 2903B7h
0029037E EB00 jmp 00290380
00290380 0FB645B8 movzx eax,byte ptr [ebp-48h]
00290384 85C0 test eax,eax
00290386 0F94C0 sete al
00290389 0FB6C0 movzx eax,al
0029038C 8945B0 mov dword ptr [ebp-50h],eax
0029038F 837DB000 cmp dword ptr [ebp-50h],0
00290393 7509 jne 0029039E
00290395 8B4DB4 mov ecx,dword ptr [ebp-4Ch]
00290398 E8EB2A7661 call 619F2E88 (System.Threading.Monitor.Exit(System.Object), mdToken: 0600159b)
0029039D 90 nop
0029039E 58 pop eax
0029039F FFE0 jmp eax
002903A1 90 nop
002903A2 FF75C4 push dword ptr [ebp-3Ch]
002903A5 8B0D3020B002 mov ecx,dword ptr ds:[02B02030h] ("{0} MultiplyBySelf = {1}")
002903AB 8B55BC mov edx,dword ptr [ebp-44h]
002903AE E8C1D12F60 call 6058D574 (System.Console.WriteLine(System.String, System.Object, System.Object), mdToken: 0600091b)
002903B3 90 nop
002903B4 90 nop
002903B5 EB09 jmp 002903C0
002903B7 C745E400000000 mov dword ptr [ebp-1Ch],0
002903BE EBE1 jmp 002903A1
002903C0 90 nop
002903C1 8D65F4 lea esp,[ebp-0Ch]
002903C4 5B pop ebx
002903C5 5E pop esi
002903C6 5F pop edi
002903C7 5D pop ebp
002903C8 C3 ret
MethodDesc: 603685ac
Method Name: System.Console.WriteLine(System.String, System.Object, System.Object)
Class: 6033c734
MethodTable: 606075f4
mdToken: 6f101cb0600091b
Module: 602e1000
IsJitted: yes
CodeAddr: 6058d574
Transparency: Transparent
- 断点
MethodDesc = 001338dc
Failed to set code notification
Adding pending breakpoints...
转载于:https://www.cnblogs.com/wuhong/archive/2011/04/28/2031740.html
利用SOS分析调试托管代码--(1)相关推荐
- CLR探索系列:Windbg+SOS动态调试分析托管代码
http://blog.csdn.net/garyye/article/details/4788070 在使用VS进行托管应用程序的调试的时候,有的时候总感觉有些力不从心.譬如查看一个托管堆或者计 ...
- 利用SOS扩展库进入高阶.NET6程序的调试
有时候我们可能想深入到程序的运行核心,去观察下内存分配情况以及堆栈内保存的东东,那么作为编程新贵的底层框架.NET6,又为我们提供了什么可用的观测工具呢? 1.SOS 扩展是什么? SOS扩展库是Wi ...
- 利用Console来调试JS程序、Console用法总结
利用Console来调试JS程序.Console用法总结(1) 一 .什么是 Console Console 是用于显示 JS和 DOM 对象信息的单独窗口.并且向 JS 中注入1个 console ...
- MPB:清华杨云锋组-利用GeoChip分析环境微生物功能基因群落结构
为进一步提高<微生物组实验手册>稿件质量,本项目新增大众评审环节.文章在通过同行评审后,采用公众号推送方式分享全文,任何人均可在线提交修改意见.公众号格式显示略有问题,建议电脑端点击文末阅 ...
- mysql调试事件_mysql日志管理分析调试实例_mysql
以下的文章主要介绍的是mysql 操作日志查看的实际操作步骤以及对其实际操作步骤的具体描述,假如你在实际操作中遇到相似的情况,但是你却不知道对其如何正确的解决,那么以下的文章对你而言一定是良师益友. ...
- emacs c语言,如何利用Emacs来调试C++程序
俗话说,Emacs是神的编辑器,而Vim是编辑器之神.高手程序员都是用这两样神器进行开发.本人觉得,Emacs之所以厉害,是因为许多在其他编辑器下必须用鼠标点选很多步的操作,在Emacs下都可以通过键 ...
- matlab判断能控和能观,实验三 利用Matlab分析能控性和能观性
实验三 利用Matlab分析能控性和能观性 实验目的:熟练掌握利用Matlab中相关函数分析系统能控能观性.求取两种标准型.系统的结构分解的方法. 实验内容: 1.能控性与能观性分析中常用的有关Mat ...
- java反射是运行时,Java反射(三)在运行时利用反射分析对象
在运行时利用反射分析对象,其实就是利用反射来获得或者设置类的域.举例如下: 有一个Student类: package testreflection; public class Student { pr ...
- 利用python分析电商_Python实现爬取并分析电商评论
现如今各种APP.微信订阅号.微博.购物网站等网站都允许用户发表一些个人看法.意见.态度.评价.立场等信息.针对这些数据,我们可以利用情感分析技术对其进行分析,总结出大量的有价值信息.例如对商品评论的 ...
最新文章
- TCP/IP详解--第一章
- python求100以内的素数和(只作新手参考)
- WCF学习之旅----基础篇之EnterpriseServices
- (十一)JAVA springboot ssm b2b2c多用户商城系统 - SSO单点登录之OAuth2.0登录流程(2)
- FLEX与JAVA不通讯错误与解决方法(转)
- PPT达人速成记 WPS三步打造演示母版
- Oracle、plsql安装以及使用教程
- Java定时任务调度框架
- nginx 版本升级
- 华为nova6se怎么升级鸿蒙,华为EMUI11支持哪些手机
- Oracle Database 11g Release 2认证支持的操作系统版本跨度很大
- 基础的JavaScript编码规范
- NAS如何进行磁盘碎片整理?
- Python 头哥实验题目(一、二、三)
- 集合框架详解之Set、Map接口与实现类
- VsCode tab 不能缩进
- MaxWell原理概述
- mycat全局表一致性检查
- IBM服务器找不到硬盘怎么设置,关于IBM x3400服务器找不到硬盘(RAID0)問題
- 计算机仿真实验结果的评价与分析,计算机仿真分析实验报告