Microsoft Dynamics Ax异常崩溃时的问题排查

Microsoft Dynamics Ax 出现 application error(10000)问题排查

在日常使用中,Microsoft Dynamics Ax的AOS出现application error(10000)的错误简直太常见了,而且这个错误总是异常崩溃时产生,很难定位错误原因,如果只是偶尔出现,基本不影响使用,倒是问题不大,电脑都有蓝屏的时候,更何况软件服务,如果出现频率较高,那基本就是一些程序代码造成的,这个时候就需要去定位错误代码了

  1. 获取服务崩溃时的dump文件,获取这个文件的方式有很多,不再细说
  2. 用windbg加载捕获到的dump文件
  3. 输入命令kv

Child-SP RetAddr : Args to Child : Call Site
00000000040b4c40 00000001406ffc75 : fffffffffffffffe 0000000000000001 0000000000000001 00000001403bc721 : Ax32Serv!cqlCursor::connection+0x14
00000000040b4c70 00000001406ffec6 : 000000001e84a7a0 000000001e56c720 0000000000000001 00000000040b50b0 : Ax32Serv!cqlCursor::DropTempDBTableInstance+0x75
00000000040b4eb0 00000001403b9771 : 0000000000000001 0000000000000001 00000000040b50b0 0000000140437346 : Ax32Serv!cqlCursor::Dispose+0x26
00000000040b4ee0 00000001403bc714 : 000000001e56c720 00000001404351f0 000000001ac20d28 00000001407d8d4b : Ax32Serv!cqlCursor::~cqlCursor+0x101
00000000040b4f60 0000000140369815 : 000000001e56c720 00000000194c0d00 000000001b912800 00000001407d8ead : Ax32Serv!cqlCursor::vector deleting destructor'+0x14
00000000
040b4f90 00000001403801d5 : 000000001e56c720 00000000040b6100 000000001e0bfe40 000000014058067b : Ax32Serv!cqlCursor::freeRef_AdHoc+0x35
00000000
040b4fc0 0000000140582026 : 00000000040b50b0 0000000000000006 00000000040b51a0 000000014049e2b1 : Ax32Serv!assignCursor+0x75
00000000
040b4ff0 0000000140582d95 : 00000000000000c8 0000000000000000 00000000040b51b0 00000000040b51a0 : Ax32Serv!CQLFreeVars+0x116
00000000
040b5040 0000000140430c43 : 000000001b912800 0000000000000005 0000000000000005 0000000000000005 : Ax32Serv!interpret::CQLEvalProc+0x715
00000000
040b52c0 000000014043370a : 0000000003720cc8 000007fe8f8fc3a1 0000000018ebfb90 000000001b913940 : Ax32Serv!interpret::doEval+0x3e3
00000000
040b55c0 0000000140434517 : 0000000018ebfb00 000000001e522736 000000001e665e60 0000000000930200 : Ax32Serv!interpret::evalFunc+0x2ca
00000000
040b56a0 00000001404351f0 : fffffffffffffffe 000000014065167a fffffffffffffffe 00000000040b6190 : Ax32Serv!interpret::xal_eval_func+0xc77
00000000
040b6030 000000014049e127 : 000000001b912800 000000001b912800 00000000040b6190 00000000040b7000 : Ax32Serv!interpret::xal_eval_id+0xd0
00000000
040b6070 000000014049e268 : 000000001b912800 0000000000000000 000000001b912800 00000000040b70e0 : Ax32Serv!interpret::evalLoop+0x167
00000000
040b60d0 0000000140582b53 : 0000000000000001 0000000000000000 00000000040b6180 00000000`00000000 : Ax32Serv!interpret::eval+0x58

找到这一行
00000000040b55c0 0000000140434517 : 0000000018ebfb00 000000001e522736 000000001e665e60 0000000000930200 : Ax32Serv!interpret::evalFunc+0x2ca

输入命令 du 000000001e522736
00000000
1e522736 “saveBudgetCheckResultErrorWarnin”
00000000`1e522776 “gDetails”

输入命令 dd 00000000040b55c0+44
00000000
040b5604 000f554e 1b913940 00000000 00000000
00000000040b5614 00000000 00000000 00000000 00000000
00000000
040b5624 00000000 00000000 00000000 00000000
00000000040b5634 00000000 00000000 00000000 00000000
00000000
040b5644 00000000 ffffff00 00000000 1e665e60
00000000040b5654 00000000 fffffffe ffffffff 00000001
00000000
040b5664 00000000 1b913940 00000000 1e522736
00000000`040b5674 00000000 1b912800 00000000 040b7000

输入命令 ? 000f554e
Evaluate expression: 1004878 = 00000000`000f554e

这里就是Ax里的classid
用代码在job里查看类的名称 info(classid2name(1004878));

大体是这样的方式,里面具体的地址代表什么内容可以自行研究

最后我遇到过两次aos不停的崩溃情况,版本号是Ax2012R2 ,和 Ax2012R3,通过这种方式查看 到的错误都是系统的application类错误,这个显然是无法进行修改测试的,最后发现是使用一个视图造成的,在系统里如果使用了userinfo表做的视图,就有可能 引发系统不断崩溃,所以要显示用户姓名 的地方,还是老老实实的用dispaly方法,虽然不能让用户进行筛选了,但是可以避免aos崩溃,这个bug也是让人无语了。

原文地址: 这里写链接内容

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值