有關vs2010 release版本調試this指針問題


這裏會涉及兩個問題,一個是如何實現vs2010調試的問題,一個是調試時this指針可能錯誤的問題
1.如何實現vs2010調試
a.設置Properties->Linker->Generate Debug Info:Yes(/DEBUG)
b.設置C/C++->General->Debug Information Format:Program Database(/Zi)
這樣就實現了release版本生成pdb,支持調試,支持minidump可以直接配合pdb和源代碼打開直接定位到具體的崩潰代碼。但是對於被優化的代碼還是會存在無法設置斷點的問題。
比如直接被優化到inline函數的函數是無法設置斷點的,沒有使用的變量賦值是無法設置斷點的。

2.vs2010斷點this指針錯誤的問題
在斷點調試下,很多時候會發現this指針下的變量完全不正確,或者說是目前的this指針數值根本不正確。這個是因爲正常情況下彙編在調用類函數前會把this指針放置到ebx或者rbx內,但是在優化時,有些時候會把this指針lea到ebx/rbx的步驟給省略掉。導致了當前顯示的this對象完全錯誤。解決辦法如下:
1.使用調用函數棧,到上層。直接看進入函數前的函數對象,這裏應該就是正確值
2.使用匯編,看對成員對象賦值的語句推算出對象基地址。直接通過地址查看對象
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章