Megosztás a következőn keresztül:


Támogatott kódmódosítások (C++)

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.

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++ /bigobj kapcsoló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 *.props fá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.

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:

  1. Nyisson meg egy fejlesztői parancssort.

  2. Futtassa a következő parancsot:

    VsRegEdit.exe set “C:\Program Files\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.