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 C++-projektek szerkesztése és folytatása a kódmódosítások legtöbb típusát kezeli. 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 C++ szerkesztésével és folytatásával kapcsolatos információkért tekintse meg a Szerkesztés és folytatás (C++) szakaszt a Visual Studió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.
A Hibakeresés (vagy eszközök) >beállításai párbeszédpanelen bontsa ki azÁltalános> szakaszt, és jelölje be a Natív szerkesztés és folytatás engedélyezése jelölőnégyzetet.
Az inkompatibilis fordító- vagy csatolóbeállítások hibát okoznak a szerkesztés és a folytatás során.
Példa: 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.
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.
A Szerkesztés és folytatás 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++ szerkesztése és folytatása 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 Visual Studio mindig a telepített fordítót használja a fájlok szerkesztés és folytatás során történő újrafordításához. 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 az X86- és X64-alkalmazások szerkesztését és folytatását. 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.
Csatolási korlátozások
A szerkesztést és a folytatást letiltó linkerbeállítások
A következő hivatkozási beállítások letiltják a Szerkesztés és a Folytatás funkciót:
A /OPT:REF, /OPT:ICF vagy /INCREMENTAL:NO beállítása letiltja a Szerkesztés és Folytatás funkciót a következő figyelmeztetéssel:
LINK : warning LNK4075: ignoring /EDITANDCONTINUE due to /OPT specificationA /ORDER, /RELEASE vagy /FORCE beállítás letiltja a szerkesztést és a folytatást az alábbi figyelmeztetéssel:
LINK : warning LNK4075: ignoring /INCREMENTAL due to /option specificationHa olyan beállítást állít be, amely megakadályozza a programadatbázis (.pdb) fájljának létrehozását, az adott figyelmeztetés nélkül letiltja a szerkesztést és a folytatást.
Automatikus újrakapcsolás korlátozásai
Alapértelmezés szerint a Szerkesztés és folytatás újra összekapcsolja a programot egy hibakeresési munkamenet végén, hogy létrehozhasson egy naprakész végrehajthatót.
A Szerkesztés és Folytatás funkció nem tudja átlinkelni a programot, ha nem az eredeti build helyéről végez hibakeresést. Egy üzenet azt jelzi, hogy manuálisan kell újraépíteni.
A „szerkesztés és folytatás” nem építi újra a statikus könyvtárakat. Ha módosításokat hajt végre egy statikus könyvtárban a Szerkesztés és Folytatás funkcióval, manuálisan kell újraépítenie a könyvtárat, és újra kell kötni az alkalmazásokat, amelyek azt használják.
A Szerkesztés és a Folytatás nem indítja el az egyéni buildelési lépéseket. Ha a program egyéni buildelési lépéseket használ, érdemes lehet manuálisan újraépíteni, hogy a program az egyéni buildelési lépéseket lefuttassa. Ebben az esetben kikapcsolhatja az újracsatolást a Szerkesztés és a Folytatás után, annak érdekében, hogy felszólítást kapjon a kézi újraépítésre.
Az újrahivatkozás letiltása a Szerkesztés és a Folytatás után:
A Hibakeresés menüben válassza a Beállítások és beállítások lehetőséget.
A Beállítások párbeszédpanel hibakeresési csomópontja alatt válassza a Szerkesztés és a Folytatás csomópontot.
Törölje a Relink kódmódosítások hibakeresés után jelölőnégyzet jelölését.
Előre összeállított fejléckorlátozások
Alapértelmezés szerint a szerkesztés és a folytatás előre lefordított fejléceket tölt be és dolgoz fel a háttérben, hogy felgyorsítsa a kódmódosítások feldolgozását. Az előre összeállított fejlécek betöltése fizikai memória lefoglalását igényli, ami problémát jelenthet, ha korlátozott RAM-mal rendelkező gépen dolgozik. Hibakeresés közben a Windows Feladatkezelő segítségével meghatározhatja, hogy mennyi a rendelkezésre álló fizikai memória, és ez problémát jelenthet-e. Ha ez az összeg nagyobb, mint az előre összeállított fejlécek mérete, a Szerkesztés és a Folytatás nem okoz problémát. Ha az összeg kisebb, mint az előre összeállított fejlécek mérete, megakadályozhatja, hogy a Szerkesztés és a Folytatás előre összeállított fejléceket töltsön be a háttérben.
Az előre összeállított fejlécek háttérbetöltésének letiltása a szerkesztéshez és a folytatáshoz:
A Hibakeresés menüben válassza a Beállítások és beállítások lehetőséget.
A Beállítások párbeszédpanel hibakeresési csomópontja alatt válassza a Szerkesztés és a Folytatás csomópontot.
Törölje az Előfordítás engedélyezése jelölőnégyzetet.
IDL-attribútumok korlátozásai
A Szerkesztés és folytatás nem hozza létre újra az interfészdefiníciós nyelvi (IDL) fájlokat. 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. A Szerkesztés és a Folytatás 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 1VsRegEdit.exe set “C:\Program Files (x86)\Microsoft Visual Studio\[Version]\[YOUR EDITION]” HKCU Debugger NativeEncDiagnosticLoggingLevel DWORD 1
A hibakeresési munkamenet elején ennek az értéknek a beállítása a Szerkesztés és Folytatás különböző összetevőit arra készteti, hogy részletes naplózást végezzenek a Kimeneti ablak>hibakeresés panelen.