windows下野指標的debug方法

來源:互聯網
上載者:User

標籤:cal   was   沒有   bug   解構函式   war   一個   位置   after   

項目中,出現莫名其妙的崩潰,錯誤為:

xxxx modified at xxxafter it was freed

斷點位置在一個解構函式中,而經過檢查,這個類沒有問題,並不是析構已經被析構的類。

痛苦之下,搜尋了一個工具:gfrag.exe  

調用:./gflags.exe -p /enable 程式名.exe /full  此處不需要指定具體路徑。

這個工具其實只是設定了註冊表,將:

電腦\HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Image File Execution Options\程式名.exe中設定一個

GlobalFlag REG_SZ  0x02000000

PageHeapFlags REG_SZ 0x3

因此也可以自己手設。shell在運行程式時,會用完全頁堆來進行程式記憶體配置,這樣的記憶體,當發生野指標訪問或越界訪問時會產生異常。

如果不設定這個,野指標訪問和越界訪問不會產生異常,於是就不會當場崩潰,而是在下一個free或malloc調用中崩潰,讓人無從查起。

接下來非常順利地發現了問題:一個變數類型變了,但代碼中聲明的指標還是舊的,調用了不同的類的函數,於是尋找了超出範圍的記憶體。

windows下野指標的debug方法

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.