Share via


launch.vs.json 架構參考 (C++)

在 Visual Studio 2017 和更新版本中,您可以從幾乎任何目錄型專案開啟和建置程式碼,而不需要方案或專案檔。 當沒有任何專案或方案檔時,您可以指定自訂建置工作,並透過 JSON 組態檔啟動參數。 本文說明指定 launch.vs.json 偵錯參數的檔案。 如需「開啟資料夾」功能的詳細資訊,請參閱 在沒有專案或解決方案 的情況下在 Visual Studio 中開發程式碼。

若要建立檔案,請在 方案總管 以滑鼠右鍵按一下可執行檔,然後選擇 [偵錯] 和 [ 啟動] 設定。 選擇最符合您專案的選項,然後使用下列屬性視需要修改組態。 如需偵錯 CMake 專案的詳細資訊,請參閱 設定 CMake 偵錯 會話。

預設屬性

屬性 類型​ 描述
args 陣列 指定傳遞至啟動程式的命令列引數。
buildConfigurations 陣列 索引鍵/值組,指定要套用組態的建置模式名稱。 例如, DebugRelease 和 要根據所選建置模式使用的組態。
currentDir string 指定建置目標的完整目錄路徑。 除非設定此參數,否則會自動偵測目錄。
cwd string 程式執行所在遠端系統上目錄的完整路徑。 預設為 "${debugInfo.defaultWorkingDirectory}"
debugType string 根據程式碼類型指定偵錯模式(原生、受控或混合)。 除非設定此參數,否則會自動偵測模式。 允許的值: "native" 「、、 "managed""mixed"
env 陣列 指定自訂環境變數的索引鍵/值清單。 例如: env:{"myEnv":"myVal"}
inheritEnvironments 陣列 指定繼承自多個來源的一組環境變數。 您可以在檔案中定義一些變數,例如 CMakeSettings.jsonCppProperties.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 指定專案是 dllexe 預設值為 .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 、、 armarm64mipsx64amd64x86_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