Jegyzet
Az oldalhoz való hozzáférés engedélyezést igényel. Próbálhatod be jelentkezni vagy könyvtárat váltani.
Az oldalhoz való hozzáférés engedélyezést igényel. Megpróbálhatod a könyvtár váltását.
A natív AOT a teljes .NET-futtatókörnyezettel osztja meg a diagnosztikai és a rendszerállapot-képességek egy részét, de nem az összeset. A vágáskompatibilis alkalmazásoknak nem kell viselkedésbeli különbségekkel rendelkezniük, ezért a vizsgálatok gyakran mindkét futtatókörnyezetre érvényesek. Ezért néha célszerű diagnosztizálni és hibakeresést végezni a teljes .NET-futtatókörnyezetben, mivel számos elérhető diagnosztikai segédprogramot tartalmaz. Ennek ellenére bizonyos információk csak a közzététel után gyűjthetők össze, így a Natív AOT a közzététel utáni diagnosztikai eszközöket is biztosítja.
Natív AOT diagnosztikai támogatás
Az alábbi táblázat a natív AOT-környezetekhez támogatott diagnosztikai funkciókat foglalja össze:
| Jellemző | Teljes mértékben támogatott | Részben támogatott | Nem támogatott |
|---|---|---|---|
| Megfigyelhetőség és telemetria | Részben támogatott | ||
| Fejlesztési idő diagnosztikái | Teljes mértékben támogatott | ||
| Natív hibakeresés | Részben támogatott | ||
| CPU-profilkészítés | Részben támogatott | ||
| Halomelemzés | Nem támogatott |
Megfigyelhetőség és telemetria
A .NET 8-as verziójától a natív AOT-futtatókörnyezet támogatja az EventPipe-t, amely a számos naplózási és nyomkövetési kódtár által használt alapréteg. Az EventPipe-hez közvetlenül api-kon EventSource.WriteEvent keresztül is csatlakozhat, vagy használhatja a felülre épülő kódtárakat, például az OpenTelemetryt. Az EventPipe-támogatás lehetővé teszi a .NET diagnosztikai eszközök, például a dotnet-trace, a dotnet-counters és a dotnet-monitor használatát is, hogy zökkenőmentesen működjenek natív AOT- vagy teljes .NET-futtatókörnyezeti alkalmazásokkal. Az EventPipe a natív AOT opcionális összetevője. Az EventPipe támogatásának hozzáadásához állítsa az EventSourceSupport MSBuild tulajdonságot a következőre true: .
<PropertyGroup>
<EventSourceSupport>true</EventSourceSupport>
</PropertyGroup>
A natív AOT részleges támogatást nyújt néhány jól ismert eseményszolgáltató számára. A Natív AOT nem minden futásidejű eseményt támogat.
Fejlesztési idő diagnosztikái
A .NET CLI eszközkészlet (dotnet SDK) és a Visual Studio külön parancsokat kínál a következőhöz build : és publish.
build (vagy Start a Visual Studióban) a teljes .NET-futtatókörnyezetet használja. Csak publish natív AOT-alkalmazást hoz létre. Ha natív AOT-ként teszi közzé az alkalmazást, egy előre elkészített (AOT) alkalmazást hoz létre natív kódra. Ahogy korábban említettük, nem minden diagnosztikai eszköz működik zökkenőmentesen a .NET 8-ban közzétett natív AOT-alkalmazásokkal. Az alkalmazáskészítési szakaszban azonban minden .NET diagnosztikai eszköz elérhető a fejlesztők számára. Javasoljuk, hogy a szokásos módon fejlesszük, hibakereséssel és teszteléssel teszteljük az alkalmazásokat, és az utolsó lépések egyikeként közzétegyük a munkaalkalmazást natív AOT használatával.
Natív hibakeresés
Amikor fejlesztés közben futtatja az alkalmazást, például a Visual Studióban, vagy a dotnet run, dotnet build, vagy dotnet test használatával, alapértelmezés szerint a teljes .NET futtatókörnyezeten fut. Ha PublishAot azonban jelen van a projektfájlban, a viselkedésnek azonosnak kell lennie a teljes .NET-futtatókörnyezet és a natív AOT között. Ez a jellemző lehetővé teszi a Standard Visual Studio által felügyelt hibakeresési motor használatát a fejlesztéshez és teszteléshez.
A közzététel után a natív AOT-alkalmazások valódi natív bináris fájlok. A felügyelt hibakereső nem működik rajtuk. A natív AOT-fordító azonban teljesen natív végrehajtható fájlokat hoz létre, amelyeket a natív hibakeresők a választott platformon (például Windowson a WinDbg vagy a Visual Studio, unix-szerű rendszereken pedig gdb vagy lldb) képesek hibakeresésre.
A natív AOT-fordító adatokat hoz létre a sorok számáról, típusairól, helyi adatairól és paramétereiről. A natív hibakereső lehetővé teszi, hogy megvizsgálja a veremnyomot és a változókat, lépjen be vagy lépjen túl a kódsorokon, illetve beállítson vonaltörési pontokat.
A felügyelt kivételek hibakereséséhez állítson be egy töréspontot a RhThrowEx metóduson, amelyet a rendszer akkor hív meg, amikor egy felügyelt kivételt dobnak ki. A kivételt az első argumentumregiszter tárolja, amely rcx x64-en és x0 Arm64-en található. Ha a hibakereső támogatja a C++ objektumok megtekintését, átalakíthatja a regisztert S_P_CoreLib_System_Exception*-ra, hogy további információkat lásson a kivételről.
A natív AOT-alkalmazások memóriaképfájljának összegyűjtése a .NET 8 néhány manuális lépését foglalja magában.
Visual Studio-specifikus jegyzetek
Elindíthatja a Visual Studio hibakeresőjében a natív AOT-fordítású végrehajtható fájlt azzal, hogy megnyitja a Visual Studio IDE-ben. A végrehajtható fájlt meg kell nyitnia a Visual Studióban.
Ha olyan töréspontot szeretne beállítani, amely kivétel esetén megszakad, válassza a Töréspontok lehetőséget a > hibakeresési menüjében. Az új ablakban válassza az Új > függvény töréspontot. Adja meg RhThrowEx a függvény neveként, és hagyja meg a Nyelv beállítást a Minden nyelvnél (ne válassza a C#lehetőséget).
Ha meg szeretné tekinteni, hogy milyen kivétel történt, indítsa el a hibakeresést (Hibakeresés > Indítása vagy F5), és amikor elérjük a RhThrowEx töréspontot, nyissa meg a Figyelő ablakot (Hibakeresés > Ablakok > Figyelő), és adja hozzá a következő kifejezést az egyik figyelőként:
| Építészet | Kifejezés |
|---|---|
| x64-architektúra | (S_P_CoreLib_System_Exception*)@rcx |
| Arm64-architektúra | (S_P_CoreLib_System_Exception*)@x0 |
Ez a mechanizmus azt a tényt használja fel, hogy amikor a RhThrowEx meghívásra kerül, a táblázatban említett CPU-regiszter tartalmazza a kidobott kivételt. A kifejezést beillesztheti a Visual Studio Azonnali ablakába is; a szintaxis megegyezik az órák szintaxisával.
A szimbólumfájl fontossága
Közzétételkor a natív AOT fordítóval egy végrehajtható fájlt és egy szimbólum fájlt is létrehoz. A natív hibakereséshez és a kapcsolódó tevékenységekhez, például a profilkészítéshez hozzáférésre van szükség a natív szimbólumfájlhoz. Ha ez a fájl nem jelenik meg, előfordulhat, hogy csökkentett vagy hibás eredményeket adott meg.
A szimbólumfájl nevével és helyével kapcsolatos információkért lásd a natív hibakeresési információkat.
CPU-profilkészítés
A platformspecifikus eszközök, például a PerfView és a Perf felhasználhatók a natív AOT-alkalmazások CPU-mintáinak gyűjtésére.
Halomelemzés
Jelenleg a natív AOT nem támogatja a felügyelt halomelemzést. A halomelemző eszközök, például a dotnet-gcdump, a PerfView és a Visual Studio halomelemző eszközei nem működnek natív AOT-ban a .NET 8-ban.