launch.vs.json
架構參考 (C++)
在 Visual Studio 2017 和更新版本中,您可以從幾乎任何目錄型專案開啟和建置程式碼,而不需要方案或專案檔。 當沒有任何專案或方案檔時,您可以指定自訂建置工作,並透過 JSON 組態檔啟動參數。 本文說明指定 launch.vs.json
偵錯參數的檔案。 如需「開啟資料夾」功能的詳細資訊,請參閱 在沒有專案或解決方案 的情況下在 Visual Studio 中開發程式碼。
若要建立檔案,請在 方案總管 中 以滑鼠右鍵按一下可執行檔,然後選擇 [偵錯] 和 [ 啟動] 設定。 選擇最符合您專案的選項,然後使用下列屬性視需要修改組態。 如需偵錯 CMake 專案的詳細資訊,請參閱 設定 CMake 偵錯 會話。
預設屬性
屬性 | 類型 | 描述 |
---|---|---|
args |
陣列 | 指定傳遞至啟動程式的命令列引數。 |
buildConfigurations |
陣列 | 索引鍵/值組,指定要套用組態的建置模式名稱。 例如, Debug 或 Release 和 要根據所選建置模式使用的組態。 |
currentDir |
string | 指定建置目標的完整目錄路徑。 除非設定此參數,否則會自動偵測目錄。 |
cwd |
string | 程式執行所在遠端系統上目錄的完整路徑。 預設為 "${debugInfo.defaultWorkingDirectory}" |
debugType |
string | 根據程式碼類型指定偵錯模式(原生、受控或混合)。 除非設定此參數,否則會自動偵測模式。 允許的值: "native" 「、、 "managed" "mixed" 。 |
env |
陣列 | 指定自訂環境變數的索引鍵/值清單。 例如: env:{"myEnv":"myVal"} 。 |
inheritEnvironments |
陣列 | 指定繼承自多個來源的一組環境變數。 您可以在檔案中定義一些變數,例如 CMakeSettings.json 或 CppProperties.json ,並讓它們可供偵錯內容。 Visual Studio 16.4: 使用 env.VARIABLE_NAME 語法,根據每個目標指定環境變數。 若要取消設定變數,請將它設定為 "null" 。 |
name |
string | 指定 [啟動專案 ] 下拉式清單中專案 的名稱。 |
noDebug |
boolean | 指定是否偵錯啟動的程式。 如果未指定此參數的預設值,則 false 為 。 |
portName |
string | 指定附加至執行中進程時的埠名稱。 |
program |
string | 要執行的偵錯命令。 預設為 "${debugInfo.fullTargetPath}" 。 |
project |
string | 指定專案檔的相對路徑。 一般而言,偵錯 CMake 專案時不需要變更此值。 |
projectTarget |
string | 指定建置 project 時叫用的選擇性目標。 目標必須符合 [啟動專案 ] 下拉式清單中的名稱 。 |
stopOnEntry |
boolean | 指定是否要在啟動進程且偵錯工具附加時立即中斷。 此參數的預設值為 false 。 |
remoteMachine |
string | 指定啟動程式之遠端電腦的名稱。 |
type |
string | 指定專案是 dll 或 exe 預設值為 .exe |
C++ Linux 屬性
屬性 | 類型 | 描述 |
---|---|---|
program |
string | 遠端電腦上程式可執行檔的完整路徑。 使用 CMake 時,宏 ${debugInfo.fullTargetPath} 可作為此欄位的值。 |
processId |
整數 | 要附加偵錯工具的選擇性進程識別碼。 |
sourceFileMap |
object | 傳遞至偵錯引擎的選擇性來源檔案對應。 格式: { "\<Compiler source location>": "\<Editor source location>" } 或 { "\<Compiler source location>": { "editorPath": "\<Editor source location>", "useForBreakpoints": true } } 。 範例:{ "/home/user/foo": "C:\\foo" } 或 { "/home/user/foo": { "editorPath": "c:\\foo", "useForBreakpoints": true } } 。 如需詳細資訊,請參閱 來源檔案對應選項 。 |
additionalProperties |
string | 其中一個 sourceFileMapOptions。 (請參閱下方。) |
MIMode |
string | 指出 MIDebugEngine 將連線到的 MI 啟用主控台偵錯工具類型。 允許的值為 "gdb" 、 "lldb" 。 |
args |
陣列 | 傳遞至程式的命令列引數。 |
environment |
陣列 | 要新增至程式環境的環境變數。 範例: [ { "name": "squid", "value": "clam" } ] . |
targetArchitecture |
string | 偵錯組的架構。 除非設定此參數,否則會自動偵測架構。 允許的值為 x86 、、 arm 、 arm64 、 mips x64 、 amd64 、 x86_64 。 |
visualizerFile |
string | 偵錯此進程時要使用的 .natvis 檔案。 此選項與 GDB 相當列印不相容。 查看 "showDisplayString" 您是否使用此設定。 |
showDisplayString |
boolean | 指定視覺化檢視時, showDisplayString 將會啟用顯示字串。 開啟此選項可能會讓偵錯期間的效能變慢。 |
remoteMachineName |
string | 裝載 gdb 和程式以偵錯的遠端 Linux 機器。 使用連線管理員新增新的 Linux 電腦。 使用 CMake 時,宏 ${debugInfo.remoteMachineName} 可作為此欄位的值。 |
miDebuggerPath |
string | 已啟用 MI 之偵錯工具的路徑(例如 gdb)。 未指定時,它會先搜尋 PATH 來尋找偵錯工具。 |
miDebuggerServerAddress |
string | 啟用 MI 之偵錯工具伺服器要連線的網路位址。 範例: "localhost:1234" . |
setupCommands |
陣列 | 要執行的一或多個 GDB/LLDB 命令,以設定基礎偵錯工具。 範例: "setupCommands": [ { "text": "-enable-pretty-printing", "description": "Enable GDB pretty printing", "ignoreFailures": true }] . 如需詳細資訊,請參閱 啟動安裝命令 。 |
customLaunchSetupCommands |
陣列 | 如果提供,這個值會以其他命令取代用來啟動目標的預設命令。 例如,使用 「-target-attach」 附加至目標進程。 空的命令清單會將啟動命令取代為無任何專案,如果偵錯工具提供啟動選項做為命令列選項,這非常有用。 範例: "customLaunchSetupCommands": [ { "text": "target-run", "description": "run target", "ignoreFailures": false }] . |
launchCompleteCommand |
string | 在偵錯工具完全設定之後執行的命令,會導致目標進程執行。 允許的值為 「exec-run」、「exec-continue」、「None」。 預設值為 「exec-run」。 |
debugServerPath |
string | 要啟動之伺服器偵錯的選擇性完整路徑。 預設值為 null。 |
debugServerArgs |
string | 選擇性偵錯伺服器引數。 預設值為 null。 |
filterStderr |
boolean | 搜尋 stderr 資料流程,以尋找伺服器啟動模式和記錄 stderr 以偵錯輸出。 預設為 false 。 |
coreDumpPath |
string | 指定程式之核心傾印檔案的選擇性完整路徑。 預設值為 null。 |
externalConsole | boolean | 如果為 true,則會啟動偵錯組的主控台。 如果 false 為 ,則不會啟動主控台。 此設定的預設值為 false 。 在某些情況下,基於技術原因,會忽略此選項。 |
pipeTransport |
string | 當存在時,這個值會告訴偵錯工具使用另一個可執行檔作為管道連線到遠端電腦,以在 Visual Studio 與啟用 MI 的偵錯工具之間轉接標準輸入/輸出(例如 gdb)。 允許的值:一或多個 管道傳輸選項 。 |
debugInfo 宏
下列宏提供偵錯環境的相關資訊。 其適用于自訂應用程式的啟動以進行偵錯。
Macro | 描述 | 範例 |
---|---|---|
addressSanitizerRuntimeFlags |
用來自訂位址清理程式列為的執行時間旗標。 用來設定環境變數 "ASAN_OPTIONS" 。 |
"env": {"ASAN_OPTIONS": "${addressSanitizerRuntimeFlags}:anotherFlag=true" } |
defaultWorkingDirectory |
設定為 的 "fullTargetPath" 目錄部分。 如果已定義 CMake 變數 VS_DEBUGGER_WORKING_DIRECTORY ,則會 defaultWorkingDirectory 改為設定為該值。 |
"cwd":"${debugInfo.defaultWorkingDirectory}" |
fullTargetPath |
要偵錯之二進位檔的完整路徑。 | "program": "${debugInfo.fullTargetPath}" |
linuxNatvisPath |
VS linux .natvis 檔案的完整視窗路徑。 通常會顯示為 值 "visualizerFile" 。 |
|
parentProcessId |
目前 Visual Studio 實例的進程識別碼。 做為 shellexec 的參數。 | 請參閱下列 pipeTransport 範例。 |
remoteMachineId |
連線到遠端電腦的唯一數值識別碼。 做為 shellexec 的參數。 | 請參閱下列 pipeTransport 範例。 |
remoteWorkspaceRoot |
工作區遠端複本的 Linux 路徑。 | 指定遠端電腦上的檔案位置。 例如:"args": ["${debugInfo.remoteWorkspaceRoot}/Data/MyInputFile.dat"] |
resolvedRemoteMachineName |
目標遠端電腦的名稱。 | "targetMachine" 部署指示詞中的值 |
shellexecPath |
Visual Studio 用來管理遠端電腦連線之 shellexec 程式的路徑。 | 請參閱下列 pipeTransport 範例 |
tty |
gdb 會針對要偵錯的程式,將輸入和輸出重新導向至此裝置。 做為 gdb (-tty) 的參數。 | 請參閱下列 pipeTransport 範例。 |
windowsSubsystemPath |
Windows 子系統 Linux 版 實例的完整路徑。 |
下列 pipeTransport 範例示範如何使用上面定義的一些 debugInfo
宏:
"pipeTransport": {
"pipeProgram": "${debugInfo.shellexecPath}",
"pipeArgs": [
"/s",
"${debugInfo.remoteMachineId}",
"/p",
"${debugInfo.parentProcessId}",
"/c",
"${debuggerCommand}",
"--tty=${debugInfo.tty}"
],
"pipeCmd": [
"/s",
"${debugInfo.remoteMachineId}",
"/p",
"${debugInfo.parentProcessId}",
"/c",
"${debuggerCommand}"
]
}
C++ Windows 遠端偵錯和部署屬性
在遠端電腦上偵錯和部署應用程式時使用。
屬性 | 類型 | 描述 |
---|---|---|
cwd |
string | 遠端電腦上目標的工作目錄。 使用 CMake 時,宏 ${debugInfo.defaultWorkingDirectory} 可作為此欄位的值。 預設值是偵錯程式/命令的目錄。 |
deploy |
string | 指定要部署的額外檔案或目錄。 例如:"deploy": {"sourcePath":"<Full path to source file/directory on host machine>", "targetPath":"<Full destination path to file/directory on target machine>"} |
deployDirectory |
string | 專案輸出自動部署到遠端電腦上的位置。 預設值為 」C:\Windows Default Deploy Directory\<name of app> |
deployDebugRuntimeLibraries |
string | 指定是否要部署使用中平臺的偵錯執行時間程式庫。 "true" 如果 active configurationType 為 ,則預設為"Debug" |
deployRuntimeLibraries |
string | 指定是否要部署使用中平臺的執行時間程式庫。 "true" 如果作用中的 configurationType 為 、 "RelWithDebInfo" 或 "Release" ,則預設為 "MinSizeRel" 。 |
disableDeploy |
boolean | 指定是否應該部署檔案。 |
remoteMachineName |
string | 指定啟動程式之遠端 ARM64 Windows 電腦的名稱。 可能是伺服器名稱或遠端電腦的 IP 位址。 |
authenticationType |
string | 指定遠端連線的類型。 可能的值是 "windows" 和 "none" 。 預設值為 "windows" 。 此值應該符合在遠端電腦上執行的遠端偵錯程式上指定的驗證設定。 |
啟動安裝命令
與 屬性搭配 setupCommands
使用:
屬性 | 類型 | 描述 |
---|---|---|
text |
string | 要執行的偵錯工具命令。 |
description |
string | 命令的選擇性描述。 |
ignoreFailures |
boolean | 如果為 true,則應該忽略命令中的失敗。 預設為 false 。 |
管道傳輸選項
與 屬性搭配 pipeTransport
使用:
屬性 | 類型 | 描述 |
---|---|---|
pipeCwd |
string | 管道程式之工作目錄的完整路徑。 |
pipeProgram |
string | 要執行的完整管道命令。 |
pipeArgs |
陣列 | 傳遞至管道程式的命令列引數,以設定連線。 |
debuggerPath |
string | 目的機器上偵錯工具的完整路徑,例如 /usr/bin/gdb。 |
pipeEnv |
object | 傳遞至管道程式的環境變數。 |
quoteArgs |
boolean | 如果個別引數包含字元(例如空格或索引標籤),應該加上引號嗎? 如果 false 為 ,偵錯工具命令將不再自動加上引號。 預設值為 true 。 |
原始程式檔對應選項
搭配 sourceFileMap
屬性使用:
屬性 | 類型 | 描述 |
---|---|---|
editorPath |
string | 編輯器要尋找之原始程式碼的位置。 |
useForBreakpoints |
boolean | 設定中斷點時,應該使用這個來源對應。 如果 false 為 ,則只會使用檔案名和行號來設定中斷點。 如果 true 為 ,則只有在使用此來源對應時,才會使用檔案的完整路徑和行號來設定中斷點。 否則,設定中斷點時,只會使用檔案名和行號。 預設值為 true 。 |
意見反應
https://aka.ms/ContentUserFeedback。
即將登場:在 2024 年,我們將逐步淘汰 GitHub 問題作為內容的意見反應機制,並將它取代為新的意見反應系統。 如需詳細資訊,請參閱:提交並檢視相關的意見反應