[Access violation ] 2G內地址錯誤訪問

如無特殊說明 環境都是x86系列cpu ia-32 如果是64位會特殊說明的
例子都是引用swd 更詳細的說明請看swd一書
以下說明及以後的博客都會有理解偏差的地方 還請各位前輩和戰友指正一二 畢竟本人也是一邊看書一邊記錄 難免會有天圓地方的思想
qq 604015858 歡迎隨時指導交流

對windows來說 一個任務就是一個線程
cpu對任務的保護分爲 任務間保護和任務內保護
任務間保護通過段機制和頁機制來實現
任務內保護通過權限來實現

以下話題描述一下任務內保護
每個app(應用程序)都會有4G的空間 高2G放系統的數據和代碼的映射
低2G app自用 當你訪問高2G空間的系統空間 而又沒有賦予訪問特權 那就會出現如下出錯:

這裏寫圖片描述

Access violation - code c0000005 (first chance)
00401035 c705808080a022000000 mov dword ptr ds:[0A0808080h],22h ds:0023:a0808080=????????

將22h放到a0808080時出錯 信息就是 訪問系統空間時沒有被授權 肯定會被拒絕

ps:以下是我配置windbg的信息
(由於我接觸windbg時很茫然 下面貼上我的設置 希望可以給剛接觸的朋友一個提示 不至於向我當初那樣茫然 這些設置可能不正規 但至少效果出來了)
1:獲取windbg
去微軟官網下載windows調試工具集 或是在網上下載一個
安裝之後你會在Debugging Tools for Windows目錄下發現很多小工具 windbg.exe就是其中之一 這是一個彈藥庫 windbg只是其中的一支沙漠之鷹

2:符號表的設置
系統符號設置: 可以參看http://blog.chinaunix.net/uid-24709751-id-4217635.html這個博客
不要以爲這就完了 還需要設置你需要調試對象的pdb:
app符號設置:
這裏寫圖片描述
你只需要設置前面的“D:\zwkkkkkkkkkkkkkkkkkkkkkk\百度雲管家\科銳10DVD\DVD6 MFC編程\swd\bin\Debug”後面的是系統符號設置 如果你做了 就不需要在這添加了 windbg會自動添加在這兒

如果你的pdb目錄不止一個 就需要把多個路徑都寫在這兒

還有一個問題 就是這個對話框怎麼出現的?
windbg菜單欄 file下面的符號設置
windbg對很多路徑都做了兼容處理 具體可以看一下windbg的幫助 網上有人把windbg的幫助翻譯成中文了 不願意看英文的可以找下中文了解一下

2: 應用程序路徑
如果你調試的是dump文件 這個需要設置一下

3: 源文件路徑
如果你有源文件 可以把源文件路徑設置一下 第一張圖的左上角那個窗口顯示的就是源文件
大部分情況下 能獲得到pdb就很不錯了 但是爲了方便學習 我還是加上了源文件 用以瞭解windbg報的每一個錯誤提示信息

至於windbg的用法 可以慢慢學習 用到幾個命令學習幾個 這也是本系列的一個重要目標之一

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章