launch.vs.json スキーマ リファレンス (C++)

Visual Studio 2017 以降のバージョンでは、ほぼすべての種類のディレクトリ ベースのプロジェクトから、ソリューションまたはプロジェクトのファイルを必要とせずにコードを開きビルドすることができます。 プロジェクトまたはソリューションのファイルがない場合は、カスタム ビルド タスクを指定し、パラメーターを JSON 構成ファイルから起動できます。 この記事では、デバッグ パラメーターを指定するための launch.vs.json ファイルについて説明します。 [フォルダーを開く] に関する詳細については、「プロジェクトまたはソリューションを使用せずに Visual Studio でコードを開発する」を参照してください。

ファイルを作成するには、ソリューション エクスプローラーで実行可能ファイルを右クリックし、[デバッグ設定と起動設定] を選択します。 ご自分のプロジェクトに最も近いオプションを選択した後、次のプロパティを使用して必要に応じて構成を変更します。 CMake プロジェクトのデバッグについて詳しくは、「CMake デバッグ セッションを構成する」を参照してください。

既定のプロパティ

プロパティ タイプ 説明
args array 起動されたプログラムに渡されるコマンドライン引数を指定します。
buildConfigurations array 構成を適用するビルド モードの名前を指定するキーと値のペア。 たとえば、Debug または Release と、選択したビルド モードに応じて使用する構成などです。
currentDir string ビルド ターゲットへの完全なディレクトリ パスを指定します。 このパラメーターが設定されていない場合は、該当するディレクトリが自動的に検出されます。
cwd string プログラムが実行されるリモート システム上のディレクトリへの完全なパス。 既定値は "${debugInfo.defaultWorkingDirectory}" です
debugType string コードの種類 (ネイティブ、マネージド、または混合) に応じてデバッグ モードを指定します。 このパラメーターが設定されていない場合は、該当するモードが自動的に検出されます。 使用できる値: "native""managed""mixed"
env array カスタム環境変数のキーと値のリストを指定します。 (例: env:{"myEnv":"myVal"})。
inheritEnvironments array 複数のソースから継承された環境変数のセットを指定します。 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 プロジェクトが dll であるか exe であるかを指定します。既定値は .exe です。

C++ Linux のプロパティ

プロパティ タイプ Description
program string リモート マシン上のプログラム実行可能ファイルへの完全なパス。 CMake を使用する場合、このフィールドの値としてマクロ ${debugInfo.fullTargetPath} を使用できます。
processId integer デバッガーをアタッチする省略可能なプロセス ID。
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 の 1 つ。 (以下を参照してください。)
MIMode string MIDebugEngine の接続先となる MI 対応のコンソール デバッガーの種類を示します。 使用できる値は "gdb""lldb" です。
args array プログラムに渡すコマンド ライン引数。
environment array プログラムの環境に追加する環境変数。 例: [ { "name": "squid", "value": "clam" } ]
targetArchitecture string デバッグ対象のアーキテクチャ。 このパラメーターが設定されていない場合は、該当するアーキテクチャが自動的に検出されます。 使用できる値は x86armarm64mipsx64amd64x86_64 です。
visualizerFile string このプロセスをデバッグするときに使用する .natvis ファイル。 このオプションは GDB の再フォーマットと互換性がありません。 この設定を使用する場合は、「"showDisplayString"」を参照してください。
showDisplayString boolean visualizerFile を指定すると、showDisplayString により表示文字列が有効になります。 このオプションをオンにすると、デバッグ中にパフォーマンスが低下するおそれがあります。
remoteMachineName string gdb とデバッグ対象のプログラムをホストする、Linux リモート マシン。 新しい Linux マシンを追加するには、接続マネージャーを使用します。 CMake を使用する場合、このフィールドの値としてマクロ ${debugInfo.remoteMachineName} を使用できます。
miDebuggerPath string MI 対応のデバッガー (gdb など) へのパス。 これを指定しないと、最初に PATH からデバッガーを検索します。
miDebuggerServerAddress string 接続先の MI 対応デバッガー サーバーのネットワーク アドレス。 例: "localhost:1234"
setupCommands array 基になるデバッガーを設定するために実行する、1 つ以上の GDB または LLDB コマンド。 例: "setupCommands": [ { "text": "-enable-pretty-printing", "description": "Enable GDB pretty printing", "ignoreFailures": true }]。 詳しくは、「セットアップ コマンドを起動する」を参照してください。
customLaunchSetupCommands array この値を指定した場合、ターゲットを起動するために使われる既定のコマンドが、他のいくつかのコマンドに置き換えられます。 たとえば、ターゲット プロセスにアタッチする場合は、"-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 など) の間で標準入力/出力をリレーするパイプとして別の実行可能ファイルを利用して、リモート マシンに接続するように、デバッガーに指示が与えられます。 使用できる値: 1 つ以上のパイプ トランスポート オプション

debugInfo マクロ

次のマクロでは、デバッグ環境に関する情報を指定します。 これらは、デバッグ用にアプリの起動をカスタマイズする場合に便利です。

マクロ 説明
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 ファイルへの完全な Windows パス。 通常は、値 "visualizerFile" として表示されます。
parentProcessId 現在の Visual Studio インスタンスのプロセス ID。 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 Linux 用 Windows サブシステムのインスタンスへの完全なパス。

以下の 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 リモート デバッグとプロパティの展開

リモート マシンでアプリをデバッグおよび配置するときに使用します。

プロパティ タイプ Description
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 アクティブなプラットフォーム用のデバッグ ランタイム ライブラリを配置するかどうかを指定します。 アクティブな configurationType が "Debug" の場合、既定値は "true" です
deployRuntimeLibraries string アクティブなプラットフォーム用のランタイム ライブラリを配置するかどうかを指定します。 アクティブな configurationType が "MinSizeRel""RelWithDebInfo"、または "Release" の場合、既定値は "true" です。
disableDeploy boolean ファイルを配置するかどうかを指定します。
remoteMachineName string プログラムが起動されたリモートの ARM64 Windows マシンの名前を指定します。 サーバー名またはリモート マシンの IP アドレスにすることができます。
authenticationType string リモート接続の種類を指定します。 設定可能な値は "windows" および "none" です。 既定値は、"windows" です。 この値は、リモート マシン上で実行されているリモート デバッガーに対して指定されている認証設定と一致している必要があります。

セットアップ コマンドを起動する

setupCommands プロパティと共に使用します。

プロパティ タイプ Description
text string 実行するデバッガー コマンド。
description string コマンドの説明 (省略可能)。
ignoreFailures boolean true に設定すると、コマンドからの失敗が無視されます。 既定値は false です。

パイプ トランスポート オプション

pipeTransport プロパティと共に使用します。

プロパティ タイプ Description
pipeCwd string パイプ プログラムに渡す作業ディレクトリの完全修飾パス。
pipeProgram string 実行するパイプ コマンドの完全修飾パス。
pipeArgs array 接続を構成するためにパイプ プログラムに渡すコマンド ライン引数。
debuggerPath string ターゲット マシン上のデバッガーへの完全なパス。例: /usr/bin/gdb。
pipeEnv object パイプ プログラムに渡す環境変数。
quoteArgs boolean 個々の引数に (スペースやタブなどの) 文字が含まれる場合に引用符で囲むかどうか。 false に設定すると、デバッガー コマンドを自動的に引用符で囲むことはなくなります。 既定値は true です。

ソース ファイル マップ のオプション

sourceFileMap プロパティと共に使用します。

プロパティ タイプ Description
editorPath string エディターが配置するソース コードの場所。
useForBreakpoints boolean ブレークポイントを設定する場合は、このソース マッピングを使用する必要があります。 false に設定すると、ブレークポイントを設定するのにファイル名と行番号のみが使用されます。 true に設定すると、ブレークポイントは、このソース マッピングが使用されている場合にのみ、ファイルへの完全パスと行番号で設定されます。 それ以外の場合は、ファイル名と行番号のみがブレークポイントの設定に使用されます。 既定値は true です。