近期偶然用windbg給乙個控制台程式的入口函式下斷點,位址之際用編譯出的map檔案中main函式的位址。結果windbg報告斷點未下成功,經過反覆檢視,包括在vc環境中除錯執行,均發現main函式的位址和map檔案中位址不一樣,切帶有隨機性。
又用vc6.0實驗一遍,發現沒有任何問題。看來問題是出在編譯器上。
最後經過朋友指點,發現竟然是vc2010的鏈結屬性中,/dynamicbase一直開著。所以每次執行入口位址都在隨機變化!關閉後,重新編譯,main函式入口不再變化了,按照map檔案位址,windbg也順利下斷。
/dynamicbase:使用 windows vista /windows 7的位址空間布局隨機化 aslr(address space layout randomization) 功能,指定是否生成可在載入時隨機重新設定基址的可執行檔案映像。這個功能vc2010預設開啟,從visual studio® 2005 sp1 起增加了該設定的支援。據說是為了**安全!
詳見
vc2010呼叫儲存過程
coinitialize null connectionptr pmyconnect null hresult hr pmyconnect.createinstance uuidof connection if failed hr return bstr t strconnect provider ...
VC 2010讀取BIN檔案
最近在弄stm32更新韌體的上位機,記錄一下碰到的問題點 unsigned long nfilebytes 用於儲存bin檔案總位元組數 unsigned char abinbyte 65536 用於儲存從bin檔案獲取的資料 file pfile wfopen s pfile,strfilepat...
VC 2010中GDAL的安裝
準備檔案 vs2010 必須滴 gdal的原始碼 我用的這個版本的 1 編譯gdal,獲取include和lib和dll 2 啟動cmd,進入vc10的安裝目錄下,預設為c program files microsoft visual studio 10.0 vc bin,要是你會改目錄,找這個東西...