- 對某一個變量感興趣的話,在啓動調試之後,直接對該變量“添加監視”,在調試窗口中即可看到該變量的變化;
- 查看指針指向的值
拷貝指針的值,將指針的值複製到“內存1”的地址文本框中,顯示的值默認為十六進制。
- 程序調試快捷鍵總結
Ctrl + F5直接運行程序,不調試F5啓動調試,在Debug模式下運行程序F10單步跳過F11單步進入Shift + F11跳出F9插入、移除斷點Shift + F5停止調試Ctrl + Shift +F5重試調試
- “無法解析的外部符號”一般是要鏈接的外部函數查找失敗導致的
- 新建項目的“控制枱”/“桌面應用程序”區別在於“屬性->鏈接器->所有選項->子系統”的不同選項。
-
#pragma onece
... // 聲明、定義語句
等同於
#ifndef func
#def func
... // 聲明、定義語句
#endif
後者ifndef受C/C++語言標準的支持,不受編譯器的任何限制。
- 調試時,黃色箭頭表示下一個將要執行的代碼,可以移動黃色箭頭控制執行順序。
- 編譯器有諸多的優化選項,
Debug和Release實際是優化級別的區別。
Debug好,Release崩,檢查是否有未初始化的變量,是否有數組越界;Release好,Debug崩,查找代碼中的assert。
- PDB文件的作用
PDB文件的全稱是Program DataBase,用於存放Visual Studio(VS)編譯鏈接時生成的文件。PDB文件主要存儲了Visual Studio(VS)調試程序時所需要的基本信息,主要包括源文件名、變量名、函數名、棧指針、對應的行號等。因為存儲的是調試信息,所以一般情況下PDB文件是在Debug模式下才會生成;在VS中可以進行設置,在Release版本中也可以生成PDB文件。
當提供了PDB文件之後,在輸出的異常信息中,可以獲取出錯的文件、行號,便於定位錯誤,因此無論Debug還是Release都建議生成PDB文件(VS默認行為,區別在於Debug使用的開關為Debug: full,而Release使用的開關為Debug: pdbonly)
當選擇full時,VS可以直接附加應用程序,而pdbonly時VS只能用於檢查堆棧信息,如何確認pdb如何被調用?在“調試->窗口->模塊”,有一列表示符號狀態,如果顯示符號已經加載(Symbols loaded)則表示pdb正在被VS使用。
- 僅我的代碼
Enable Just My Code
勾選“允許僅我的代碼”(默認)則VS不會加載除了PDB之外的其它PDB,造成的直接影響是無法在調試信息中看到“除我的代碼”之外的其它信息(如:在調用棧中僅能看到自己的代碼),大部分情況下“僅我的代碼”足矣。
- JIT優化
在Release模式下,當勾選“優化代碼”,則意味着實際生成的代碼和編寫的代碼會因為優化而不一致。這些優化一般是必須的,它使程序性能有所提升,但會增加調試難度,因為行號與實際運行的代碼不匹配。可以通過在調試設置中勾選“在模塊加載時取消JIT優化”來阻止代碼優化。