關於 Visual Studio 的使用技巧(保姆級教程)_目標文件

fliter 視圖

visual studio默認是filter視圖(中文為篩選器)

關於 Visual Studio 的使用技巧(保姆級教程)_預處理_02

項目下的是filter而非硬盤目錄裏實際的文件夾,這時新建的也是filter

關於 Visual Studio 的使用技巧(保姆級教程)_預處理_03

想要查看硬盤目錄裏實際的文件夾,點擊按鈕“show all files(顯示所有文件)”即可

關於 Visual Studio 的使用技巧(保姆級教程)_目標文件_04

輸出文件位置設置

自定義輸出文件位置:

右鍵項目,選擇“Properties(屬性)”->“General”->“Output Directory”“Intermediate Directory”(圖中展示選項的中文)

關於 Visual Studio 的使用技巧(保姆級教程)_目標文件_05

注意“Configuration(配置)“為”All Configurations(所有配置)”,“Platform(平台)”為“All Platforms(所有平台)”

這邊也給出大佬們喜歡用的設置:

Output Directory:$(SolutionDir)bin\$(Platform)\$(Configuration)\

Intermediate Directory:$(SolutionDir)bin\intermediates\$(Platform)\$(Configuration)\

如果你看不懂其指代的具體路徑,對路徑選擇“Edit(編輯)”->“Macros”即可查看

關於 Visual Studio 的使用技巧(保姆級教程)_目標文件_06

應用後可以右鍵解決方案,選擇“Clean Solution(清理解決方案)”即可去掉舊文件

查看預處理結果

首先簡答介紹一下編譯器的工作原理:編譯器首先處理預處理語句,將頭文件內容全部複製到代碼文件中;其次編譯器將所有C++代碼轉化為機器碼,每個cpp文件都被編譯成一個目標文件(.obj);最後將獨立的目標文件合併成一個可執行文件

Visual Studio默認不輸出預處理的結果,想要查看預處理結果需要在“Properties(屬性)”->“C/C++”->“Preprocessor”中,將“Preprocess to File”設置為“Yes”(確保編輯的是當前的配置),編譯後機會輸出預處理文件(.i)

關於 Visual Studio 的使用技巧(保姆級教程)_目標文件_07

將目標文件轉換為可讀的彙編

編譯器編譯文件時,每個cpp文件都被編譯成一個目標文件(.obj),出於一些調試需求,我們可能需要閲讀編譯出的彙編語言

在“Properties(屬性)”->“C/C++”->“Output Files”中,修改“Assembler Output”即可

關於 Visual Studio 的使用技巧(保姆級教程)_預處理_08

自定義程序入口

一個可執行文件一定是以main函數為入口嗎?答案是否定的

在“Properties(屬性)”->“Linker”->“Advanced”中,可以自定義Entry Point

關於 Visual Studio 的使用技巧(保姆級教程)_編譯器_09

調試時查看變量在內存中的具體值

最常見的是用autos,locals和watch監視變量:

  • autos(自動變量窗口):顯示當前行和前幾行代碼中使用的變量,以及下一個將要執行的行中的變量
  • locals(局部變量窗口):顯示當前作用域中的所有局部變量及其值
  • watch(監視窗口):允許手動添加並監視任意變量、表達式或內存地址

關於 Visual Studio 的使用技巧(保姆級教程)_預處理_10


(這裏對象p的成員變量Name沒有賦值)

一個更高級的方法是查看變量在內存中的具體值:“DEBUG”->“Windows”->“Memory”->“Memory 1”

關於 Visual Studio 的使用技巧(保姆級教程)_編譯器_11

在“Address”中輸入變量的內存地址(別忘了使用&取址)即可找到變量在內存中的具體值

關於 Visual Studio 的使用技巧(保姆級教程)_預處理_12

這裏我輸入了一個字符串指針,其指向字面量"hello",可以發現內存存儲的內容對應了"hello"的 ASCII 編碼,只不過由於是64位,因此字符串指針默認為8字節

關於 Visual Studio 的使用技巧(保姆級教程)_預處理_13

查看代碼的反彙編

在調試時,右鍵“Go To Disassembly”

關於 Visual Studio 的使用技巧(保姆級教程)_目標文件_14

關於 Visual Studio 的使用技巧(保姆級教程)_目標文件_15

如文章有誤或疏漏,歡迎評論指出