博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Windbg调试托管代码
阅读量:4970 次
发布时间:2019-06-12

本文共 1543 字,大约阅读时间需要 5 分钟。

  1. Windbg调试.net托管代码需要借助于SOS.dll,.Net 4.0的32位sos.dll的路径在C:\Windows\Microsoft.NET\Framework\v4.0.30319,64为的路径在C:\Windows\Microsoft.NET\Framework64\v4.0.30319,加载哪个版本的sos.dll要与调试的应用程序的位数一致。关于SOS调试扩展的详细介绍请参考:
  2. Windbg的可以通过Open Executable直接在windbg中启动程序调试,也可以通过Attach to a process attach到一个已经启动的进程进行调试,本例使用Open Executable方式调试程序
  3. 示例代码
    static void Main(string[] args)        {                   System.IO.FileSystemInfo fileSystemPath = GetFileSystemPath();            if (!fileSystemPath.Exists)            {                throw new System.IO.FileNotFoundException(fileSystemPath.FullName);            }                     Console.ReadLine();        } private static FileSystemInfo GetFileSystemPath()        {            FileInfo fileInfo = new FileInfo(@"x:\Dev\TempLibrary.mdb");                 return fileInfo;        }
  4. 在Windbg中选择Open Executable打开应用程序,
  5. 如何在某个函数中设置断点:
  • Open Executable的调试方法首先要执行sxe ld:clrjit命令,该命令的作用是表示当程序加载完clrjit.dll后中断到调试器,即在调试器中中断运行
  • 执行g命令,运行程序,当程序加载完clrjit.dll时就会中断
  • 执行.loadby sos clr命令加载扩展信息
  • 执行lm命令查看加载的所有模块,lmvm可以查看某个模块的详细信息,本例中执行lmvm Console1
  • 执行!Name2EE <模块名> <类型名或方法名> 命令获取模块中指定类型或方法的MethodTable结构和EEClass结构,本例中获取Program类的信息
  • 调用DumpMT –md <MethodTable地址>获取类中方法信息,本例中methodtable地址由name2ee命令获取
  • 执行!bpmd <模块名> <方法名>设置断点,本例中执行!bpmd Console1 Console1.Program.GetFileSystemPath
  • 执行命令g,运行到断点就会停止
如何查看变量信息:
  • !clrstack -a命令显示托管函数的参数和局部变量信息
  • !dumpheap –type 类型:显示堆中某类型变量的地址信息,然后使用!dumpobj address显示变量信息
如何分析内存泄露:
  • 执行!dumpheap命令可以打印出当前所有类型所占内存空间的大小
posted on
2015-02-06 12:51 阅读(
...) 评论(
...)

转载于:https://www.cnblogs.com/phenixyu/p/4276888.html

你可能感兴趣的文章
java 什么题目好做_用java做这些题目
查看>>
matlab sin函数 fft,matlab的fft函数的使用教程
查看>>
mysql adddate()函数
查看>>
mysql sin() 函数
查看>>
mysql upper() 函数
查看>>
单片机复位电路
查看>>
php json_decode失败,返回null
查看>>
oracle 分页
查看>>
助教学期总结
查看>>
绘制基本 图形之矩形与多边形
查看>>
3-day3-list-truple-map.py
查看>>
Edit控件显示多行文字
查看>>
JS第二周
查看>>
dataTable.NET的search box每輸入一個字母進行一次檢索的問題
查看>>
Python 文件处理
查看>>
邻接表详解
查看>>
服务器一:分布式服务器结构
查看>>
迭代dict的value
查看>>
eclipse package,source folder,folder区别及相互转换
查看>>
Py 可能是最全面的 python 字符串拼接总结(带注释版)
查看>>