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 |
integer | デバッガーをアタッチする省略可能なプロセス ID。 |
sourceFileMap |
オブジェクト | デバッグ エンジンに渡される省略可能なソース ファイル マッピング。 形式: { "\<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 |
配列 | プログラムに渡すコマンド ライン引数。 |
environment |
配列 | プログラムの環境に追加する環境変数。 例: [ { "name": "squid", "value": "clam" } ] 。 |
targetArchitecture |
string | デバッグ対象のアーキテクチャ。 このパラメーターが設定されていない場合は、該当するアーキテクチャが自動的に検出されます。 使用できる値は x86 、arm 、arm64 、mips 、x64 、amd64 、x86_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 |
配列 | 基になるデバッガーを設定するために実行する、1 つ以上の 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 など) の間で標準入力/出力をリレーするパイプとして別の実行可能ファイルを利用して、リモート マシンに接続するように、デバッガーに指示が与えられます。 使用できる値: 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 リモート デバッグと配置のプロパティ
リモート マシンでアプリをデバッグおよび配置するときに使用します。
プロパティ | タイプ | 説明 |
---|---|---|
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
プロパティと共に使用します。
プロパティ | タイプ | 説明 |
---|---|---|
text |
string | 実行するデバッガー コマンド。 |
description |
string | コマンドの説明 (省略可能)。 |
ignoreFailures |
boolean | true に設定すると、コマンドからの失敗が無視されます。 既定値は false です。 |
パイプ トランスポート オプション
pipeTransport
プロパティと共に使用します。
プロパティ | タイプ | 説明 |
---|---|---|
pipeCwd |
string | パイプ プログラムに渡す作業ディレクトリの完全修飾パス。 |
pipeProgram |
string | 実行するパイプ コマンドの完全修飾パス。 |
pipeArgs |
配列 | 接続を構成するためにパイプ プログラムに渡すコマンド ライン引数。 |
debuggerPath |
string | ターゲット マシン上のデバッガーへの完全なパス。例: /usr/bin/gdb。 |
pipeEnv |
オブジェクト | パイプ プログラムに渡す環境変数。 |
quoteArgs |
boolean | 個々の引数に (スペースやタブなどの) 文字が含まれる場合に引用符で囲むかどうか。 false に設定すると、デバッガー コマンドを自動的に引用符で囲むことはなくなります。 既定値は true です。 |
ソース ファイル マップ オプション
sourceFileMap
プロパティと共に使用します。
プロパティ | タイプ | 説明 |
---|---|---|
editorPath |
string | エディターが配置するソース コードの場所。 |
useForBreakpoints |
boolean | ブレークポイントを設定する場合は、このソース マッピングを使用する必要があります。 false に設定すると、ブレークポイントを設定するのにファイル名と行番号のみが使用されます。 true に設定すると、ブレークポイントは、このソース マッピングが使用されている場合にのみ、ファイルへの完全パスと行番号で設定されます。 それ以外の場合は、ファイル名と行番号のみがブレークポイントの設定に使用されます。 既定値は true です。 |