WinDbg基础(1)
来源:互联网 发布:游戏竞猜网站源码 编辑:程序博客网 时间:2024/06/01 07:11
加载符号
如果Symbol文件和对应的dll或exe在同一目录下,那么在调试的过程中,当dll或exe文件被加载的时候,对应的Symbol文件也会自动加载,所以一般情形下我们不需要设置Symbol路径。如果pdb文件和dll文件不再同一目录下,我们也可以手动的设置Symbol的路径。一般设置Symbol的方式有两种:
1. 通过菜单设置
注意:设置了Symbol路径需要重新加载,否则设置的Symbol路径无效。
Symbol路径的设置同样可以指定多个路径,多个路径通过分号(;)隔开
2. 通过命令设置:
0:004> .sympath d:\symbol
Symbol search path is: d:\symbol
Expanded Symbol search path is: d:\symbol
************* Symbol Path validation summary **************
Response Time (ms) Location
OK d:\symbol
0:004> .reload
Reloading current modules
........................
0:004> .sympath+ d:\symbol2
Symbol search path is: d:\symbol;d:\symbol2
Expanded Symbol search path is: d:\symbol;d:\symbol2
加载SOS
要想调试托管程序,调试器需要加载SOS或者SOSEX扩展程序。如果是分析Dump文件,还需要加载Dump文件mscordacwks。
SOS和SOSEX都是用来调试NET程序的扩展DLL,其中SOS包含在framework的安装目录下:
%windir%\microsoft.Net\<architecture>\<version>\sos.dll
SOSEX是Steve Johnson写的,这个dll的最新版本下载可以在该作者的网址上下载:
http://www.stevestechspot.com/
加载扩展dll的命令是:
0:004> .load c:\Windows\Microsoft.NET\Framework\v2.0.50727\SOS.dll
加载了SOS之后还需要一个加载同文件夹下的CLR.dll,才能使用扩展命令。
在CLR 1.1和2.0的版本还不是使用CLR.dll,这个时候用的是mscorwks.dll。根据framework版本的不同,还有一个简单的加载方式:
Framework 1.0 & 2.0 & 3.0 & 3.5
Framework 4.0 & 4.5
.loadby sos mscorwks
.loadby sos clr
对于SOSEX的加载只能使用.load的方式,所以建议读者可以将SOSEX.dll下载到Windbg的安装目录下,这样便于加载SOSEX。
对于SOSEX的加载只能使用.load的方式,所以建议读者可以将SOSEX.dll下载到Windbg的安装目录下,这样便于加载SOSEX。
当调试从其他机器打出的dump文件的时候,SOS和mscordacwks版本的问题一直让人纠结,一般可以有三种解决方式:
a. 设置调试符号路径,并连接到Microsoft的公共Symbol server
b. 装一个与创建dump文件一样版本的framework
c. 从创建dump文件的机器上获取对应的SOS和mscordacwks
一般都是采用第三种方式,如果是客户创建的dump,在客户给我们dump的时候可以顺便要一下SOS和mscordacwks;第二种办法往往都不在正常人的考虑范围;至于第一种办法是在获取不到对应的SOS和mscordacwks的时候采取的办法,这个办法唯一的缺点就是从Microsoft Symbol Server上下载对应的Symbol太慢。
值得注意的是,通过启动程序建立的调试会话在第一次中断的时候还没有加载CLR或MSCORWKS,这个时候是无法通过loadby找到对应的CLR或MSCORWKS模块,通过命令g继续执行等加载了CLR或MSCORWKS模块就可以使
.Loadby
0:000> .loadby sos clr
Unable to find module 'clr'
0:000> g
ModLoad: 762c0000 76360000 C:\Windows\syswow64\ADVAPI32.dll
ModLoad: 74d40000 74dec000 C:\Windows\syswow64\msvcrt.dll
ModLoad: 763f0000 76409000 C:\Windows\SysWOW64\sechost.dll
ModLoad: 753f0000 754e0000 C:\Windows\syswow64\RPCRT4.dll
ModLoad: 74ce0000 74d40000 C:\Windows\syswow64\SspiCli.dll
ModLoad: 74cd0000 74cdc000 C:\Windows\syswow64\CRYPTBASE.dll
ModLoad: 6ff80000 6fffa000 C:\Windows\Microsoft.NET\Framework\v4.0.30319\mscoreei.dll
ModLoad: 74ee0000 74f37000 C:\Windows\syswow64\SHLWAPI.dll
ModLoad: 76360000 763f0000 C:\Windows\syswow64\GDI32.dll
ModLoad: 751a0000 752a0000 C:\Windows\syswow64\USER32.dll
ModLoad: 74fc0000 74fca000 C:\Windows\syswow64\LPK.dll
ModLoad: 750f0000 7518d000 C:\Windows\syswow64\USP10.dll
ModLoad: 74e80000 74ee0000 C:\Windows\SysWOW64\IMM32.DLL
ModLoad: 754e0000 755ac000 C:\Windows\syswow64\MSCTF.dll
ModLoad: 6eec0000 6f552000 C:\Windows\Microsoft.NET\Framework\v4.0.30319\clr.dll
ModLoad: 6ede0000 6eeb3000 C:\Windows\SysWOW64\MSVCR110_CLR0400.dll
(c7c.b58): Unknown exception - code 04242420 (first chance)
ModLoad: 6de20000 6eddf000 C:\Windows\assembly\NativeImages_v4.0.30319_32\mscorlib\51e2934144ba15628ba5a31be2dae7dc\mscorlib.ni.dll
ModLoad: 76be0000 76d3c000 C:\Windows\syswow64\ole32.dll
ModLoad: 6d430000 6d49e000 C:\Windows\Microsoft.NET\Framework\v4.0.30319\clrjit.dll
(c7c.508): Break instruction exception - code 80000003 (first chance)
*** ERROR: Symbol file could not be found. Defaulted to export symbols for C:\Windows\syswow64\KERNEL32.dll -
eax=7ef9c000 ebx=00000000 ecx=00000000 edx=7721f7ea esi=00000000 edi=00000000
eip=7719000c esp=04a5ff0c ebp=04a5ff38 iopl=0 nv up ei pl zr na pe nc
cs=0023 ss=002b ds=002b es=002b fs=0053 gs=002b efl=00000246
ntdll!DbgBreakPoint:
7719000c cc int 3
0:004> .loadby sos clr
- WinDbg基础(1)
- WINDBG基础命令文章1
- Windbg培训笔记之一(基础篇)
- Windbg培训笔记之一(基础篇)
- 39.windbg-CPU基础(dg)
- WinDbg基础(3)Adplus参数设置
- windbg调试基础
- WinDBG基础----了解Symbols
- [Windbg基础]-了解Symbols
- WinDbg使用基础
- windbg调试基础
- windbg调试基础
- WinDbg基础(2)——常用指令
- WinDbg配置和使用基础
- WinDbg配置和使用基础
- Basic Windbg - 2 CLR基础
- WinDbg配置和使用基础
- WinDbg配置和使用基础
- 高性能JavaScript学习笔记
- MVC+Ninject+三层架构+代码生成 -- 总结(六、邏輯層)
- fastdfs+nginx+fastdfs-nginx-module
- 【现学现卖】IntelliJ+EmmyLua 开发调试Unity中Xlua
- java集合框架简介
- WinDbg基础(1)
- Android 插件化原理解析——插件加载机制
- JNI学习
- Windows环境下,为Theano手动安装MinGW和libpython
- DLA
- 图像处理项目-车标识别
- Android 仿微信的图片选择器ImageSelector的使用
- The processing instruction must begin with the name of the target
- javax.management.InstanceNotFoundException: com.alibaba.druid:type=DruidDataSourceStat