Megjegyzés
Az oldalhoz való hozzáféréshez engedély szükséges. Megpróbálhat bejelentkezni vagy módosítani a címtárat.
Az oldalhoz való hozzáféréshez engedély szükséges. Megpróbálhatja módosítani a címtárat.
A Hot Reload mechanizmus, amelyet korábban Szerkesztés és Folytatásnak hívtak, kezeli a kódmódosítások legtöbb típusát. Egyes módosítások azonban nem alkalmazhatók a program végrehajtása során. A módosítások alkalmazásához le kell állítania a végrehajtást, és létre kell készítenie a kód egy új verzióját.
A Hot Reload (C++) című témakörben talál információkat a C++ Hot Reload használatáról a Visual Studio-ban.
Requirements
Felépítési beállítások (Projekt tulajdonságok >)
C/C++ > Általános > hibakeresési információformátum: Programadatbázis szerkesztéshez és folytatáshoz (
/ZI)Csatoló > Általános > Növekményes csatolás engedélyezése: Igen (
/INCREMENTAL)Az inkompatibilis csatolási beállítások (például
/SAFESEH... vagy/OPT:...) okozhatják az LNK4075 figyelmeztetést a buildelés során. Példa:LINK : warning LNK4075: ignoring '/INCREMENTAL' due to '/OPT:ICF' specification
Hibakereső beállításai (Hibakeresési > beállítások)
Nyissa meg a Hibakeresés (vagy Eszközök) >Beállítások panelt, és bontsa ki az Összes beállítás>hibakeresés .NET>/C++ Hot Reload szakaszt.
Nyissa meg a Hibakeresés (vagy Eszközök) >Beállítások párbeszédpanelt, és bontsa ki a Hibakeresés>.NET/C++ Hot Reload szakaszt.
A funkció engedélyezéséhez válassza az alábbi lehetőségek egyikét vagy mindegyikét:
Hot Reload engedélyezése: Engedélyezi a Hot Reload funkciót, amikor a hibakereső csatlakozik (F5).
Gyakori elérésű újratöltés engedélyezése hibakeresés nélküli indításkor: Engedélyezi a gyakori elérésű újratöltést, ha a hibakereső nincs csatlakoztatva (Ctrl + F5).
Gyakori elérésű újratöltés engedélyezése fájlmentéskor: Engedélyezi a gyakori újratöltést a fájl mentésekor.
Naplózás részletessége: Adja meg a naplózás szintjét, ha a Hot Reload engedélyezve van. Válasszon a Minimális (alapértelmezett), a Részletes vagy a Diagnosztikai lehetőség közül.
Ezeknek a beállításoknak a módosítása minden olyan projektet érint, amelyen dolgozik. A beállítások módosítása után nem kell újraépítenie az alkalmazást. Ha a parancssorból vagy egy makefile-ból hozza létre az alkalmazást, de hibakeresést hajt végre a Visual Studio-környezetben, akkor is használhatja a Szerkesztés és a Folytatás lehetőséget, ha be van állítva a /ZI beállítás.
Nem támogatott módosítások
A hibakeresési munkamenetek során a következő C/C++ módosítások nem alkalmazhatók. Ha bármelyik módosítást végrehajtotta, majd megpróbál kódmódosításokat alkalmazni, hibaüzenet vagy figyelmeztető üzenet jelenik meg a Kimenet ablakban.
A globális vagy statikus adatok változásainak többsége.
A más gépről másolt és nem helyileg létrehozott végrehajtható elemek módosítása.
Olyan adattípus módosítása, amely befolyásolja egy objektum elrendezését, például egy osztály adattagjainak.
Több mint 64 000 bájtnyi új kód vagy adat hozzáadása.
Olyan változók hozzáadása, amelyek konstruktort igényelnek az utasításmutató előtt egy ponton.
A futásidejű inicializálást igénylő kódot érintő módosítások.
Kivételkezelők hozzáadása bizonyos esetekben.
Erőforrásfájlok módosítása.
A csak olvasható fájlokban lévő kód módosítása.
A kód módosítása a megfelelő PDB-fájl nélkül.
Olyan kód módosítása, amely nem rendelkezik objektumfájllal.
A lambdas módosítása a következő forgatókönyvekben:
- Ha egy lambda-függvénynek statikus vagy globális tagja van.
- Amikor lambdákat ad át egy
std::function-nek. Ez a módszer valódi ODR-szabálysértést okoz, és C1092-t eredményez.
Hot Reload nem frissíti a statikus kódtárakat. Ha módosít egy statikus kódtárat, a végrehajtás a régi verzióval folytatódik, és nincs figyelmeztetés.
Nem támogatott forgatókönyvek
A C/C++ Hot Reload a következő hibakeresési forgatókönyvekben nem érhető el:
A /Zo használatával lefordított natív alkalmazások hibakeresése (optimalizált hibakeresés javítása)
Az MSVC v120 eszközkészletet és a C/C++
/bigobjkapcsolót használó projektek. Csak az MSVC v140 és újabb fordítóeszközök támogatják az "Edit and Continue" funkciót a/bigobj-val.Vegyes módú (natív/felügyelt) hibakeresés.
JavaScript-hibakeresés.
SQL-hibakeresés.
Memóriaképfájl hibakeresése.
Kód szerkesztése egy nem kezelt kivétel bekövetkezése után, amikor a nem kezelt kivételeknél a hívásverem visszatekerése opció nincs kiválasztva.
Az alkalmazás hibakereséséhez használja a Csatolás parancsot az alkalmazás futtatása helyett a Hibakeresés menü Start elemére kattintva.
Optimalizált kód hibakeresése.
A kód egy régi verziójának hibakeresése, miután egy új verzió összeállítása sikertelen volt a buildelési hibák miatt.
Egyéni fordító (cl.exe) elérési útjának használata. Biztonsági okokból a fájlok Hot Reload során történő újrafordításához Visual Studio mindig a telepített fordítót használja. Ha egyéni fordítóútvonalat használ (például egy egyéni
$(ExecutablePath)változón keresztül a*.propsfájlban), figyelmeztetés jelenik meg, és a Visual Studio visszatér ugyanahhoz a verzióhoz/architektúrához tartozó telepített fordítóhoz.Örökölt architektúrák/MSVC-eszközkészletek. Az MSVC v140-eszközkészlettel az alapértelmezett hibakereső támogatja a Hot Reload funkciót az X86- és X64-alkalmazásokkal. Az örökölt eszközkészletek csak az X86-alkalmazásokat támogatják. Az MSVC v120-nál régebbi eszközkészleteknek az örökölt hibakeresőt kell használniuk a "Hibakeresési > beállítások > általános > Natív kompatibilitási mód használata" bejelölésével a Szerkesztés és folytatás funkció használatához.
IDL-attribútumok korlátozásai
Hot Reload nem hozza létre újra az interfészdefiníciós nyelv (IDL) fájljait. Ezért az IDL-attribútumok módosításai nem jelennek meg a hibakeresés során. Az IDL-attribútumok módosításainak eredményének megtekintéséhez le kell állítania a hibakeresést és újra kell építenie az alkalmazást. Hot Reload nem okoz hibát vagy figyelmeztetést, ha az IDL-attribútumok megváltoztak. További információ: IDL-attribútumok.
Problémák diagnosztizálása
Ha a forgatókönyv nem felel meg a fent említett feltételeknek, a következő DWORD beállításjegyzék-érték beállításával további adatokat gyűjthet:
Nyisson meg egy fejlesztői parancssort.
Futtassa a következő parancsot:
VsRegEdit.exe set “C:\Program Files\Microsoft Visual Studio\[Version]\[YOUR EDITION]” HKCU Debugger NativeEncDiagnosticLoggingLevel DWORD 1
Ha ezt az értéket a hibakeresési munkamenet elején állítja be, a Hot Reload különböző összetevői részletes naplózást okoznak a Output Ablak>Debug panelen.