這里寫目錄標題
- 1. VS基本使用
- 1.1. 快捷鍵
- 1.2. 查看變量地址
- 1.3. 查看代碼匯編
- 1.4. visual studio 熱重載功能的使用
- 1.5. vs遠程服務器調試
- 1.6. 引入第三方庫VLD
- 1.7. release debug模式
1. VS基本使用
1.1. 快捷鍵
ctrl + c :復制光標所在行 注意:只需要光標在這一行,不需要選中整行
ctrl + x : 剪切光標所在行 注意:只需將光標移至該行,不需要選中整行
ctrl + l(注意是L鍵) : 刪除光標所在行 注意:只需將光標移至該行,不需要選中整行
ctrl + k + c :注釋所選代碼或光標所在行 注意:先按k,再按c 或者 ctrl+k,ctrl+c
ctrl + k + u:取消注釋所選代碼或光標所在行 注意:先按k,再按u 或者
ctrl shift / 快速注釋/取消注釋
ctrl + f :在本文件中查找
CTRL+TAB :往前縮進Ctrl + M + O 折疊所有區域
1.2. 查看變量地址
1,查看變量地址,在變量處設置斷點,開始調試,右鍵變量->添加監視 點擊調試->窗口->添加內存
參考下面這篇鏈接
https://blog.csdn.net/weixin_48524215/article/details/120724278
1.3. 查看代碼匯編
調試的時候在這打開
1.4. visual studio 熱重載功能的使用
以在應用程序運行時進行代碼修改,并立即看到結果,而無需重新啟動應用程序或中斷調試會話。
選擇-文件保存時熱重載,文件保存一下就直接執行了。
1.5. vs遠程服務器調試
參考下面這篇鏈接:
https://www.cnblogs.com/apocelipes/p/10899484.html
vs進行遠程開發分為兩步:
- 創建遠程環境的連接,隨后讓vs將遠程環境中的系統頭文件同步到本地(也可以指定其他地方的頭文件,后面會講解),c++的代碼補全只需要頭文件即可。
- 當代碼寫好后,選擇合適的遠程環境,vs將目標文件和代碼復制到遠程環境的指定位置,接著根據你的配置進行編譯。
- 隨后vs將會在console的gdb或gdbserver中運行你的程序,在此期間你可以充分享受vs debugger帶來的高效和便利。
編譯一下
項目屬性:常規【遠程生成計算機、根目錄、項目目錄】
調試模式分gdb、gdbserver,前者讓VS在Linux上啟動一console,然后運行gdb并返回輸出【無法識別彩色輸出】
后者會遠程啟用 gdbserver,本地VS解析回傳的數據
接著是配置的重點,首先是配置需要同步的遠程環境的頭文件,有了這些文件vs才能對你的代碼進行自動補全和提示:
1.6. 引入第三方庫VLD
安裝過程:
Release v2.5.1 · KindDragon/vld
- vId下載后安裝一直點擊下一步,默認安裝位置即可;
此時環境變量等等都加到系統里去了,項目里直接#include"vId.h"就沒問題但是報錯:未識別的頭文件;
通常有以下幾種可能:
- VS 找不到頭文件
vId.h
- VS 找不到靜態庫
vId.lib
- VS 找不到動態庫
vId.dll
(運行時報錯) - VS 配置(x86/x64)和
vId
不匹配
2、那就手動添加這種第三方庫到vs里;添加過程如下:
-
(1)先找vId庫的頭文件
-
將這個目錄添加到vs項目屬性:c/c++ ->常規->附加包含目錄 里;這樣做是告訴 VS 頭文件的路徑,否則
#include "vId.h"
會報錯。 -
-
(2)再找vId靜態庫;把靜態庫添加到下圖鏈接器里的附加庫目錄;因為編譯階段,C++ 代碼只知道
**vId.h**
里的函數聲明,但 不知道具體實現在哪。 -
-
(3)最后把第三方庫的動態庫加入到項目的Debug目錄下;
**vId.dll**
是 動態庫,它的作用是 在程序運行時提供函數的實現。 -
方法1: 找到
**vId.dll**
,復制**vId.dll**
到你的項目目錄 -
-
方法2: 將
vId.dll
的路徑添加到 系統環境變量 PATH -
檢查 VS 項目配置(32 位 / 64 位) 必須和
**vId.lib**
的架構匹配
靜態庫(.lib)
- 靜態庫是編譯時鏈接的:當你編譯你的程序時,靜態庫的代碼會直接嵌入到你的最終可執行文件(
.exe
)中。 - 不需要運行時支持:你只要在編譯時正確鏈接靜態庫即可,運行時不需要額外的
.dll
文件。 - 適用場景:當你想把所有代碼都嵌入到一個
.exe
文件中,避免依賴其他文件。
動態庫(.dll)
- 動態庫是運行時鏈接的:動態庫的代碼不是直接嵌入到你的
.exe
文件中,而是在程序運行時動態加載。 - 需要運行時支持:你需要確保
.dll
文件與.exe
在同一目錄(Debug目錄下),或者.dll
路徑被添加到系統環境變量PATH
中。 - 適用場景:當你想要讓多個程序共享同一個
.dll
文件,或者更新程序時只需要替換.dll
文件。
**vId.lib**
是什么?
**vId.lib**
可能是 靜態庫 或 導入庫(用于動態鏈接)。- 如果
**vId.lib**
是靜態庫,你可以直接將它鏈接到程序中,所有代碼都會被編譯進你的.exe
文件中。 - 如果
**vId.lib**
是導入庫(這里是這個),它僅僅是一個 指向**vId.dll**
的鏈接,在編譯時用來將函數導入到程序中,但在運行時,程序會依賴vId.dll
來執行實際的功能。
**vId.dll**
是什么?
**vId.dll**
是動態庫,它提供了運行時的實際功能。程序在運行時會 加載**vId.dll**
來執行相關操作。- 如果
**vId.lib**
是導入庫,則vId.dll
是 必需的,否則程序會報錯,因為找不到vId.dll
中的實現。
1.7. release debug模式
- Release 模式:
- Release 模式用于生產環境中的最終產品。在這種模式下,編譯器通常會應用各種優化,以提高代碼的執行效率和減小最終可執行文件的大小。
- 調試信息通常會被剝離,以減小可執行文件的大小,這樣在出現問題時可能會更難進行調試。
- 代碼通常會被優化,以提高性能,但可能會使得調試時變量的值不太容易跟蹤。
- 可執行文件通常會比 Debug 模式下的文件更快運行。
- Debug 模式:
- Debug 模式用于開發和測試階段,目的是方便開發人員進行調試和定位問題。
- 在 Debug 模式下,通常會保留調試信息,使得開發人員可以更輕松地進行調試,例如查看變量的值、跟蹤函數調用等。
- 通常不會進行過多的優化,以便開發人員能夠更準確地觀察代碼的運行情況。
- 可執行文件通常會比 Release 模式下的文件更大,因為包含了更多的調試信息