首页 » 技术SOS » 嵌入式系统 » 操作系统 » [求助]谁能帮我看看这个问题怎么解决,如何调试啊?

[求助]谁能帮我看看这个问题怎么解决,如何调试啊?

菜鸟
2007-11-21 23:38:31     悬赏10分
二层交换机,从vxworks5。4移植到5。5,同事费了好多劲终于能把交换机调起来 现在用脚本在cli下建vlan 1-1000时,telnet功能崩溃,只能通过串口连接 下面是出错的log machine check Exception next instruction address: 0x0171d75c Machine Status Register: 0x00029200 Condition Register: 0x20000044 Bus Error Address Register: 0x00000000 Bus Error Syndrome Register: 0x00000000 Task: 0x7ce01b8 "TrMn " theCaller = 0x62a7d8: theFunction = 0x1718ac4 () theCaller = 0x1718c44: theFunction = 0x171ae80 () theCaller = 0x171aedc: theFunction = 0x171d74c () theCaller = 0x6d8478: theFunction = 0x62a7d8 () 这种machine check exception中断一般有什么引起啊? next instruction address: 0x0171d75c。 什么是异常下调指令的地址啊?内存里找不到这个地址啊? 打印出的那个task我们可以找到,但是找不出什么错误来 下面打印出的theCaller在我们编译源代码生成镜像时的产生的一个ram.map(里面是镜像在内存中的分布)里找不到,但是前三个Function的入口地址却可以查到 但是最后一行的Caller和function都找不到,难道是内核调用内核的?上面这段看不懂啊,哪位高手可以帮忙解释一下啊?这些错误是内核给打印出来的吗? 还有这种错误一般怎么调比较好啊?我都无从入手,给的几个函数入口地址我也找不到什么错误
分享
关键词: vxworks, 交换机  
菜鸟
2008-03-26 22:16:38
1楼

不知道你用的什么CPU,但很有必要查一下MSR=0x00029200的时候到底是报的什么错误.问题应该出在地址为0x171d74c的函数中.根据以往调试经验,出现MSR错误的最常见情况有两种,其一:数据错误,通常为对齐问题,其二:特殊指令执行与机器状态不符.且根据你的情况看,第一种的可能性比较大,因为你的代码原来是可以跑的,只是因为换了操作系统和编译器,导致在优化和对齐上有变化. 如果能进一步跟踪提供更为详细的错误,会对分析有帮助.