Observação
O acesso a essa página exige autorização. Você pode tentar entrar ou alterar diretórios.
O acesso a essa página exige autorização. Você pode tentar alterar os diretórios.
Editar e continuar para projetos C++ manipula a maioria dos tipos de alterações de código. No entanto, algumas alterações não podem ser aplicadas durante a execução do programa. Para aplicar essas alterações, você deve interromper a execução e criar uma nova versão do código.
Consulte Editar e Continuar (C++) para obter informações sobre como trabalhar com Editar e Continuar para C++ no Visual Studio.
Requirements
Configurações de build (Propriedades do Projeto > )
C/C++ > Formato geral > de informações de depuração: programar banco de dados para editar e continuar (
/ZI)Vinculador > Habilitar > a vinculação incremental geral: sim (
/INCREMENTAL)Qualquer configuração de vinculador incompatível (como
/SAFESEH, ou/OPT:...) pode causar o aviso LNK4075 durante o build. Exemplo:LINK : warning LNK4075: ignoring '/INCREMENTAL' due to '/OPT:ICF' specification
Configurações do depurador (Opções de Depuração > )
Abra o painel Depuração (ou Ferramentas) >Opções, e expanda a seção Todas as Configurações>Depuração>.NET/C++ Hot Reload.
Abra o diálogo Depurar (ou Ferramentas) >Opções e expanda a seção Debugging>.NET/C++ Hot Reload.
Selecione uma ou todas as seguintes opções para habilitar o recurso:
Habilitar Hot Reload: habilita o Hot Reload ao iniciar com o depurador anexado (F5).
Habilitar o Recarregamento Dinâmico ao iniciar sem depuração: habilita o recarregamento frequente ao iniciar sem o depurador anexado (Ctrl + F5).
Habilitar a recarga ativa no salvamento de arquivos: habilita o recarregamento frequente quando o arquivo é salvo.
Verbosidade de registro em log: defina o nível de registro em log quando o Hot Reload estiver habilitado. Escolha entre Mínimo (padrão), Detalhado ou Diagnóstico.
Alterar essas configurações afeta todos os projetos em que você trabalha. Você não precisa recriar seu aplicativo depois de alterar uma configuração. Se você criar seu aplicativo a partir da linha de comando ou de um makefile, mas depurar no ambiente do Visual Studio, ainda poderá usar Editar e Continuar se definir a opção /ZI .
Na caixa de diálogo
Qualquer configuração de compilador ou vinculador incompatível causa um erro durante Editar e Continuar.
Exemplo: Edit and Continue : error : ‘file.cpp’ in ‘MyApp.exe’ was not compiled with Edit and Continue enabled. Ensure that the file is compiled with the Program Database for Edit and Continue (/ZI) option.
Alterações sem suporte
As seguintes alterações em C/C++ não podem ser aplicadas durante uma sessão de depuração. Se você fizer qualquer uma dessas alterações e tentar aplicar alterações de código, uma mensagem de erro ou aviso será exibida na janela Saída .
A maioria das alterações em dados globais ou estáticos.
Alterações em executáveis copiados de outro computador e não criados localmente.
Alterações em um tipo de dados que afetam o layout de um objeto, como membros de dados de uma classe.
Adicionando mais de 64 mil bytes de novos códigos ou dados.
Adicionando variáveis que exigem um construtor em um ponto anterior ao ponteiro de instrução.
Alterações que afetam o código que requer inicialização em tempo de execução.
Adicionando manipuladores de exceção, em alguns casos.
Alterações nos arquivos de recursos.
Alterações no código em arquivos somente leitura.
Alterações no código sem um arquivo PDB correspondente.
Alterações no código que não tem nenhum arquivo de objeto.
Modificando lambdas nos seguintes cenários:
- Quando lambdas têm um membro estático ou global.
- Quando você passa lambdas para um
std::function. Esse método causa uma violação ODR genuína e resulta em C1092.
Editar e Continuar não atualiza bibliotecas estáticas. Se você fizer uma alteração em uma biblioteca estática, a execução continuará com a versão antiga e nenhum aviso será emitido.
Cenários sem suporte
Editar e Continuar para C/C++ não está disponível nos seguintes cenários de depuração:
Depuração de aplicativos nativos compilados com /Zo (aperfeiçoamento da depuração otimizada)
Projetos que usam o conjunto de ferramentas MSVC v120 e a opção C/C++
/bigobj. Editar e Continuar com/bigobjsó é suportado nas ferramentas de compilação MSVC v140 e posteriores.Depuração em modo misto (nativo/gerenciado).
Depuração do JavaScript.
Depuração de SQL.
Depurando um arquivo de despejo.
Editar código após uma exceção sem tratamento, quando a opção Desabilitar a pilha de chamadas em exceções sem tratamento não estiver selecionada.
Depurando um aplicativo usando Anexar a em vez de executar o aplicativo escolhendo Iniciar no menu Depurar.
Depurando código otimizado.
Depurando uma versão antiga do código depois que uma nova versão falhou ao compilar devido a erros de compilação.
Usando um caminho de compilador personalizado (cl.exe). Por motivos de segurança, para recompilação de um arquivo durante Editar e Continuar, o Visual Studio sempre usa o compilador instalado. Se você estiver usando um caminho de compilador personalizado (por exemplo, por meio de uma variável personalizada
$(ExecutablePath)em seu*.propsarquivo), um aviso será exibido e o Visual Studio retornará ao uso do compilador instalado da mesma versão/arquitetura.Arquiteturas herdadas/conjuntos de ferramentas MSVC. Com o conjunto de ferramentas MSVC v140, o depurador padrão dá suporte a Editar e Continuar com aplicativos X86 e X64. Os conjuntos de ferramentas herdados dão suporte apenas a aplicativos X86. Os conjuntos de ferramentas mais antigos do que o MSVC v120 devem usar o depurador herdado ao marcar "Opções > de Depuração > Geral > Usar Modo de Compatibilidade Nativa" para utilizar Editar e Continuar.
Limitações de vinculação
Opções do vinculador que desabilitam Editar e Continuar
As seguintes opções do vinculador desabilitam Editar e Continuar:
Definir /OPT:REF, /OPT:ICF ou /INCREMENTAL:NO desabilita Editar e Continuar com o seguinte aviso:
LINK : warning LNK4075: ignoring /EDITANDCONTINUE due to /OPT specificationDefinir /ORDER, /RELEASE ou /FORCE desabilita Editar e Continuar com o seguinte aviso:
LINK : warning LNK4075: ignoring /INCREMENTAL due to /option specificationDefinir qualquer opção que impeça a criação de um arquivo de banco de dados do programa (.pdb) desabilita Editar e Continuar sem nenhum aviso específico.
Limitações de revinculação automática
Por padrão, Edit and Continue reconecta seu programa no final de uma sessão de depuração para criar um executável atualizado.
Editar e Continuar não poderá reestabelecer a ligação do seu programa se você estiver depurando-o de um local diferente do local de build original. Uma mensagem informa que você precisa recompilar manualmente.
Editar e Continuar não recria bibliotecas estáticas. Se você fizer alterações em uma biblioteca estática usando Editar e Continuar, precisará recriar manualmente a biblioteca e revincular aplicativos usando-a.
Editar e Continuar não invoca etapas de build personalizadas. Se o programa usar etapas de build personalizadas, convém recriar manualmente para que as etapas de build personalizadas possam ser invocadas. Nesse caso, você pode desabilitar a revinculação após Editar e Continuar para garantir que você seja solicitado a recompilar manualmente.
Para desabilitar a revinculação após Editar e Continuar:
No menu Depurar , escolha Opções e Configurações.
Na caixa de diálogo Opções , no nó Depuração , selecione o nó Editar e Continuar .
Desmarque a caixa de seleção Alterações de Código de Relink Após Depuração.
Limitações de cabeçalho pré-compilado
Por padrão, Editar e Continuar carrega e processa cabeçalhos pré-compilados em segundo plano para acelerar o processamento de alterações de código. Carregar cabeçalhos pré-compilados requer alocação de memória física, o que pode ser um problema se você estiver compilando em um computador com RAM limitada. Você pode determinar se isso pode ser um problema usando o Gerenciador de Tarefas do Windows para determinar a quantidade de memória física disponível durante a depuração. Se esse valor for maior que o tamanho dos cabeçalhos pré-compilados, Editar e Continuar não deverá ter nenhum problema. Se a quantidade for menor que o tamanho dos cabeçalhos pré-compilados, você poderá impedir que Editar e Continuar carregue cabeçalhos pré-compilados em segundo plano.
Para desabilitar o carregamento em segundo plano de cabeçalhos pré-compilados para Editar e Continuar:
No menu Depurar , escolha Opções e Configurações.
Na caixa de diálogo Opções , no nó Depuração , selecione o nó Editar e Continuar .
Desmarque a caixa de seleção Permitir Pré-preenchimento .
Limitações dos atributos IDL
Editar e Continuar não regenera arquivos IDL (linguagem de definição de interface). Portanto, as alterações nos atributos IDL não são refletidas enquanto você está depurando. Para ver o resultado das alterações nos atributos IDL, você deve parar de depurar e recompilar seu aplicativo. Editar e Continuar não gerará um erro ou aviso se os atributos IDL tiverem sido alterados. Para obter mais informações, consulte Atributos IDL.
Diagnosticando problemas
Se o cenário não se ajustar a nenhuma das condições mencionadas acima, você poderá reunir mais detalhes definindo o seguinte valor do Registro DWORD:
Abra um prompt de comando do desenvolvedor.
Execute o comando a seguir:
VsRegEdit.exe set “C:\Program Files\Microsoft Visual Studio\[Version]\[YOUR EDITION]” HKCU Debugger NativeEncDiagnosticLoggingLevel DWORD 1VsRegEdit.exe set “C:\Program Files (x86)\Microsoft Visual Studio\[Version]\[YOUR EDITION]” HKCU Debugger NativeEncDiagnosticLoggingLevel DWORD 1
Definir esse valor no início de uma sessão de depuração resulta em que os vários componentes de Editar e Continuar gerem log detalhado no painel de Depuração da Janela de Saída.