launch.vs.json
스키마 참조(C++)
Visual Studio 2017 이상 버전에서는 솔루션이나 프로젝트 파일 없이 거의 모든 유형의 디렉터리 기반 프로젝트에서 코드를 열고 빌드할 수 있습니다. 프로젝트 또는 솔루션 파일이 없는 경우 JSON 구성 파일을 통해 사용자 지정 빌드 작업과 시작 매개 변수를 지정할 수 있습니다. 이 문서에서는 디버깅 매개 변수를 지정하는 launch.vs.json
파일에 대해 설명합니다. “폴더 열기” 기능에 대한 자세한 내용은 프로젝트 또는 솔루션 없이 Visual Studio에서 코드 개발을 참조하세요.
파일을 만들려면 솔루션 탐색기에서 실행 파일을 마우스 오른쪽 단추로 클릭하고 디버깅 및 시작 설정을 선택합니다. 프로젝트와 가장 많이 일치하는 옵션을 선택한 후 다음 속성을 사용하여 필요에 따라 구성을 수정합니다. CMake 프로젝트 디버깅에 대한 자세한 내용은 CMake 디버깅 세션 구성을 참조하세요.
기본 속성
속성 | Type | 설명 |
---|---|---|
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.json 또는 CppProperties.json 과 같은 파일에 일부 변수를 정의하고 디버그 컨텍스트에 사용할 수 있도록 설정할 수 있습니다. Visual Studio 16.4: env.VARIABLE_NAME 구문을 사용하여 대상별로 환경 변수를 지정합니다. 변수를 설정 해제하려면 "null" 로 설정합니다. |
name |
string | 시작 항목 드롭다운에서 항목 이름을 지정합니다. |
noDebug |
부울 값 | 시작된 프로그램을 디버그할지 여부를 지정합니다. 지정되지 않은 경우 이 매개 변수의 기본값은 false 입니다. |
portName |
string | 실행 중인 프로세스에 연결할 때 포트 이름을 지정합니다. |
program |
string | 실행할 디버그 명령입니다. 기본값은 "${debugInfo.fullTargetPath}" 입니다. |
project |
string | 프로젝트 파일의 상대 경로를 지정합니다. CMake 프로젝트를 디버깅할 때는 일반적으로 이 값을 변경하지 않아도 됩니다. |
projectTarget |
string | project 를 빌드할 때 호출되는 선택적 대상을 지정합니다. 대상은 시작 항목 드롭다운의 이름과 일치해야 합니다. |
stopOnEntry |
부울 값 | 프로세스가 시작되고 디버거가 연결되는 즉시 중단할지 여부를 지정합니다. 이 매개 변수의 기본값은 false 입니다. |
remoteMachine |
string | 프로그램이 시작된 원격 컴퓨터의 이름을 지정합니다. |
type |
string | 프로젝트가 dll 인지, 아니면 exe 인지 여부를 지정합니다. 기본값은 .exe입니다. |
C++ Linux 속성
속성 | Type | 설명 |
---|---|---|
program |
string | 원격 컴퓨터의 프로그램 실행 파일에 대한 전체 경로입니다. CMake를 사용하는 경우 이 필드의 값으로 ${debugInfo.fullTargetPath} 라는 매크로를 사용할 수 있습니다. |
processId |
정수 | 디버거를 연결할 선택적 프로세스 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 중 하나입니다. 다음을 참조하세요. |
MIMode |
string | MIDebugEngine이 연결할 MI 지원 콘솔 디버거의 형식을 나타냅니다. 허용되는 값은 "gdb" , "lldb" 입니다. |
args |
array | 프로그램에 전달되는 명령줄 인수입니다. |
environment |
array | 프로그램의 환경에 추가할 환경 변수입니다. 예: [ { "name": "squid", "value": "clam" } ] |
targetArchitecture |
string | 디버기의 아키텍처입니다. 이 매개 변수가 설정되어 있지 않으면 아키텍처가 자동으로 검색됩니다. 허용되는 값은 x86 , arm , arm64 , mips , x64 , amd64 , x86_64 입니다. |
visualizerFile |
string | 이 프로세스를 디버그할 때 사용할 .natvis 파일입니다. 이 옵션은 GDB 자동 서식 지정과 호환되지 않습니다. 이 설정을 사용하는 경우 "showDisplayString" 을 참조하세요. |
showDisplayString |
부울 값 | visualizerFile이 지정된 경우 showDisplayString 은 표시 문자열을 사용하도록 설정합니다. 이 옵션을 활성화하면 디버깅 중에 성능이 저하될 수 있습니다. |
remoteMachineName |
string | Gdb를 호스팅하는 원격 Linux 컴퓨터와 디버그할 프로그램입니다. 새 Linux 머신을 추가하기 위해 연결 관리자를 사용합니다. CMake를 사용하는 경우 이 필드의 값으로 ${debugInfo.remoteMachineName} 라는 매크로를 사용할 수 있습니다. |
miDebuggerPath |
string | MI 지원 디버거(예: gdb)의 경로입니다. 지정하지 않으면 디버거의 경로를 먼저 검색합니다. |
miDebuggerServerAddress |
string | 연결할 MI 지원 디버거 서버의 네트워크 주소입니다. 예: "localhost:1234" |
setupCommands |
array | 기본 디버거를 설정하기 위해 실행할 하나 이상의 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 |
부울 값 | 서버에서 시작한 패턴을 stderr 스트림에서 검색하고, stderr을 디버그 출력에 기록합니다. 기본값은 false 입니다. |
coreDumpPath |
string | 지정된 프로그램에 대한 코어 덤프 파일의 선택적 전체 경로입니다. 기본값은 Null입니다. |
externalConsole | 부울 값 | true이면 디버기에 대해 콘솔이 시작됩니다. false 인 경우 콘솔이 시작되지 않습니다. 이 설정의 기본값은 false 입니다. 이 옵션은 어떤 경우 기술적인 이유로 인해 무시됩니다. |
pipeTransport |
string | 있을 경우 이 값은 디버거가 원격 컴퓨터에 연결할 때 Visual Studio와 MI 지원 디버거(예: gdb) 사이에 표준 입출력을 릴레이하는 파이프로 다른 실행 파일을 사용게 합니다. 허용되는 값: 하나 이상의 파이프 전송 옵션. |
debugInfo macros
다음 매크로는 디버깅 환경에 대한 정보를 제공합니다. 디버깅을 위해 앱의 시작을 사용자 지정하는 데 유용합니다.
매크로 | 설명 | 예시 |
---|---|---|
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 원격 디버그 및 배포 속성
원격 머신에서 앱을 디버그하고 배포할 때 사용됩니다.
속성 | Type | 설명 |
---|---|---|
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 |
부울 값 | 파일을 배포할지 여부를 지정합니다. |
remoteMachineName |
string | 프로그램이 시작된 원격 ARM64 Windows 머신의 이름을 지정합니다. 서버 이름이거나 원격 머신의 IP 주소일 수 있습니다. |
authenticationType |
string | 원격 연결 형식을 지정합니다. 가능한 값은 "windows" 및 "none" 입니다. 기본값은 "windows" 입니다. 이 값은 원격 머신에서 실행 중인 원격 디버거에 지정된 인증 설정과 일치해야 합니다. |
설치 명령 시작
setupCommands
속성과 함께 사용됨:
속성 | Type | 설명 |
---|---|---|
text |
string | 실행할 디버거 명령입니다. |
description |
string | 명령에 대한 선택적 설명입니다. |
ignoreFailures |
부울 값 | true이면 명령의 오류가 무시됩니다. 기본값은 false 입니다. |
파이프 전송 옵션
pipeTransport
속성과 함께 사용됨:
속성 | Type | 설명 |
---|---|---|
pipeCwd |
string | 파이프 프로그램의 작업 디렉터리에 대한 정규화된 경로입니다. |
pipeProgram |
string | 실행할 정규화된 파이프 명령입니다. |
pipeArgs |
array | 연결을 구성하기 위해 파이프 프로그램에 전달되는 명령줄 인수입니다. |
debuggerPath |
string | 대상 컴퓨터의 디버거에 대한 전체 경로(예: /usr/bin/gdb)입니다. |
pipeEnv |
개체 | 파이프 프로그램에 전달되는 환경 변수입니다. |
quoteArgs |
부울 값 | 개별 인수에 공백이나 탭과 같은 문자를 포함하는 경우 따옴표로 묶어야 하나요? false 인 경우 디버거 명령이 더 이상 자동으로 따옴표로 묶이지 않습니다. 기본값은 true 입니다. |
소스 파일 맵 옵션
sourceFileMap
속성과 함께 사용:
속성 | Type | 설명 |
---|---|---|
editorPath |
string | 편집기에서 찾을 소스 코드의 위치입니다. |
useForBreakpoints |
부울 값 | 중단점을 설정할 때 이 소스 매핑을 사용해야 합니다. false 인 경우 중단점 설정에 파일 이름과 줄 숫자만 사용됩니다. true 인 경우 이 소스 매핑이 사용되는 경우에만 파일의 전체 경로와 줄 번호를 사용해 중단점이 설정됩니다. 아니면 중단점을 설정할 때 파일 이름과 줄 번호만 사용합니다. 기본값은 true 입니다. |