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


Csak a saját kóddal rendelkező felhasználói kód hibakeresése

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.

Csak saját kód engedélyezése a Beállítások párbeszédpanelen – képernyőkép.

Saját kód engedélyezése a Beállítások párbeszédpanelen képernyőképe.

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.

Felhasználói kód képernyőképe a Modulok ablakban.

Felhasználói kód képernyőképe a Modulok ablakban.

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.

Külső kód képernyőképe a Hívásverem ablakban.

Külső kód képernyőképe a Hívásverem ablakban.

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.

Külső kód megjelenítése a Hívásverem ablakban.

Külső kód megjelenítése a hívásverem ablakban.

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:

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ő &lt;.*&gt; vagy &lt;.* 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.