launch.vs.json referência de esquema (C++)

No Visual Studio 2017 e versões posteriores, é possível abrir e compilar código de praticamente qualquer projeto baseado em diretório sem exigir uma solução ou arquivo de projeto. Quando não houver arquivo de projeto ou solução, você poderá especificar as tarefas de build personalizadas e iniciar os parâmetros por meio de arquivos de configuração JSON. Este artigo descreve o arquivo launch.vs.json, que especifica os parâmetros de depuração. Para obter mais informações sobre o recurso "Abrir pasta", consulte Desenvolver código no Visual Studio sem projetos ou soluções.

Para criar o arquivo, clique com o botão direito do mouse em um arquivo executável no Gerenciador de Soluções e escolha Configurações de Depuração e de Inicialização. Escolha a opção que mais se aproxima do projeto e, em seguida, use as propriedades a seguir para modificar a configuração conforme necessário. Para obter mais informações sobre depuração de projetos CMake, consulte Configurar sessões de depuração do CMake.

Propriedades padrão

Propriedade Type Descrição
args array Especifica os argumentos de linha de comando passados para o programa iniciado.
buildConfigurations array Um par chave-valor que especifica o nome do modo de build para aplicar as configurações. Por exemplo, Debug ou Release e as configurações a serem usadas de acordo com o modo de build selecionado.
currentDir string Especifica o caminho completo do diretório para o destino de build. O diretório é detectado automaticamente, amenos que esse parâmetro seja definido.
cwd string Caminho completo para o diretório no sistema remoto onde o programa será executado. Usa como padrão "${debugInfo.defaultWorkingDirectory}"
debugType string Especifica o modo de depuração de acordo com o tipo de código (nativo, gerenciado ou misto). O modo é detectado automaticamente, a menos que esse parâmetro seja definido. Valores permitidos: "native"", "managed", "mixed".
env array Especifica uma lista de valores-chave de variáveis de ambiente personalizadas. Por exemplo: env:{"myEnv":"myVal"}.
inheritEnvironments array Especifica um conjunto de variáveis de ambiente herdadas de várias origens. Você pode definir algumas variáveis em arquivos como CMakeSettings.json ou CppProperties.json disponibilizá-las para o contexto de depuração. Visual Studio 16.4: especifique variáveis de ambiente por destino usando a sintaxe env.VARIABLE_NAME. Para remover definição de uma variável, defina-a como "null".
name string Especifica o nome da entrada na lista suspensa Item de Inicialização.
noDebug boolean Especifica se o programa iniciado deverá ser depurado. O valor padrão para esse parâmetro será false, se não estiver especificado.
portName string Especifica o nome da porta ao conectar um processo em execução.
program string O comando de depuração a ser executado. Assume o padrão de "${debugInfo.fullTargetPath}".
project string Especifica o caminho relativo para o arquivo de projeto. Normalmente, não é necessário alterar esse valor ao depurar um projeto CMake.
projectTarget string Especifica o destino opcional invocado ao compilar project. O destino deve corresponder ao nome na lista suspensa Item de Inicialização.
stopOnEntry boolean Especifica se uma interrupção deverá ser interrompida assim que o processo for iniciado e o depurador anexado. O valor padrão para esse parâmetro é false.
remoteMachine string Especifica o nome do computador remoto em que o programa inicia.
type string Especifica se o projeto é dll ou exe Padrões para .exe

Propriedades do Linux C++

Propriedade Type Descrição
program string Caminho completo para o programa executável no caminho remoto. Ao usar o CMake, a macro ${debugInfo.fullTargetPath} poderá ser usada como o valor desse campo.
processId Número inteiro ID de processo opcional ao qual anexar o depurador.
sourceFileMap objeto Mapeamentos de arquivo de origem opcionais passados para o mecanismo de depuração. Formatar: { "\<Compiler source location>": "\<Editor source location>" } ou { "\<Compiler source location>": { "editorPath": "\<Editor source location>", "useForBreakpoints": true } }. Exemplo: { "/home/user/foo": "C:\\foo" } ou { "/home/user/foo": { "editorPath": "c:\\foo", "useForBreakpoints": true } }. Para obter mais informações, consulte Opções de mapa de arquivo de origem.
additionalProperties string Um dos sourceFileMapOptions. (Consulte abaixo.)
MIMode string Indica o tipo de depurador de console habilitado para MI ao qual o MIDebugEngine se conectará. Os valores permitidos são "gdb", "lldb".
args array Argumentos de linha de comando passados para o programa.
environment array Variáveis de ambiente a serem adicionadas ao ambiente para o programa. Exemplo: [ { "name": "squid", "value": "clam" } ].
targetArchitecture string A arquitetura do depurado. A arquitetura é detectada automaticamente, a menos que esse parâmetro seja definido. Os valores permitidos são x86, arm, arm64, mips, x64, amd64, x86_64.
visualizerFile string O arquivo .natvis a ser usado ao depurar esse processo. Esta opção não é compatível com a reformatação automática de GDB. Consulte "showDisplayString" se você usa essa configuração.
showDisplayString boolean Quando um visualizerFile estiver especificado, showDisplayString habilitará a cadeia de caracteres de exibição. Ativar essa opção poderá diminuir o desempenho durante a depuração.
remoteMachineName string O computador remoto Linux que hospeda o gdb e o programa para depurar. Use o Gerenciador de Conexões para a adição de novos computadores Linux. Ao usar o CMake, a macro ${debugInfo.remoteMachineName} poderá ser usada como o valor desse campo.
miDebuggerPath string O caminho para o depurador habilitado para MI (como gdb). Quando não for especificado, ele pesquisará o PATH primeiro para o depurador.
miDebuggerServerAddress string Endereço de rede do servidor do depurador habilitado para MI ao qual se conectar. Exemplo: "localhost:1234".
setupCommands array Um ou mais comandos GDB/LLDB a serem executados para configurar o depurador subjacente. Exemplo: "setupCommands": [ { "text": "-enable-pretty-printing", "description": "Enable GDB pretty printing", "ignoreFailures": true }]. Para obter mais informações, consulte Iniciar comandos de configuração.
customLaunchSetupCommands array Se fornecido, esse valor substituirá os comandos padrão usados para iniciar um destino por alguns outros comandos. Por exemplo, use "-target-attach" para anexar a um processo de destino. Uma lista de comandos vazia substituirá os comandos de inicialização por nada, o que poderá ser útil se o depurador estiver recebendo opções de inicialização como opções de linha de comando. Exemplo: "customLaunchSetupCommands": [ { "text": "target-run", "description": "run target", "ignoreFailures": false }].
launchCompleteCommand string O comando que executará depois que o depurador estiver completamente configurado para fazer com que o processo de destino execute. Os valores permitidos são "exec-run", "exec-continue", "None". O valor padrão é "exec-run".
debugServerPath string Caminho completo opcional para o servidor de depuração a ser iniciado. O padrão é nulo.
debugServerArgs string Argumentos de servidor de depuração opcionais. O padrão é nulo.
filterStderr boolean Pesquise stderr stream para o padrão iniciado pelo servidor e registre stderr para depurar a saída. Assume o padrão de false.
coreDumpPath string Caminho completo opcional para um arquivo de dump principal para o programa especificado. O padrão é nulo.
externalConsole boolean Se true, um console é iniciado para o depurado. Se false, nenhum console é iniciado. O padrão para essa configuração é false. Essa opção é ignorada em alguns casos por motivos técnicos.
pipeTransport string Quando presente, esse valor informará ao depurador para conectar um computador remoto usando outro executável como um pipe que retransmitirá a entrada/saída padrão entre o Visual Studio e o depurador habilitado para MI (como gdb). Valores permitidos: uma ou mais Opções de transporte de pipe.

debugInfo macros

As macros a seguir fornecem informações sobre o ambiente de depuração. Eles são úteis para personalizar a inicialização do aplicativo para depuração.

Macro Descrição Exemplo
addressSanitizerRuntimeFlags Sinalizadores de runtime utilizados para personalizar o comportamento do address sanitizer. Usado para definir a variável de ambiente "ASAN_OPTIONS". "env": {"ASAN_OPTIONS": "${addressSanitizerRuntimeFlags}:anotherFlag=true"}
defaultWorkingDirectory Defina para a parte do diretório de "fullTargetPath". Se a variável CMake VS_DEBUGGER_WORKING_DIRECTORY for definida, então defaultWorkingDirectory será definido para esse valor. "cwd":"${debugInfo.defaultWorkingDirectory}"
fullTargetPath O caminho completo para o binário que está sendo depurado. "program": "${debugInfo.fullTargetPath}"
linuxNatvisPath O caminho completo do Windows para o arquivo .natvis. Geralmente aparece como o valor "visualizerFile".
parentProcessId A ID do processo para a instância atual do Visual Studio. Usado como um parâmetro para shellexec. Veja o exemplo pipeTransport abaixo.
remoteMachineId Um identificador numérico exclusivo para a conexão com o computador remoto. Usado como um parâmetro para shellexec. Veja o exemplo pipeTransport abaixo.
remoteWorkspaceRoot Caminho do Linux para a cópia remota do workspace. Especifique os locais dos arquivos no computador remoto. Por exemplo: "args": ["${debugInfo.remoteWorkspaceRoot}/Data/MyInputFile.dat"]
resolvedRemoteMachineName O nome do computador remoto de destino. Valor "targetMachine" em uma diretiva de implantação
shellexecPath O caminho para o programa shellexec que o Visual Studio está usando para gerenciar a conexão de computador remoto. Veja o exemplo pipeTransport abaixo
tty O gdb redirecionará a entrada e a saída para esse dispositivo para o programa que está sendo depurado. Usado como parâmetro para gdb (-tty). Veja o exemplo pipeTransport abaixo.
windowsSubsystemPath O caminho completo para a instância do Subsistema do Windows para Linux.

O exemplo pipeTransport abaixo mostra como usar algumas das macros debugInfo definidas acima:

"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}"
    ]
    }

Propriedades de depuração e implantação remotas do Windows C++

Usado ao depurar e implantar um aplicativo em um computador remoto.

Propriedade Type Descrição
cwd string O diretório de trabalho do destino no computador remoto. Ao usar o CMake, a macro ${debugInfo.defaultWorkingDirectory} poderá ser usada como o valor desse campo. O valor padrão é o diretório do programa/comando de depuração.
deploy string Especifica arquivos ou diretórios adicionais a serem implementados. Por exemplo:
"deploy": {"sourcePath":"<Full path to source file/directory on host machine>", "targetPath":"<Full destination path to file/directory on target machine>"}
deployDirectory string O local no computador remoto onde as saídas do projeto são implantadas automaticamente. O padrão é "C:\Windows Default Deploy Directory\<name of app>
deployDebugRuntimeLibraries string Especifica se as bibliotecas de runtime de depuração deverão ser implementadas para a plataforma ativa. Padrões para "true" se o configurationType for "Debug".
deployRuntimeLibraries string Especifica se as bibliotecas de runtime deverão ser implementadas para a plataforma ativa. Padrão para "true" se o configurationType for "MinSizeRel", "RelWithDebInfo" ou "Release".
disableDeploy boolean Especifica se os arquivos deverão ser implantados.
remoteMachineName string Especifica o nome do computador remoto Windows ARM64 na qual o programa é ativado. Pode ser o nome do servidor ou o endereço IP do computador remoto.
authenticationType string Especifica o tipo de conexão remota. Os valores possíveis são "windows" e "none". O padrão é "windows". Esse valor deve corresponder à configuração de autenticação especificada no depurador remoto em execução no computador remoto.

Iniciar comandos de instalação

Usado com a propriedade setupCommands:

Propriedade Type Descrição
text string O comando do depurador a ser executado.
description string Descrição opcional para o comando.
ignoreFailures boolean Se true, as falhas do comando deverão ser ignoradas. Assume o padrão de false.

Opções de transporte de pipe

Usado com a propriedade pipeTransport:

Propriedade Type Descrição
pipeCwd string O caminho totalmente qualificado para o diretório de trabalho do programa do pipe.
pipeProgram string O comando do pipe totalmente qualificado para executar.
pipeArgs array Argumentos da linha de comando passados para o programa do pipe para configurar a conexão.
debuggerPath string O caminho completo para o depurador no computador de destino, por exemplo, /usr/bin/gdb.
pipeEnv objeto Variáveis de ambiente passadas para o programa do pipe.
quoteArgs boolean Se os argumentos individuais contiverem caracteres (como espaços ou tabulações), eles deverão ser citados? Se false, o comando do depurador não será mais citado automaticamente. O padrão é true.

Opções de mapa de arquivo de origem

Use com a propriedade sourceFileMap:

Propriedade Type Descrição
editorPath string A localização do código-fonte para o editor localizar.
useForBreakpoints boolean Ao definir os pontos de interrupção, será necessário usar esse mapeamento de origem. Se false, apenas o nome do arquivo e o número da linha serão usados para definir os pontos de interrupção. Se true, os pontos de interrupção serão definidos com o caminho completo para o arquivo e o número de linha somente quando esse mapeamento de origem for usado. Caso contrário, apenas o nome do arquivo e o número da linha serão usados ao definir os pontos de interrupção. O padrão é true.