最近因团队下一个开发工程师的WPF应用存在偶尔卡顿的现象,重新温习了下windbg的知识,此次记录备忘下,以下是整理的思维导图,有点乱,哈哈。
FAQ
运行!address -summary时,提示错误 ntdll.dll not found
查过网上不少文章没解决,一直以为是symbol的问题。 后来研究发现,程序是32位的,并运行在64位的win10专业版,并用32位的任务管理器去dump文件导致,正确的做法是用64位的任务管理器去dump,然后用64位的windbg打开。但这里会带来另外一个问题。
.loadby sos clr
The call to LoadLibrary(C:\Windows\Microsoft.NET\Framework\v4.0.30319\sos.dll) failed, Win32 error 0n193
"%1 不是有效的 Win32 应用程序。"
因为.net用的是32位的,而这个dump文件是用64位任务管理器dump的,所以无法加载sos, 正确的解决办法就是,再用32位的管理器去dump,用32位的windbg打开即可解决。所以针对这种特殊情况,要做两次不同的dump, 分别进行分析,前者可以分析unmanaged的, 后者分析managed.
Analyze
请直接看看下面的文章,都写的很全很详细。
参考的文章:
https://www.cnblogs.com/zhenjin-huaxiazongdai/p/17512898.htmlhttps://www.cnblogs.com/zhenjin-huaxiazongdai/p/17512898.html
Windows SDK - Windows 应用开发 | Microsoft DeveloperWindows SDK for Windows 11 包含可在创建在 Windows 上运行的应用时使用的标头、库和工具。https://developer.microsoft.com/zh-cn/windows/downloads/windows-sdk/ 记一次 .NET 某游戏服务后端 内存暴涨分析_windbg .net 内存-CSDN博客文章浏览阅读219次。可以仔细想一想,没有被 GC 回收,从侧面也表明它可能刚分配不久,并且是一个局部变量,既然是局部变量,就可以反向找到是哪一个线程分配的,如果线程栈还残留着返回地址信息,就可以反推出是哪一个方法,有了这个思路,接下来就可以动手挖了。按照编码人的习惯,肯定是某一个集合,可以用内存搜索解决。0:000>!从卦中看,果然用的是一个集合,万事开头难,接下来继续反向搜索,如果线程栈还有残留的话,就可以找到它所属的线程栈。0:000>!从卦中的信息来看,它是属于0号线程,如果你不相信的话,可以拿417d1000。_windbg .net 内存
https://blog.csdn.net/huangxinchen520/article/details/131700140
Win Dbg 分析.NET 内存占用情况 - 知乎使用WinDbg可以查看正在运行的进程中未释放的内存。 下载和安装Debugging Tools for Windows。可以从Microsoft官网下载,选择与目标系统版本相匹配的版本。打开WinDbg,并将其附加到目标进程。可以使用“File”菜…https://zhuanlan.zhihu.com/p/661170598?utm_id=0
用Windbg来分析.Net程序的dump-腾讯云开发者社区-腾讯云介绍1. 什么是WindbgWinDbg是微软发布的一款相当优秀的源码级(source-level)调试工具,可以用于Kernel模式调试和用户模式调试,还可以调试Dump文件。WinDbg是微软很重要的诊断调试工具: 可以查看源代码、设置断点、查看变量, 查看调用堆栈及内存情况。Dump文件是进程的内存镜像,...https://cloud.tencent.com/developer/article/1113533?areaSource=102001.8&traceId=x75ve9MZcSMAHWxGHdwxM https://www.cnblogs.com/tianqing/p/13197382.html
https://www.cnblogs.com/tianqing/p/13197382.html
WinDbg排查.net性能或内存问题步骤简述_memoscope.net-CSDN博客文章浏览阅读2.6k次。安装步骤:第一步当然是安装了,需要注意的是,千万不要搜索 windbg 然后下载,搜索到的windbg安装文件,都不是我们想要的,真正的windbg,实际上是在微软的SDK里,下载链接在这里:https://developer.microsoft.com/en-US/windows/downloads/windows-10-sdk点击这个网页里的 DOWNLOAD THE .ISO,文件..._memoscope.nethttps://blog.csdn.net/youbl/article/details/88893182
https://www.cnblogs.com/hzwanglw/p/13285499.htmlhttps://www.cnblogs.com/hzwanglw/p/13285499.html
WinDbg 入门三:调试Dump,爆内存的问题-.net程序调试-少有人走的路WinDbg 入门三:调试Dump,爆内存的问题是少有人走的路中一篇关于的文章,欢迎您阅读和评论,少有人走的路http://www.skcircle.com/?id=1876
记一次 .NET 医院CIS系统 内存溢出分析_c# iis项目内存溢出排查方法-CSDN博客文章浏览阅读247次。一:背景1. 讲故事前几天有位朋友加wx求助说他的程序最近总是出现内存溢出,很崩溃,如下图:和这位朋友聊下来,发现他也是搞医疗的,哈哈,.NET 在医疗方面还是很有市场的????????????,不过对于内存方面出的问题,我得先祈祷一下千万不要是非托管。。。废话不多说,上 windbg,看能不能先救个急。二: windbg 分析1. 找出异常对象如果内存溢出了,大家应该知道 C# 会抛一个 OutOfMemoryException 异常,而且还会附加到那个执行线程上,所以先用 !t 命令调出_c# iis项目内存溢出排查方法https://blog.csdn.net/huangxinchen520/article/details/116517869?spm=1001.2014.3001.5502
Where's your leak at? [Using WinDbg, SOS, and GCRoot to diagnose a .NET memory leak] - The blog of dlaa.meWhere's your leak at? [Using WinDbg, SOS, and GCRoot to diagnose a .NET memory leak]https://dlaa.me/blog/post/9471347
.net - Use Windbg to quickly analyze application memory leaks - 个人文章 - SegmentFault 思否Windbg program debugging is a necessary skill for advanced development of .NET. It analyzes memory leaks, analyzes high CPU usage, analyzes thread ...https://segmentfault.com/a/1190000041008324/en