崩溃捕捉的dump没有提供堆栈的问题
前两天客户现场出现了崩溃,但是程序捕捉生成的dump文件大小为0kb,没有办法只能通过任务管理器创建转储文件进行分析。
输入
!analyze -v
命令输出如下:
通过此堆栈信息看不出任何崩溃的具体原因。再输入~*kv
命令查看所有线程的堆栈:
可以看到崩溃的线程,输入~56s
切换到该线程,再输入kv
查看该线程的堆栈如下:
注意UnhandledExceptionFilterEx函数只有一个参数,也就是EXCEPTION_POINTERS指针,输入dd 0fe8e67c
查看该地址的内存:
我们再来看EXCEPTION_POINTERS结构:
PEXCEPTION_RECORD结构定义如下:
第一个 dword 值表示异常记录, 输入.exr 0fe8e7bc
查看异常类型信息:
可以看到,该崩溃是由于对null地址写入造成的。
第二个 dword 值是上下文记录,再输入.cxr 0fe8e80c
查看该地址的上下文:
通过这个异常记录可以看到是调用memcpy出错的,再结合上面的异常类型,基本可以确定是调用memcpy给null地址写入数据时崩溃的。
输入 kv
命令以获得实际的异常的调用堆栈:
终于看到了熟悉的堆栈信息,输入.frame 1
进入具体的代码,可以看到memcpy的第一个参数值确实为null,也就是malloc失败,进一步分析发现是程序内存泄漏导致的。
分类:
异常诊断与调试
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· SQL Server 2025 AI相关能力初探
· Linux系列:如何用 C#调用 C方法造成内存泄露
· AI与.NET技术实操系列(二):开始使用ML.NET
· 记一次.NET内存居高不下排查解决与启示
· 探究高空视频全景AR技术的实现原理
· 阿里最新开源QwQ-32B,效果媲美deepseek-r1满血版,部署成本又又又降低了!
· 单线程的Redis速度为什么快?
· SQL Server 2025 AI相关能力初探
· AI编程工具终极对决:字节Trae VS Cursor,谁才是开发者新宠?
· 展开说说关于C#中ORM框架的用法!