Bagikan melalui


/dynamicdeopt (Aktifkan C++ Dynamic Debugging) (Pratinjau)

Penting

Sakelar pengkompilasi /dynamicdeopt saat ini dalam PRATINJAU. Informasi ini berkaitan dengan fitur prarilis yang mungkin dimodifikasi secara substansial sebelum rilis. Microsoft tidak memberikan jaminan, tersurat maupun tersirat, sehubungan dengan informasi yang diberikan di sini.

Aktifkan C++ Dynamic Debugging (Pratinjau) sehingga Anda dapat men-debug kode yang dioptimalkan seolah-olah dikompilasi tidak optimal dan melangkah di mana saja dengan deoptimisasi fungsi sesuai permintaan.

Sintaksis

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

Argumen

suffix
Tentukan ekstensi file untuk output yang tidak optimal.

Tanpa opsi dan test.cpp yang diberikan sebagai input, output Anda mencakup test.obj, test.exe, dan test.pdb, serta test.alt.obj, test.alt.exe, dan test.alt.pdb. Sakelar ini memungkinkan Anda mengubah akhiran artefak build biner yang tidak optimal dari .alt ke yang lain. Jika Anda mengubah akhiran, semua file harus menggunakan akhiran baru, dan perlu mencocokkan nama yang diteruskan ke linker menggunakan /dynamicdeopt:suffix (Pratinjau). Anda biasanya tidak menggunakan sakelar ini kecuali Anda perlu menghindari tabrakan nama file dengan file lain yang Anda miliki.

sync
Membangun output yang tidak optimal setelah membangun output yang dioptimalkan alih-alih secara paralel. Secara default, pengkompilasi menelurkan instans paralel dari generator kode. Sakelar ini membuat mereka berjalan secara serial sebagai gantinya. Sakelar ini disediakan jika ini lebih sesuai dengan lingkungan build Anda.

Komentar

Bendera pratinjau ini, tersedia dimulai dengan Visual Studio 2022 Versi 17.14 Pratinjau 2, hanya berlaku untuk proyek x64 dan harus digunakan dengan bendera linker yang sesuai, /DYNAMICDEOPT.

Mengkompilasi dengan /dynamicdeopt menghasilkan biner lain yang digunakan untuk penelusuran kesalahan. Saat Anda men-debug fungsi yang dioptimalkan dalam file yang dioptimalkan, debugger akan masuk ke biner alternatif sebagai gantinya. Ini memungkinkan Anda untuk men-debug seolah-olah Anda men-debug kode yang tidak optimal sambil tetap mendapatkan keuntungan performa dari kode yang dioptimalkan.

/dynamicdeopt memerlukan:

/DEBUG atau /DEBUG:FULL. Jika Anda tidak menentukan /DEBUG, atau jika Anda menentukan /DEBUG:FASTLINK, linker akan memberikan kesalahan fatal. Jika Anda menentukan /INCREMENTAL, pengkompilasi menghasilkan peringatan dan secara otomatis menonaktifkan /INCREMENTAL. Jika Anda menentukan /OPT:ICF, pengkompilasi menghasilkan peringatan bahwa pengalaman debug tidak sebagus. Ini karena ICF dapat menyebabkan fungsi dihapus dari file alt, yang berarti Anda tidak dapat melangkah ke dalamnya.

IncrediBuild 10.24 mendukung build C++ Dynamic Debugging.
FastBuild v1.15 mendukung build C++ Dynamic Debugging.

/dynamicdeopt tidak kompatibel dengan edit dan lanjutkan dan sakelar kompiler berikut:

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

Atur opsi linker ini di lingkungan pengembangan Visual Studio

Anda dapat mengatur sakelar ini di dalam Visual Studio. Untuk informasi selengkapnya, lihat C++ Dynamic Debugging (Pratinjau). Ada keuntungan untuk mengatur sakelar di Visual Studio karena MSBuild secara otomatis menekan beberapa sakelar yang tidak kompatibel seperti /GL dan /OPT:ICF. Ini juga mengatur opsi linker yang sesuai (/DYNAMICDEOPT). Anda juga dapat mengatur sakelar di baris perintah.

Atur opsi pengkompilasi ini secara terprogram

Lihat juga

C++ Dynamic Debugging (Pratinjau)
Opsi Pengkompilasi MSVC
Sintaks Baris Perintah Pengkompilasi MSVC