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.
Just My Code egy Visual Studio hibakeresési funkció, amely automatikusan lépteti át a rendszer, a keretrendszer és más nem felhasználói kód hívásait. A Hívásverem ablakban a Just My Code összecsukja ezeket a hívásokat [Külső kód] keretekbe.
Csak a Saját kód másként működik a .NET- és C++ projektekben.
A Just My Code engedélyezése vagy letiltása
A legtöbb programozási nyelv esetében a Just My Code alapértelmezés szerint engedélyezve van.
- Az Just My Code engedélyezéséhez vagy letiltásához a Visual Studióban az Eszközök>Beállítások (vagy Hibakeresési>beállítások) területen >Hibakeresés>Általános, jelölje be vagy törölje a jelölést, Engedélyezze a Csak saját kódlehetőséget.
Jegyzet
Just My Code engedélyezése egy globális beállítás, amely az összes Visual Studio-projektre vonatkozik minden nyelven.
Csak a saját kód hibakeresése
A hibakeresési munkamenet során a Modulok ablakban látható, hogy a hibakereső mely kódmodulokat kezeli saját kódként (felhasználói kódként), valamint a szimbólum betöltési állapotát. További információ: Ismerje meg, hogyan csatolja a hibakereső az alkalmazáshoz.
A Hívásverem vagy Feladatok ablakban a Just My Code összecsukja a nem felhasználói kódot egy [External Code]
címkével ellátott szürkés széljegyzetű kódkeretbe.
Borravaló
A modulok, a hívási verem, a feladatokvagy a legtöbb más hibakereső ablak megnyitásához hibakeresési munkamenetben kell lennie. Hibakeresés közben a Hibakeresés>Windowsterületen jelölje ki a megnyitni kívánt ablakokat.
Ha összecsukott [Külső kód] keretben szeretné megtekinteni a kódot, kattintson a jobb gombbal a Hívásverem vagy Feladat ablakban, és válassza a helyi menüben a Külső kód megjelenítése lehetőséget. A kibontott külső kódsorok a [Külső kód] keret helyébe lépnek.
Jegyzet
Külső kód megjelenítése egy aktuális felhasználói profilbeállítás, amely a felhasználó által megnyitott összes projektre és minden nyelvre vonatkozik.
Ha duplán kattint egy kibontott külső kódsorra a Call Stack ablakban, a forráskód zöld színnel jelöli ki a hívó kódsort. A nem található vagy betöltött DLL-ek vagy egyéb modulok esetén előfordulhat, hogy egy szimbólum vagy forrás nem található oldal megnyílik.
A Visual Studio 2022 17.7-es verziójától kezdve automatikusan lefordíthatja a .NET-kódot úgy, hogy duplán kattint a külső kódra a Call Stack ablakban. További információ: Forráskód létrehozása .NET-szerelvényekből a hibakeresés során.
.NET "Csak saját kód"
A .NET-projektekben a Just My Code szimbólum (.pdb) fájlokat és programoptimalizálásokat használ a felhasználói és a nem felhasználói kód besorolásához. A .NET-hibakereső úgy véli, hogy az optimalizált bináris fájlok és a nem betöltött .pdb fájlok nem felhasználói kódnak minősülnek.
Három fordítóattribútum is befolyásolja, hogy a .NET-hibakereső mit tekint felhasználói kódnak:
- DebuggerNonUserCodeAttribute tájékoztatja a hibakeresőt, hogy az alkalmazott kód nem felhasználói kód.
- DebuggerHiddenAttribute elrejti a kódot a hibakereső elől, még akkor is, ha a Just My Code ki van kapcsolva.
- DebuggerStepThroughAttribute utasítja a hibakeresőt, hogy a kódba lépés helyett inkább lépjen át a kódon.
A .NET-hibakereső az összes többi kódot felhasználói kódnak tekinti.
A .NET-hibakeresés során:
- Hibakeresés>Lépjen be (vagy F11) a nem felhasználói kód lépésein lépjen át a következő felhasználói kódsorra.
- A hibakeresés során, a> (vagy a Shift+F11) lépés a nem felhasználói kódból a következő felhasználói kódsorra halad.
Ha nincs több felhasználói kód, a hibakeresés addig folytatódik, amíg véget nem ér, újabb töréspontot ér el, vagy hibát jelez.
Ha a hibakereső nem felhasználói kódban szakad meg (például Hibakeresési>Az összes megszakítása és a nem felhasználó kódban való szüneteltetés) lehetőséget használja, megjelenik a Nincs forrás ablak. Ezután egy Hibakeresési>lépés paranccsal léphet a következő felhasználói kódsorra.
Ha a nem felhasználói kódban nem kezelt kivétel történik, a hibakereső megáll a felhasználói kódsor elején, ahol a kivétel létrejött.
Ha a kivételhez engedélyezve vannak az első esélykivételek, a hívó felhasználói kódsor zöld színnel van kiemelve a forráskódban. A Hívásverem ablakban megjelenik a [Külső kód]címkével ellátott, annotált keret.
C++ Csak saját kód
A Visual Studio 2017 15.8-as verziójától kezdve a Just My Code funkció a kódlépéshez is támogatva van. Ez a funkció a /JMC (Csak az én kódom hibakeresése) fordítókapcsoló használatát is igényli. A kapcsoló alapértelmezés szerint engedélyezve van A C++ projektekben. A Hívásverem ablak és a Just My Code-ban a Hívásverem támogatásához nincs szükség a /JMC kapcsolóra.
Felhasználói kódként való besoroláshoz a felhasználói kódot tartalmazó bináris pdf-kódot a hibakeresőnek kell betöltenie (a betöltési állapot ellenőrzéséhez használja a Modulok ablakot).
A hívásverem viselkedése, például a Hívásverem ablakban a Just My Code in C++ csak ezeket a függvényeket tekinti nem felhasználói kód:
- Olyan függvények, amelyeknek a szimbólumfájljaiból hiányzik a forrásinformáció.
- Olyan függvények, amelyekben a szimbólumfájlok azt jelzik, hogy nincs a veremkeretnek megfelelő forrásfájl.
- A *.natjmc %VsInstallDirectory%\Common7\Packages\Debugger\Visualizers mappában megadott függvények.
A kódlépési viselkedés esetében a Just My Code funkció C++-ban csak az alábbi függvényeket tekinti nem-felhasználói kód:
- Olyan függvények, amelyekhez a megfelelő PDB-fájl nincs betöltve a hibakeresőben.
- A *.natjmc %VsInstallDirectory%\Common7\Packages\Debugger\Visualizers mappában megadott függvények.
Jegyzet
A Just My Code kódléptetés támogatásához a C++ kódot a Visual Studio 15.8 Előzetes 3. verziójának MSVC fordítóival kell lefordítani, és engedélyezni kell a /JMC fordítókapcsolót (alapértelmezés szerint engedélyezve van). További részletekért lásd a C++-hívásverem és kódléptetési viselkedés testreszabását, valamint ezt a blogbejegyzést. Egy régebbi fordítóval lefordított kód esetében .natstepfilter fájlok az egyetlen módja a kódlépés testreszabásának, amely független a Just My Code-tól. Lásd: C++ léptetési viselkedés testreszabása.
A C++ hibakeresés során a nem felhasználói kód alapértelmezés szerint kimarad. A C++ hibakeresés során:
- Hibakeresési>Belépés a (vagy F11) esetén a nem felhasználói kód esetén a lépés a kódon áthalad vagy a következő felhasználói kódsorig fut, ha a Belépés a nem felhasználói kódból történik.
- Hibakeresés>Lépjen ki (vagy Shift+F11), amikor a nem felhasználói kód a következő felhasználói kódsorra fut (az aktuális veremkereten kívül).
Ha nincs több felhasználói kód, a hibakeresés addig folytatódik, amíg véget nem ér, újabb töréspontot ér el, vagy hibát jelez.
Ha a hibakereső megszakítja a nem felhasználói kódot (például, ha a Hibakeresés>Az összes megszakítása használata esetén szünetel a nem felhasználói kódban), a lépéskövetés a nem felhasználói kódban folytatódik.
Ha a hibakereső egy kivételbe ütközik, megáll a kivételnél, függetlenül attól, hogy az felhasználói vagy nem felhasználói kódban van. kivételbeállítások párbeszédpanel felhasználó által nem kezelt beállításai figyelmen kívül lesznek hagyva.
A C++ hívásverem és a kód léptetési viselkedésének testreszabása
C++-projektek esetén megadhatja a modulokat, a forrásfájlokat és a függvényeket, amelyeket a Hívási verem ablak nem felhasználó kódként kezel a *.natjmc fájlokban való megadásával. Ez a testreszabás a kód futtatási lépéseire is vonatkozik, ha a legújabb kompilátort használja (lásd C++ Just My Code).
- Ha nem felhasználói kódot szeretne megadni a Visual Studio-gép összes felhasználójához, adja hozzá a .natjmc fájlt a %VsInstallDirectory%\Common7\Packages\Debugger\Visualizers mappához.
- Ha nem felhasználói kódot szeretne megadni egy felhasználóhoz, adja hozzá a .natjmc fájlt a %USERPROFILE%\Dokumentumok\<Visual Studio-verzió>\Visualizers mappához.
A .natjmc fájl egy XML-fájl, amelynek szintaxisa a következő:
<?xml version="1.0" encoding="utf-8"?>
<NonUserCode xmlns="http://schemas.microsoft.com/vstudio/debugger/jmc/2015">
<!-- Modules -->
<Module Name="ModuleSpec" />
<Module Name="ModuleSpec" Company="CompanyName" />
<!-- Files -->
<File Name="FileSpec"/>
<!-- Functions -->
<Function Name="FunctionSpec" />
<Function Name="FunctionSpec" Module ="ModuleSpec" />
<Function Name="FunctionSpec" Module ="ModuleSpec" ExceptionImplementation="true" />
</NonUserCode>
modulelem-attribútumok
Attribútum | Leírás |
---|---|
Name |
Szükséges. A modul vagy modulok teljes elérési útja. Használhatja a Windows helyettesítő karaktereket ? (nulla vagy egy karakter) és * (nulla vagy több karakter). Például<Module Name="?:\3rdParty\UtilLibs\*" /> A hibakereső a \3rdParty\UtilLibs bármely meghajtón található összes modulját külső kódként fogja kezelni. |
Company |
Szabadon választható. A végrehajtható fájlba beágyazott modult közzétevő vállalat neve. Ezzel az attribútummal egyértelműsítheti a modulokat. |
Fájlelemelem-attribútumok
Attribútum | Leírás |
---|---|
Name |
Szükséges. A külső kódként kezelendő forrásfájl vagy fájlok teljes elérési útja. Az elérési út megadásakor használhatja a Windows helyettesítő karaktereit ? és * . |
függvényelem-attribútumok
Attribútum | Leírás |
---|---|
Name |
Szükséges. A külső kódként kezelendő függvény teljes neve. ou használhatja a Windows helyettesítő karaktereket ? és * az elérési út megadásakor. |
Module |
Szabadon választható. A függvényt tartalmazó modul neve vagy teljes elérési útja. Ezzel az attribútummal egyértelműsítheti az azonos nevű függvényeket. |
ExceptionImplementation |
Ha true értékre van állítva, a hívásverem a kivételt okozó függvényt jeleníti meg ahelyett, hogy ezt a függvényt mutatná. |
A C++ léptető viselkedésének testreszabása a Just My Code beállításaitól függetlenül
A C++ projektekben a *.natstepfilter fájlok ban NoStepInto függvényként való listázásával adhat meg további funkciókat. A *.natstepfilter fájlok felsorolt függvények nem függnek a Just My Code beállításaitól. A NoStepInto függvény arra utasítja a hibakeresőt, hogy lépje át a függvényt, még akkor is, ha meghív néhány StepInto-függvényt vagy más felhasználói kódot. A .natjmc felsorolt függvényekkel ellentétben a hibakereső a NoStepInto függvényen belül a felhasználói kód első sorába lép.
- Ha nem felhasználói kódot szeretne megadni az összes helyi Visual Studio-felhasználóhoz, adja hozzá a .natstepfilter fájlt a %VsInstallDirectory%\Common7\Packages\Debugger\Visualizers mappához.
- Ha nem felhasználói kódot szeretne megadni egy felhasználóhoz, adja hozzá a .natstepfilter fájlt a %USERPROFILE%\Dokumentumok\<Visual Studio-verzió>\Visualizers mappához.
Jegyzet
Egyes külső bővítmények letilthatják .natstepfilter funkciót.
A .natstepfilter fájl egy XML-fájl, amelynek szintaxisa a következő:
<?xml version="1.0" encoding="utf-8"?>
<StepFilter xmlns="http://schemas.microsoft.com/vstudio/debugger/natstepfilter/2010">
<Function>
<Name>FunctionSpec</Name>
<Action>StepAction</Action>
</Function>
<Function>
<Name>FunctionSpec</Name>
<Module>ModuleSpec</Module>
<Action>StepAction</Action>
</Function>
</StepFilter>
Elem | Leírás |
---|---|
Function |
Szükséges. Egy vagy több függvényt ad meg nem felhasználói függvényként. |
Name |
Szükséges. EcMA-262 formátumú reguláris kifejezés, amely megadja a teljes függvény nevét. Például:<Name>MyNS::MyClass::.*</Name> azt jelzi a hibakeresőnek, hogy az MyNS::MyClass összes metódusát nem felhasználó kódjának kell tekinteni. A kis- és nagybetűk megkülönböztetése. |
Module |
Szabadon választható. Egy ECMA-262 formátumú reguláris kifejezés, amely megadja a függvényt tartalmazó modul teljes elérési útját. A találat kis- és nagybetűket nem érzékelyítő. |
Action |
Szükséges. A kis- és nagybetűket megkülönböztető értékek egyike:NoStepInto – arra utasítja a hibakeresőt, hogy lépjen át a függvényen.StepInto – arra utasítja a hibakeresőt, hogy lépjen be a függvénybe, felülírva az adott függvény bármely más NoStepInto előírását. |
További információ .natstepfilter és .natjmc fájlokról
A Visual Studio 2022 17.6-os verziójától kezdve közvetlenül a megoldáshoz vagy projekthez adhat hozzá .natjmc és .natstepfilter fájlokat.
.natstepfilter és .natjmc fájlok szintaxishibái nem jelennek meg a hibakereső kimeneti ablakában.
A .natvis fájloktól eltérően a .natstepfilter és .natjmc fájlok nem töltődnek be újra. Ehelyett ezeket a fájlokat a hibakeresési munkamenet elején tölti be újra a rendszer.
Sablonfüggvények esetén hasznos lehet a névben szereplő
<.*>
vagy<.*
használata.
JavaScript - csak a saját kódom
A Visual Studio 2022-ben .esproj projektek esetében a Visual Studio Code egy launch.json fájlt használ a hibakereső konfigurálásához és testreszabásához. launch.json hibakereső konfigurációs fájl.
A Visual Studio csak felhasználói kódhoz csatolja a hibakeresőt. Az .esproj-projektek esetében konfigurálhatja a felhasználói kódot (azaz Just My Code beállításokat) a Visual Studióban a launch.jsonskipFiles
beállításával. Ez a beállítás ugyanúgy működik, mint a VS Code launch.json beállításai. További információkért a skipFilestémakörről, lásd: Érdektelen kód kihagyása.