Windbg分析程序崩溃实践案例
【问题描述】
结合实践案例,介绍利用Windbg 分析应用程序崩溃的常用命令及主要步骤。
【解决方案】
下载安装windbg及如何抓取dump文件不在本文介绍,可参考https://vip.kingdee.com/article/268420152696221184?productLineId=1。
设置Symbol路径,在菜单项File下点击Symbol File Path选项即可设置。
3.选择需要分析dump文件,在菜单项File下点击Open Crash Dump选项选择要分析的dump文件。
4.利用常用命令分析dump文件
1)加载常用扩展组件 sos,sosex
2)!pe 打印出发生在所有线程上的最后的异常,可以看出是堆栈溢出问题
3)~*e!clrstack 查看所有线程调用堆栈
分析结论:页面执行反审核操作,调用
Kingdee.K3.SCM.App.Pur.ServicePlugIn.Instock.AutoDeleteInStockWhenPayableUnAudit.EndOperationTransaction(Kingdee.BOS.Core.DynamicForm.PlugIn.Args.EndOperationTransactionArgs)方法,该方法又调用
-- Kingdee.K3.SCM.App.Pur.ServicePlugIn.Instock.AutoDeleteInStockWhenPayableUnAudit.DeleteInStock(Kingdee.BOS.Orm.DataEntity.DynamicObjectCollection, System.Collections.Generic.List`1)方法;该方法又调用
--Kingdee.K3.SCM.App.Pur.ServicePlugIn.Instock.AutoDeleteOutStockWhenInStockUnAudit.BeginOperationTransaction(Kingdee.BOS.Core.DynamicForm.PlugIn.Args.BeginOperationTransactionArgs) 方法,该方法又调用
--Kingdee.K3.SCM.App.Pur.ServicePlugIn.Instock.AutoDeleteOutStockWhenInStockUnAudit.DeleteOutStock(Kingdee.BOS.Orm.DataEntity.DynamicObjectCollection, System.Collections.Generic.List`1)方法,该方法又调用
--Kingdee.K3.SCM.App.Pur.ServicePlugIn.Instock.AutoDeleteInStockWhenPayableUnAudit.EndOperationTransaction(Kingdee.BOS.Core.DynamicForm.PlugIn.Args.EndOperationTransactionArgs)方法,该方法又调用
--Kingdee.K3.SCM.App.Pur.ServicePlugIn.Instock.AutoDeleteInStockWhenPayableUnAudit.DeleteInStock(Kingdee.BOS.Orm.DataEntity.DynamicObjectCollection, System.Collections.Generic.List`1)方法。
形成死循相互调用,导致引发栈溢出问题。
Windbg分析程序崩溃实践案例
本文2024-09-23 01:16:58发表“云星空知识”栏目。
本文链接:https://wenku.my7c.com/article/kingdee-k3cloud-144955.html