您的位置:首页 > 移动开发

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

2018-02-23 14:35 501 查看

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

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

获取服务崩溃时的dump文件,获取这个文件的方式有很多,不再细说

用windbg加载捕获到的dump文件

输入命令kv

Child-SP RetAddr : Args to Child : Call Site

00000000
040b4c40 00000001
406ffc75 : ffffffff
fffffffe 00000000
00000001 00000000
00000001 00000001
403bc721 : Ax32Serv!cqlCursor::connection+0x14

00000000
040b4c70 00000001
406ffec6 : 00000000
1e84a7a0 00000000
1e56c720 00000000
00000001 00000000
040b50b0 : Ax32Serv!cqlCursor::DropTempDBTableInstance+0x75

00000000
040b4eb0 00000001
403b9771 : 00000000
00000001 00000000
00000001 00000000
040b50b0 00000001
40437346 : Ax32Serv!cqlCursor::Dispose+0x26

00000000
040b4ee0 00000001
403bc714 : 00000000
1e56c720 00000001
404351f0 00000000
1ac20d28 00000001
407d8d4b : Ax32Serv!cqlCursor::~cqlCursor+0x101

00000000
040b4f60 00000001
40369815 : 00000000
1e56c720 00000000
194c0d00 00000000
1b912800 00000001
407d8ead : Ax32Serv!cqlCursor::
vector deleting destructor'+0x14

00000000
040b4f90 00000001
403801d5 : 00000000
1e56c720 00000000
040b6100 00000000
1e0bfe40 00000001
4058067b : Ax32Serv!cqlCursor::freeRef_AdHoc+0x35

00000000
040b4fc0 00000001
40582026 : 00000000
040b50b0 00000000
00000006 00000000
040b51a0 00000001
4049e2b1 : Ax32Serv!assignCursor+0x75

00000000
040b4ff0 00000001
40582d95 : 00000000
000000c8 00000000
00000000 00000000
040b51b0 00000000
040b51a0 : Ax32Serv!CQLFreeVars+0x116

00000000
040b5040 00000001
40430c43 : 00000000
1b912800 00000000
00000005 00000000
00000005 00000000
00000005 : Ax32Serv!interpret::CQLEvalProc+0x715

00000000
040b52c0 00000001
4043370a : 00000000
03720cc8 000007fe
8f8fc3a1 00000000
18ebfb90 00000000
1b913940 : Ax32Serv!interpret::doEval+0x3e3

00000000
040b55c0 00000001
40434517 : 00000000
18ebfb00 00000000
1e522736 00000000
1e665e60 00000000
00930200 : Ax32Serv!interpret::evalFunc+0x2ca

00000000
040b56a0 00000001
404351f0 : ffffffff
fffffffe 00000001
4065167a ffffffff
fffffffe 00000000
040b6190 : Ax32Serv!interpret::xal_eval_func+0xc77

00000000
040b6030 00000001
4049e127 : 00000000
1b912800 00000000
1b912800 00000000
040b6190 00000000
040b7000 : Ax32Serv!interpret::xal_eval_id+0xd0

00000000
040b6070 00000001
4049e268 : 00000000
1b912800 00000000
00000000 00000000
1b912800 00000000
040b70e0 : Ax32Serv!interpret::evalLoop+0x167

00000000
040b60d0 00000001
40582b53 : 00000000
00000001 00000000
00000000 00000000
040b6180 00000000`00000000 : Ax32Serv!interpret::eval+0x58

找到这一行

00000000
040b55c0 00000001
40434517 : 00000000
18ebfb00 00000000
1e522736 00000000
1e665e60 00000000
00930200 : Ax32Serv!interpret::evalFunc+0x2ca

输入命令 du 00000000
1e522736

00000000
1e522736 “saveBudgetCheckResultErrorWarnin”

00000000`1e522776 “gDetails”

输入命令 dd 00000000
040b55c0+44

00000000
040b5604 000f554e 1b913940 00000000 00000000

00000000
040b5614  00000000 00000000 00000000 00000000

00000000
040b5624 00000000 00000000 00000000 00000000

00000000
040b5634  00000000 00000000 00000000 00000000

00000000
040b5644 00000000 ffffff00 00000000 1e665e60

00000000
040b5654  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也是让人无语了。

原文地址: 这里写链接内容
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息