一:背景 1. 讲故事 前些天有位朋友找到我,说他们的程序崩溃了,也自己分析了下初步结果,让我帮忙再确认下,既然让我确认,那就开始dump分析之旅吧。 二:WinDbg 分析 1. 为什么会崩溃 windbg 有一个强大之处就是带有一个自动化的分析命令 !analyze -v 可以帮助我们快速的分析
前几天,一位朋友找到我,向我求助。他们的程序崩溃了,经过初步分析,他怀疑是Avalonia框架的问题。于是我决定使用WinDbg进行dump分析来确认崩溃的原因。
这是一个关于WinDbg分析的故事。
朋友发现他们的程序崩溃了,经过初步分析,怀疑是Avalonia框架的问题,于是找到我帮忙确认。
通过使用WinDbg的命令
!analyze -v
进行分析,得到异常码
通过查看异常上下文,定位到RaiseException的父函数,并从异常信息全局变量
g_SavedExceptionInfo
中获得真实的异常码
根据汇编代码分析,崩溃是由Avalonia框架的
RequestCompositionBatchCommitAsync
返回null引起的。进一步搜索代码,发现这是Avalonia的一个bug。
在类中找到会设置null的方法,确认了这是Avalonia框架的问题。而该版本是非常新的11.1.0.0版本。
鉴于是Avalonia框架的问题,并且该版本非常新,只能向Avalonia的官方提交issue,解决该bug。
这次的生产事故分析让我对Avalonia框架有了更深入的了解。对Avalonia是否开始替代WPF在工控行业中的应用也产生了好奇。但就目前来看,稳定性方面与WPF相比还有一定差距。期待Avalonia未来能发布更加稳定的版本。
云读小说 官网版 1.0.3 19.39 MB
下载
湘ICP备2022002427号-10 湘公网安备:43070202000427号
© 2013~2024 haote.com 好特网