# 常è§é—®é¢˜ ## 通过异常信æ¯å®šä½é—®é¢˜ 系统异常被挂起åŽï¼Œä¼šåœ¨ä¸²å£çœ‹åˆ°ä¸€äº›å…³é”®å¯„å˜å™¨çš„ä¿¡æ¯ï¼Œå¦‚图1所示。å¯é€šè¿‡è¿™äº›ä¿¡æ¯å®šä½åˆ°å¼‚å¸¸æ‰€åœ¨å‡½æ•°å’Œå…¶è°ƒç”¨æ ˆå…³ç³»ï¼Œä¸ºåŽŸå› åˆ†æžæä¾›ç¬¬ä¸€æ‰‹èµ„æ–™ã€‚ **图1** å¼‚å¸¸ä¿¡æ¯  上图ä¸çš„异常信æ¯ä¸»è¦è§£é‡Š4ä¸ªæ ‡ç¾ï¼š **æ ‡ç¾1**ï¼šæ ‡è¯†å¼‚å¸¸åœ¨å†…æ ¸æ€ï¼› **æ ‡ç¾2**ï¼šæ ‡è¯†äº†å¼‚å¸¸ç±»åž‹ï¼ˆæ•°æ®å¼‚常时,faråŽçš„值是系统异常时CPU访问的地å€ï¼‰ï¼› **æ ‡ç¾3**:pcçš„å€¼æ ‡è¯†ç³»ç»Ÿå¼‚å¸¸æ—¶æ‰§è¡ŒæŒ‡ä»¤çš„ä½ç½®ï¼Œklrçš„å€¼ä¸€èˆ¬æ ‡è¯†pc所在函数执行完åŽä¸‹ä¸€æ¡è¦æ‰§è¡Œçš„命令。(**æ³¨ï¼šæ ‡ç¾4处 traceback 0 lr有值时ä¸ç”¨å…³æ³¨klr**)。 **æ ‡ç¾4**:lr çš„å€¼ä¾æ¬¡æ ‡è¯†æ£å¸¸æƒ…况下PCè¦ä¾æ¬¡æ‰§è¡Œçš„æŒ‡ä»¤çš„ä½ç½®ã€‚ å¯¹äºŽå†…æ ¸å¼‚å¸¸æ‰“å°ä¿¡æ¯ï¼Œç¡®å®šPCå’ŒLR的具体ä½ç½®çš„æŒ‡ä»¤éœ€è¦ç»“åˆout目录下OHOS_Image.asm(跟烧写的系统镜åƒOHOS_Image.binå¯¹åº”çš„æ±‡ç¼–æ–‡ä»¶ï¼‰æŸ¥çœ‹ï¼Œæ ¹æ®æŒ‡ä»¤æ‰€åœ¨çš„ä½ç½®å¯ç¡®è®¤ä½¿ç”¨è¯¥æŒ‡ä»¤çš„å‡½æ•°ï¼Œä¾æ¬¡ç¡®å®šLRä½ç½®æ‰€åœ¨çš„函数,å³å¾—到异常å‘生时的函数调用关系。 ## å†…å˜æ± å®Œæ•´æ€§éªŒè¯ ä»…å‡ä¸ŠèŠ‚å¼‚å¸¸ä¿¡æ¯å®šä½çš„åŸºæœ¬æ–¹æ³•ï¼Œå¸¸å¸¸æ— æ³•ç›´æŽ¥å®šä½é—®é¢˜æ‰€åœ¨ã€‚å¹¶ä¸”å¸¸å¸¸ä¼šå› ä¸ºå¼‚å¸¸çš„å¯„å˜å™¨å€¼è€Œæ— 法对问题进行定ä½ã€‚è‹¥æ€€ç–‘æ˜¯å †å†…å˜è¶Šç•Œå¯¼è‡´çš„问题,å¯ä»¥è°ƒç”¨å†…å˜æ± 完整性检测函数LOS_MemIntegrityCheck进行检查。函数LOS_MemIntegrityCheck将会对系统动æ€å†…å˜æ± 所有的节点进行é历,如果所有节点æ£å¸¸åˆ™å‡½æ•°è¿”回0,ä¸ä¼šæœ‰ä»»ä½•打å°ï¼Œå¦åˆ™å°†æ‰“å°ç›¸å…³çš„错误信æ¯ã€‚该函数的入å‚使用(VOID \*)OS_SYS_MEM_ADDR。 定ä½å †å†…å˜è¶Šç•Œè¸©çš„问题,一般是在å¯èƒ½å˜åœ¨é—®é¢˜çš„业务逻辑代ç å‰åŽä½¿ç”¨LOS_MemIntegrityCheck,如果该业务代ç ä¸å˜åœ¨é—®é¢˜ï¼Œåˆ™å‰åŽä¸¤æ¬¡LOS_MemIntegrityCheck调用ä¸ä¼šå¤±è´¥ï¼ŒæŒ‰å‰è¿°æ–¹å¼é€æ¥ç¼©å°é—®é¢˜å®šä½èŒƒå›´ã€‚ ## 全局å˜é‡è¸©å†…å˜å®šä½æ–¹æ³• 如果已知一个全局å˜é‡å†…å˜åŸŸè¢«è¸©ï¼Œå¯åœ¨OHOS_Image.mapæ–‡ä»¶ä¸æ‰¾åˆ°è¯¥å…¨å±€å˜é‡æ‰€åœ¨çš„地å€ï¼Œå¹¶ä¸”特别注æ„该地å€ä¹‹å‰æœ€è¿‘被使用的å˜é‡ï¼Œæœ‰æžå¤§æ¦‚率是å‰é¢çš„å˜é‡ï¼ˆå°¤å…¶æ•°ç»„类型的或会被强转æˆå…¶ä»–类型的å˜é‡ï¼‰åœ¨ä½¿ç”¨çš„过程ä¸å†…å˜è¶Šç•Œï¼Œç ´å了这个全局å˜é‡ã€‚