Megosztás:


Profilkészítési hibák elhárítása és problémák elhárítása

Ez a cikk megoldásokat kínál a leggyakoribb hibákra, amelyek megakadályozhatják a Visual Studióban a teljesítményprofilozó használatát vagy elegendő adat beszerzését.

Nincs találat

Hiba: "Nincs adat az aktuális szűrőkészletben"

Diagsession-fájl megnyitásakor bizonyos szűrőket alkalmazunk, például a natív kód elrejtését vagy a nem felhasználói kód elrejtését, hogy könnyebben érthető legyen a nyomkövetés. Emellett más szűrők is alkalmazhatók, például az idő kiválasztása és a szál, amelyek tovább szűkítik a megjelenített adatokat. Ha ezeket a szűrőket úgy alkalmazza a rendszer, hogy nincs megjelenítendő adat, akkor megjelenik ez a figyelmeztetés.

Javítás

  • Győződjön meg arról, hogy az időválasztásban vannak benne adatok. Ha az adatok fölötti gráfban módosította az időválasztást, a Kijelölés törlése gombra kattintva visszaállíthatja azt.
  • Ezután, ha még mindig nincsenek adatok, győződjön meg arról, hogy az összes kategória és szál engedélyezve van a megfelelő legördülő listákban.
  • Ha a profilkészítés alatt lévő alkalmazás natív kód, akkor mindenképpen engedélyezze a Natív kód megjelenítése lehetőséget a Beállítások legördülő menüben.
  • Ha továbbra sem rendelkezik adatokkal, akkor az összegyűjtött nyomkövetés valószínűleg túl rövid volt ahhoz, hogy bármilyen adat jelen legyen. Győződjön meg arról, hogy az adatokat gyűjtő program nem fejeződik be túl gyorsan (egy másodpercnél rövidebb ideig).

Lásd még: Külső kód megjelenítése

Hosszú ideig tart, amíg az eredmények befejeződnek

Ha a gyűjtemény utáni halom elemzése lassúnak tűnik, tekintse meg az alábbi lehetséges megoldásokat, amelyek segíthetnek a várakozási idő problémáinak megoldásában.

Javítás Néha hosszabb időt is igénybe vehet, ha memóriaigényes alkalmazások pillanatképeit próbálja elemezni, de a Visual Studio újabb verziójára való frissítés csökkenti az elemzési várakozási időt. Ha ez a probléma a frissítés után állandó, előfordulhat, hogy teljesítményhiba áll fenn az eszközön. Hozzon létre egy visszajelzési jegyet, és ossza meg a létrehozott diagsession fájlt. A fájllal megállapíthatjuk, hogy az adatok miért lassan elemezhetők, és hol lehet javítani a teljesítményen.

Mindenképpen adjon meg nyomkövetési és halomképfájlokat a visszajelzési jegyben.

Lásd még:

"Nem sikerült jegyzékfájlt létrehozni ehhez a diagesztációhoz", vagy "hiba miatt nem hozható létre jegyzékfájl a diagesztációhoz, a Visual Studio nem tudja újra megnyitni ezt a munkamenetet."

Ez a probléma azt jelenti, hogy probléma lépett fel a memória pillanatkép-adatainak elemzésre és megjelenítésre való előkészítésekor, miután leállt az adatok gyűjtéséhez. A probléma több lehetséges oka is lehet, a gyűjteményügynököktől a tényleges adatfeldolgozásig a megfelelő információk lekérése. Ezért további naplózás nélkül nem lehet diagnosztizálni a problémát.

Javítás További naplózási információkkal válaszoljon visszajelzési jegyére, hogy diagnosztizálhassuk a problémát. A naplóadatok lekéréséhez futtassa a következő parancsokat egy emelt szintű parancssorból:

reg add HKEY_LOCAL_MACHINE\Software\Microsoft\VisualStudio\DiagnosticsHub /v LogLevel /t REG_SZ /d All /reg:32
reg add HKEY_LOCAL_MACHINE\Software\Microsoft\VisualStudio\DiagnosticsHub /v LogDirectory /t REG_SZ /d [directory of your choice] /reg:32

A parancsok futtatása után indítsa el a Visual Studiót, reprodukálja a forgatókönyvet, zárja be a Visual Studiót, majd tömörítse a kiválasztott DiagnosticsHub naplókönyvtárat, és csatolja a jegyhez. Ettől a ponttól kezdve jobban meg kell tudnunk diagnosztizálni, hogy mi történik.

Miután hozzáadta a naplót a jegyhez, futtassa az alábbi parancsokat a naplózás letiltásához:

reg delete HKEY_LOCAL_MACHINE\Software\Microsoft\VisualStudio\DiagnosticsHub /f /v LogLevel /reg:32
reg delete HKEY_LOCAL_MACHINE\Software\Microsoft\VisualStudio\DiagnosticsHub /f /v LogDirectory /reg:32

Hiba: "A forrásadatok nem érhetők el."

A forrásadatok megtekintéséhez a gyűjtemény időpontjától elérhető PDF-eket kell megadnia. Így például ha összegyűjt egy processzorhasználati diagsession-fájlt , módosítja a kódot, újrafordítja (amely a régi PBD-t váltja fel), majd újra megnyitja a .diagsession fájlt , valószínűleg nem fogja látni a frissített kód moduljainak forrásadatait.

Javítás Ennek a problémának a legegyszerűbb kerülő megoldása egy új diagsession összegyűjtése a módosítások elvégzése után. Így biztos lehet abban, hogy a PDF-fájlok naprakészek.

Hiba: "A memóriaelemzés belső hiba miatt meghiúsult."

Egy hosszú memóriaprofil-munkamenet után az eredmény elemzésére tett kísérletek a hibával teljesülnek.

A memóriaeszköz és a gyűjteményügynök által rögzített pillanatképadatok nem egyeznek. Ez az eredmény azt jelenti, hogy a memóriaeszköz nem tudta megtalálni a natív pillanatkép halomállapotfájlját. Vagy ez az eredmény nem felelt meg a memóriaeszköznek a pillanatkép GC-kezdési idejének ahhoz, amelyik a diagsession-fájlban regisztrálva van a GCStats lekéréséhez.

Javítás Ezt a problémát a Visual Studio 2022 17.3-ás verziójában kijavított eszköz hibája okozta. Egy későbbi verzióra való frissítésnek meg kell oldania a problémát. Ha a probléma a frissítés után is állandó, hozzon létre egy visszajelzési jegyet, és csatolja a jegyhez:

  • A diagsession fájl
  • A Visual Studio minidumpja
  • Képernyőkép a készített memória-pillanatképekről.

Erre a problémára nincs áthidaló megoldás, és a profilkészítési munkamenetet újra kell indítani.

Hiba: "Az X diagnosztikai események elvetve, a jelentés bizonyos információi hiányoznak vagy pontatlanok lehetnek"

Előfordulhat, hogy az adatrögzítés során olyan eseményeket lehet elvetni, amelyek miatt az eredményül kapott profilkészítési jelentés pontatlan vagy használhatatlan. Az eldobott események számos különböző okból történhetnek, de elsősorban akkor fordul elő, ha a rendszer nem tudja gyorsabban kiüríteni az eseményeket a lemezre, mint a bejövő sebesség.

Javítás Az eldobott események csökkentése érdekében a profilkészítés során bezárhat más lemez- és processzorigényes műveleteket. A műveletek bezárásával a rendszer további erőforrásokat fordíthat a bejövő események kiürítésére. Megpróbálhatja csökkenteni a mintavételezési gyakoriságot az ezen konfigurációs beállításokat támogató eszközökön, például a CPU-használat eszközön és a .NET-foglalási eszközön, és ezáltal csökkentheti a többletterhelést.

Hiba: Az ETW-erőforrások kimerültek

A Visual Studio profilkészítője az Event Tracing for Windows (ETW) használatával gyűjti a teljesítményadatait. Véges számú ETW-munkamenet érhető el a rendszeren való használatra, és ha az összes munkamenet már használatban van, a következő hibaüzenet jelenik meg: ETW resources have been exhausted. Ezeket a munkameneteket más programok, például a SysInternals eszközcsomag, más profilkészítők és egyéb diagnosztikai eszközök használják. A problémát a következő módon oldhatja meg:

  • A munkameneteket használó programok bezárása erőforrások felszabadítására, vagy

  • Ha további erőforrásokat helyez el, futtassa az alábbiakat egy rendszergazda jogú parancssorból, majd indítsa újra:

    reg add "HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\WMI" /v EtwMaxLoggers /t REG_DWORD /d 128
    

    A parancs futtatása 64-ről 128-ra növeli az alapértelmezett munkamenetek számát (a rendszeren engedélyezett munkamenetek maximális száma 256).

Hiba: A CPU-használat eszköz nem működik ARM64-alapú virtuális gépen

A Visual Studio profilkészítője az Event Tracing for Windows (ETW) használatával gyűjti a teljesítményadatait. A profilminták ETW használatával történő gyűjtése jelenleg nem támogatott a Windows for ARM64 rendszerben, ha virtuális gépen (VM-en) fut. A korlátozás megkerüléséhez használhatja a CPU-használat eszközt egy tényleges ARM64-eszközön, vagy a Instrumentation eszközzel rögzítheti az időzítési információkat.

Hiba: A memóriahasználati eszköz nem működik a .NET 7-en és a .NET-futtatókörnyezet 8.0.0-8.0.1-en, ha engedélyezve van a kiszolgálói GC

A .NET 7 futtatókörnyezettel kapcsolatos, a .NET 8 futtatókörnyezet 8.0.0-s és 8.0.1-ben propagált hibája miatt nem lehet számba venni az objektumokat a kiszolgáló szemétgyűjtése során. A kiszolgálói szemétgyűjtés alapértelmezés szerint engedélyezve van ASP.NET Core-alkalmazások esetében.

Javítás

A probléma megkerüléséhez:

  • A kiszolgáló szemétgyűjtésének letiltása pillanatkép készítésekor vagy az alkalmazás memóriaképének gyűjtésekor.
  • Használja a .NET-futtatókörnyezet nem támogatott verzióját.

Lásd még: