日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

WinCE中的Data/ Prefetch Abort异常定位

發布時間:2025/3/19 编程问答 22 豆豆
生活随笔 收集整理的這篇文章主要介紹了 WinCE中的Data/ Prefetch Abort异常定位 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

WinCE中的Data/ Prefetch Abort等異常定位

在調試WinCE程序的時候,有時候會碰到Data/Prefetch Abort的異常,相信從事過WinCE開發的人對這種異常信息應該都不會陌生,系統會在調試控制臺輸出如下類似信息:

Exception 'Prefetch Abort' (3): Thread-Id=05870016(pth=9970c000), Proc-Id=057c0016(pprc=9973cdd4)‘TCPClient.exe’,VM-active=057c0016(pprc=9973cdd4) 'TCPClient.exe'PC=00000004(???+0x00000004)?RA=00011254(TCPClient.exe+0x00001254) SP=0011f954, BVA=00000004

如下圖:

?

Prefetch Abort和Data Abort的定位方法一樣。

其中RA=00011254就表示產生異常的地址,也可以通過TCPClient.exe+0x00001254中的

0x00001254 + 0x00010000 =?RA=00011254來計算。為什么是加上0x00010000呢?

打開map文件,找到Preferred load address is 00010000的一段信息,你就明白要加上多少了。

在map文件中找到比0x000011254小且最接近的一個值,本程序中為0x00011108,如下圖:

?

就可以判斷是該函數中出了問題,要想找到具體出錯在那一行,還得利用.cod文件進行定位。

SocketThreadFunc函數的起始地址為0x00011108,錯誤處的偏移地址為:

0x14C?= 000011254 - 0x00011108(可以用windows計算器計算)。計算出偏移地址后,打開cod文件,尋找0x14C出現的位置,可以用記事本打開cod文件,用Ctrl+F查找14C,會定位到如下信息:

前邊的;127就表示錯誤發生在代碼中的第127行,分號應該是注釋吧。

?

VS2005默認不會生成.map文件和.cod文件,修改以下兩處就可以生成這兩個文件了:

1.(.map)文件:在工程目錄上右鍵->Properties->Configuration Properties->Linker->Debugging->Generate Map File(選擇Yes(/MAP));

2.(.cod)文件:在工程目錄上右鍵->Properties->Configuration Properties->C/C++->Output Files->Assembler Output(選擇Assembly,Machine Code and Source(/FAcs))。

總結

以上是生活随笔為你收集整理的WinCE中的Data/ Prefetch Abort异常定位的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。