Partilhar via


/dynamicdeopt (Habilitar depuração dinâmica C++) (visualização)

Importante

A opção de compilador /dynamicdeopt está atualmente em visualização. Essas informações estão relacionadas a um recurso de pré-lançamento que pode ser substancialmente modificado antes do lançamento. A Microsoft não oferece garantias, expressas ou implícitas, em relação às informações fornecidas aqui.

Habilite de depuração dinâmica (visualização) C++ para que você possa depurar código otimizado como se fosse compilado desotimizado e entrar em qualquer lugar com a desotimização de função sob demanda.

Sintaxe

/dynamicdeopt
/dynamicdeopt:suffix <suffix>
/dynamicdeopt:sync

Argumentos

suffix
Especifique a extensão do arquivo para a saída desotimizada.

Sem opções e dadas test.cpp como entrada, sua saída inclui test.obj, test.exee test.pdb, bem como test.alt.obj, test.alt.exee test.alt.pdb. Essa opção permite que você altere o sufixo dos artefatos de construção binários não otimizados de .alt para outra coisa. Se você alterar o sufixo, todos os arquivos deverão usar o novo sufixo e ele precisará corresponder ao nome passado para o vinculador usando /dynamicdeopt:suffix (Visualização). Normalmente, você não usa essa opção, a menos que precise evitar colisões de nomes de arquivos com outros arquivos que você tem.

sync
Cria a saída desotimizada depois de construir a saída otimizada em vez de em paralelo. Por padrão, o compilador gera uma instância paralela do gerador de código. Esta mudança faz com que eles sejam executados em série. Essa opção é fornecida caso se adapte melhor ao seu ambiente de compilação.

Observações

Esse sinalizador de visualização, disponível a partir do Visual Studio 2022 Versão 17.14 Preview 2, aplica-se apenas a projetos x64 e deve ser usado com o sinalizador de vinculador correspondente, /DYNAMICDEOPT.

A compilação com /dynamicdeopt gera outros binários que são usados para depuração. Quando você depura uma função otimizada em um arquivo otimizado, o depurador entra no binário alternativo. Isso permite que você depure como se estivesse depurando código não otimizado enquanto ainda obtém as vantagens de desempenho do código otimizado.

/dynamicdeopt requer:

/DEBUG ou /DEBUG:FULL. Se você não especificar /DEBUG, ou se especificar /DEBUG:FASTLINK, o vinculador dará um erro fatal. Se você especificar /INCREMENTAL, o compilador gerará um aviso e desligará automaticamente /INCREMENTAL. Se você especificar /OPT:ICF, o compilador gerará um aviso de que a experiência de depuração não é tão boa. Isso ocorre porque o ICF pode fazer com que as funções sejam removidas do arquivo alt, o que significa que você não pode entrar nelas.

IncrediBuild 10.24 suporta compilações de depuração dinâmica C++.
O FastBuild v1.15 suporta compilações de depuração dinâmica C++.

/dynamicdeopt é incompatível com edit-and-continue e com as seguintes opções de compilador:

/GL
/ZI
/RTC1
/RTCs
/RTCc
/RTCu
/GH
/Gh
/fastcap
/callcap
/ZW
/fsanitize=address
/fsanitize=kernel-address
All of the CLR flags

Definir essa opção de vinculador no ambiente de desenvolvimento do Visual Studio

Você pode definir essa opção dentro do Visual Studio. Para obter mais informações, consulte C++ Dynamic Debugging (Preview). Há vantagens em definir a opção no Visual Studio porque o MSBuild suprime automaticamente algumas das opções incompatíveis, como /GL e /OPT:ICF. Ele também define a opção de vinculador correspondente (/DYNAMICDEOPT). Você também pode definir a opção na linha de comando.

Definir esta opção do compilador programaticamente

Ver também

Depuração dinâmica C++ (visualização)
de opções do compilador MSVC
Compilador MSVC Command-Line de sintaxe