Hibakeresés a Just-In-Time Debugger használatával a Visual Studióban

A Just-In-Time hibakeresés automatikusan képes elindítani a Visual Studio-t, ha egy Visual Studio-n kívül futó alkalmazás hibát észlel vagy összeomlik. A Just-In-Time hibakereséssel tesztelheti az alkalmazásokat a Visual Studión kívül, és megnyithatja a Visual Studiót, hogy probléma esetén megkezdje a hibakeresést.

AzIn-Time hibakeresés csak a Windows asztali alkalmazásokban működik. Nem működik univerzális Windows-alkalmazásokhoz vagy natív alkalmazásokban( például Visualizers) üzemeltetett felügyelt kódokhoz.

Borravaló

Ha meg szeretné akadályozni, hogy a Just-In-Time Hibakereső párbeszédpanel megjelenjen, de nincs telepítve a Visual Studio, olvassa el A Just-In-Time Hibakeresőletiltása című témakört. Ha egyszer már telepítette a Visual Studiót, előfordulhat, hogy le kell tiltania a Just-In-Time hibakeresést a Windows beállításjegyzékéből.

Just-In-Time hibakeresés engedélyezése vagy letiltása a Visual Studióban

Ha a Just-In-Time hibakeresővel dolgozik a Visual Studióban, a hibakereső konfigurációs beállításai az Eszközök>beállításai vagy a Hibakeresési>beállítások menüből érhetők el. A Just-In-Time hibakereső a telepítő egyes összetevőinek>hibakeresési és tesztelési szakaszában érhető el.

Jegyzet

A Just-In-Time hibakeresés engedélyezéséhez vagy letiltásához rendszergazdaként kell futtatnia a Visual Studiót. A Just-In-Time hibakeresés engedélyezése vagy letiltása beállításkulcsot állít be, és rendszergazdai jogosultságokra lehet szükség a kulcs módosításához. A Visual Studio rendszergazdaként való megnyitásához kattintson a jobb gombbal a Visual Studio alkalmazásra, és válassza a Futtatás rendszergazdakéntlehetőséget.

Just-In-Time hibakeresés engedélyezése vagy letiltása:

  1. Az Eszközök>beállításai panelen bontsa ki a Minden beállítás>hibakeresése általános szakaszt>.

  2. A jobb oldali panelen válassza a Just-In-Time hibakeresés konfigurálása hivatkozást.

    Képernyőkép a Just-In-Time hibakeresés Konfigurálásáról a Visual Studióban.

  3. A Visual Studio Hibakereső beállításai párbeszédpanelen konfigurálja a Just-In-Time hibakeresés engedélyezését az ilyen típusú kódbeállításokhoz . Válassza ki a just-In-Time hibakereséshez használni kívánt kódtípusokat: Felügyelt (.NET-keretrendszer) vagy natív.

  4. Válassza OKlehetőséget.

  1. Az Eszközök>beállításai párbeszédpanelen bontsa ki azIgény szerinti> szakaszt.

  2. Az Just-In-Time hibakeresésének engedélyezése az ilyen típusú kód mezőben válassza ki a just-In-Time hibakereséshez használni kívánt kódtípusokat: Felügyelt, natívés/vagy szkript.

    JIT-hibakeresés engedélyezése vagy letiltása

  3. Válassza OKlehetőséget.

Ha engedélyezi a Just-In-Time hibakeresőt, de az nem nyílik meg, amikor egy alkalmazás összeomlik vagy hibákba ütközik, olvassa el A just-In-Time hibakeresésihibaelhárítása című témakört.

Just-In-Time hibakeresés letiltása a Windows beállításjegyzékéből

AIn-Time hibakeresés akkor is engedélyezve lehet, ha a Visual Studio már nincs telepítve a számítógépre. Ha a Visual Studio már nincs telepítve, letilthatja a Just-In-Time hibakeresést a Windows beállításjegyzékének szerkesztésével.

A Just-In-Time hibakeresés letiltása a beállításjegyzék szerkesztésével:

  1. A Windows Start menüjében futtassa a Beállításszerkesztő (regedit.exe).

  2. A Beállításszerkesztő ablakban keresse meg és törölje a következő beállításjegyzék-bejegyzéseket, ha léteznek:

    • HKEY_LOCAL_MACHINE\SOFTWARE\Wow6432Node\Microsoft\Windows NT\CurrentVersion\AeDebug\Debugger

    • HKEY_LOCAL_MACHINE\SOFTWARE\Wow6432Node\Microsoft\.NETFramework\DbgManagedDebugger

    JIT beállításkulcs

  3. Ha léteznek, törölje a következő beállításjegyzék-bejegyzéseket is:

    • HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\AeDebug\Debugger

    • HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\.NETFramework\DbgManagedDebugger

    Ügyeljen arra, hogy ne törölje vagy módosítsa a többi beállításkulcsot.

  4. Zárja be a Beállításszerkesztő ablakot.

Engedélyezze a Just-In-Time hibakeresést a Windows-alkalmazás űrlapján

Alapértelmezés szerint a Windows Űrlap-alkalmazások rendelkeznek egy legfelső szintű kivételkezelővel, amely lehetővé teszi, hogy az alkalmazás továbbra is futjon, ha helyre tud állni. Ha egy Windows Forms-alkalmazás kezeletlen kivételt jelez, az alábbi párbeszédpanel jelenik meg:

Nem kezelt Windows-űrlap kivételét bemutató képernyőkép.

Windows Űrlap kezeletlen kivétel

Ha a Just-In-Time hibakeresést szeretné engedélyezni a windowsos űrlapok szokásos hibakezelése helyett, adja hozzá az alábbi beállításokat:

  • system.windows.forms A machine.config vagy a bin<app name>.exe.config fájl szakaszában állítsa az jitDebugging értéket a következőretrue:

    <configuration>
        <system.windows.forms jitDebugging="true" />
    </configuration>
    
  • A C++ Windowsos űrlapalkalmazásban is állítsa DebuggableAttribute-ről true-re egy .config fájlban vagy a kódban. Ha /Zi-gyel fordít, és nincs megadva /Og, akkor a fordító beállítja ezt az attribútumot önnek. Ha azonban nem optimalizált kiadási buildet szeretne hibakeresésre használni, a DebuggableAttribute úgy kell beállítania, hogy hozzáadja a következő sort az alkalmazás AssemblyInfo.cpp fájljához:

    [assembly:System::Diagnostics::DebuggableAttribute(true, true)];
    

    További információ: DebuggableAttribute.

Just-In-Time hibakeresés használata

Ez a példa végigvezeti a Just-In-Time hibakeresésen, amikor egy alkalmazás hibát jelez.

  • Az alábbi lépések végrehajtásához telepítve kell lennie a Visual Studio-nak. Ha nem rendelkezik Visual Studióval, letöltheti az ingyenes Visual Studio Community Edition.

  • Győződjön meg arról, hogy a Just-In-Time hibakeresés engedélyezve van, ha az Eszközök> csoportban konfigurálja a Just-In-Time hibakeresést az ilyen típusú kódhoz.

Ebben a példában egy C# konzolalkalmazást készítünk a Visual Studio-ban, amely NullReferenceException-t dob.

  1. A Visual Studióban hozzon létre egy C#-konzolalkalmazást (File>New>Project>Visual C#>Console Application) ThrowsNullExceptionnéven. A projektek Visual Studióban való létrehozásáról további információt a Útmutató: Egyszerű alkalmazás létrehozásacímű témakörben talál.

  2. Amikor megnyílik a projekt a Visual Studióban, nyissa meg a Program.cs fájlt. Cserélje le az alapértelmezett kódot, beleértve a Main() metódust is, ha van ilyen, cserélje le a következő kódra. Az alábbi kód egy sort nyomtat ki a konzolra, majd nullreferenceException értéket ad:

Console.WriteLine("we will now throw a NullReferenceException");
throw new NullReferenceException("this is the exception thrown by the console app");
static void Main(string[] args)
{
    Console.WriteLine("we will now throw a NullReferenceException");
    throw new NullReferenceException("this is the exception thrown by the console app");
}
  1. A megoldás létrehozásához válassza a Hibakeresési (alapértelmezett) vagy Kiadási konfigurációt, majd válassza a Build>Rebuild Solutionlehetőséget.

    • A teljes hibakeresési folyamathoz válassza a hibakeresési konfigurációt.

    • Ha a kiadási konfigurációt választja, ki kell kapcsolnia a Just My Code szolgáltatást ahhoz, hogy ez az eljárás működjön.

      Az Eszközök>beállításai panelen bontsa ki az Összes beállítás>hibakeresése>általános szakaszt, és törölje a jelet a Csak saját kód engedélyezése jelölőnégyzetből.

      Az Eszközök>beállításai párbeszédpanelen bontsa ki azÁltalános> szakaszt, és törölje a jelet a Csak saját kód engedélyezése jelölőnégyzetből.

      Ha törli ezt a jelölőnégyzetet, a figyelmeztetés, ha a hibakeresés indításakor (csak felügyelt) nincs felhasználói kód opció automatikusan letiltásra kerül.

    További információ a buildkonfigurációkról: A buildkonfigurációk ismertetése.

  2. Nyissa meg a beépített alkalmazás ThrowsNullException.exe a C# projektmappában (...\ThrowsNullException\ThrowsNullException\bin\Debug vagy ...\ThrowsNullException\ThrowsNullException\bin\Release), vagy futtassa a végrehajtható fájlt egy parancssorból.

    A következő parancsablaknak kell megjelennie:

    Képernyőkép a ThrowsNullException.exekonzoljáról, amely kezeletlen nullhivatkozási kivételt (System.NullReferenceException) eredményez.

  3. Ekkor megnyílik a Choose Just-In-Time Hibakereső párbeszédpanel.

    A

    Az Elérhető hibakeresők területen válassza az <, ha még nincs kiválasztva.

    Jegyzet

    Ha nem látja az Igény szerinti hibakereső párbeszédpanelt, előfordulhat, hogy hozzá kell adnia a beállításkulcsokat. Lásd : Just-In-Time hibakeresés nem indul el

  4. Válassza OKlehetőséget.

    A ThrowsNullException projekt a Visual Studio új példányában nyílik meg, és a végrehajtás a kivételt okozó sorban leállt:

    Képernyőkép a ThrowsNullException projektről a Visual Studióban, kiemelve a kivételt okozó forráskódsort.

Ezen a ponton megkezdheti a hibakeresést. Ha egy valódi alkalmazást hibakeres, meg kell tudnia, miért dobja a kód a kivételt.

Vigyázat

Ha az alkalmazás nem megbízható kódot tartalmaz, megjelenik egy biztonsági figyelmeztetési párbeszédpanel, amely lehetővé teszi, hogy eldöntse, folytatja-e a hibakeresést. A hibakeresés folytatása előtt döntse el, hogy megbízik-e a kódban. Maga írta a kódot? Ha az alkalmazás távoli gépen fut, felismeri a folyamat nevét? Ha az alkalmazás helyileg fut, fontolja meg a számítógépen futó rosszindulatú kódok lehetőségét. Ha úgy dönt, hogy a kód megbízható, válassza OKlehetőséget. Ellenkező esetben válassza a Mégselehetőséget.

Just–In-Time hibakeresés hibaelhárítása

Just-In-Time hibakeresés nem indul el

Ha a Just-In-TimeIn-Time hibakeresés nem indul el, amikor egy alkalmazás összeomlik vagy leáll, annak ellenére, hogy engedélyezve van a Visual Studióban:

  • Egy ismert Windows-probléma okozhatja a Just-In-Time hibakereső sikertelen voltát.

    A javítás az, hogy egy DWORD értéket adunk hozzá Auto névvel, Értékadatként1-et beállítva, a következő beállításkulcsokhoz:

    • (.NET) HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\AeDebug

    • (.NET-keretrendszer) HKEY_LOCAL_MACHINE\Software\WOW6432Node\Microsoft\Windows NT\CurrentVersion\AeDebug

  • Előfordulhat, hogy a Windows hibajelentés átveszi a hibakezelést a számítógépen.

    A probléma megoldásához használja a Beállításszerkesztőt, hogy hozzáadjon egy DWORD értéketDisabled, amelynek értékadata1legyen, a következő beállításkulcsokhoz:

    • HKEY_LOCAL_MACHINE\Software\Microsoft\Windows\Windows Error Reporting

    • (32 bites alkalmazásokhoz 64 bites gépeken) HKEY_LOCAL_MACHINE\Software\WOW6432Node\Microsoft\Windows\Windows Error Reporting

    További információ: . WER-beállítások.

Hibaüzenetek

A Just-In-Time hibakeresés során a következő hibaüzenetek jelenhetnek meg:

  • Nem lehet kapcsolódni az összeomlott folyamathoz. A megadott program nem Windows vagy MS-DOS program.

    A hibakereső egy másik felhasználó alatt futó folyamathoz próbált csatlakozni.

    A probléma megkerüléséhez a Visual Studióban nyissa meg a Hibakeresési>Csatolás egy folyamathoz menüpontot (vagy nyomja le a Ctrl + Alt + Pbillentyűkombinációt), és keresse meg a folyamatot, amelyet hibakeresni szeretne az Elérhető folyamatok listában. Ha nem tudja a folyamat nevét, keresse meg a folyamatazonosítót a Visual Studio Just-In-Time Hibakereső párbeszédpanelen. Válassza ki a folyamatot az Elérhető folyamatok listában, és válassza a Csatoláslehetőséget. Válassza a Nincs lehetőséget a Just-In-Time hibakereső párbeszédpanel bezárásához.

  • Hibakereső nem indítható el, mert nincs bejelentkezett felhasználó.

    Nincs bejelentkezett felhasználó a konzolra, így nincs felhasználói munkamenet a Just-In-Time hibakeresési párbeszédpanel megjelenítéséhez.

    A probléma megoldásához jelentkezzen be a gépre.

  • osztály nincs regisztrálva.

    A hibakereső olyan COM-osztályt próbált létrehozni, amely nincs regisztrálva, valószínűleg telepítési probléma miatt.

    A probléma megoldásához használja a Visual Studio Installert a Visual Studio telepítésének újratelepítéséhez vagy javításához.

  • Egy másik hibakereső regisztrálta magát just-In-Time hibakeresőként. A javításhoz engedélyezze a Just-In-Time hibakeresést, vagy futtassa a Visual Studio javítását.

    Ez az üzenet akkor jelenik meg, ha van egy másik hibakeresője, esetleg a Visual Studio hibakeresőjének egy régebbi verziója, amely Just-In-Time hibakeresőként van beállítva.

  • Just-In-Time hibakeresés regisztrációs hibáit észleltük. A javításhoz engedélyezze a Just-In-Time hibakeresést, vagy futtassa a Visual Studio javítását.

    Ha a fenti figyelmeztetések valamelyikét látja, a Just-In-Time Visual Studio hibakereséséhez rendszergazdai jogosultságokra van szükség, amíg meg nem oldja a problémát. Ha ezen feltételek mellett nem rendszergazdaként próbálja engedélyezni a funkciót, a következő hibaüzenet jelenik meg:

    Hozzáférés megtagadva. Kérje meg a rendszergazdát, hogy engedélyezze a Just-In-Time hibakeresést, vagy javítsa ki a Visual Studio telepítését.