Overzicht van Azure RTOS TraceX

Azure RTOS TraceX is het analysehulpprogramma van Microsoft dat ontwikkelaars een grafische weergave van realtime systeemgebeurtenissen biedt en waarmee ze het gedrag van hun realtime-systemen kunnen visualiseren en beter begrijpen. Met Azure RTOS TraceX kunnen ontwikkelaars duidelijk zien hoe systeemgebeurtenissen zoals interrupts en contextswitches worden uitgevoerd die niet in de standaardhulpprogramma's voor debuggen voorkomen. De mogelijkheid om deze gebeurtenissen te identificeren en te bestuderen, en om de timing van het optreden ervan in de context van de werking van het algehele systeem vast te stellen, stelt ontwikkelaars in staat om programmeerproblemen op te lossen door onverwacht gedrag te vinden en ze specifieke gebieden verder te laten onderzoeken Traceerinformatie wordt opgeslagen in een buffer op het doelsysteem, met de bufferlocatie en grootte die tijdens run time door de toepassing worden bepaald. Azure RTOS TraceX kan elke buffer verwerken die op de juiste manier is samengesteld, niet alleen vanuit Azure RTOS ThreadX, maar vanuit elke toepassing of RTOS. De traceergegevens kunnen op elk moment worden geüpload naar de host voor analyse, hetzij na een probleem of na een onderbrekingspunt. Azure RTOS ThreadX implementeert een cirkelvormige buffer, waardoor de meest recente 'N'-gebeurtenissen beschikbaar zijn voor inspectie in het geval van een storing in het systeem of een andere belangrijke gebeurtenis.

Azure RTOS TraceX-Single-Core weergeven

TraceX-Single-Core weergeven

Belangrijkste mogelijkheden

Azure RTOS TraceX ingebouwde systeemanalyse

Azure RTOS TraceX biedt ingebouwde rapporten voor systeemanalyse die beschikbaar zijn via één klik op de knop op de TraceX-werkbalk. Deze knoppen en rapporten omvatten:

Uitvoeringsprofielrapport genereren Uitvoeringsprofielrapport genereren

Rapport Prestatiestatistieken genereren Rapport Prestatiestatistieken genereren

Gebruiksrapport threadstack genereren Gebruiksrapport threadstack genereren

Traceer gegevens die zijn verzameld door Azure RTOS ThreadX

Azure RTOS TraceX is ontworpen om te werken met Azure RTOS ThreadX, dat tijdens run time een database met systeem- en toepassingsgebeurtenissen op het doelsysteem samenwerkt. Deze gebeurtenissen omvatten:

  • threadcontextswitches
  • toe-eigeningen
  • Schorsingen
  • Opzeggingen
  • systeemonderbreken
  • toepassingsspecifieke gebeurtenissen
  • alle Azure RTOS ThreadX API-aanroepen
  • alle Azure RTOS NetX API-aanroepen
  • alle Azure RTOS FileX API-aanroepen
  • alle Azure RTOS USBX-API-aanroepen
  • door de toepassing gedefinieerde pictogrammen en informatie

Gebeurtenissen worden geregistreerd onder programmabeheer, met tijdstempels en actieve threadidentificatie, zodat ze later in de juiste tijdreeks kunnen worden weergegeven en gekoppeld aan de juiste thread. Logboekregistratie van gebeurtenissen kan dynamisch worden gestopt en opnieuw gestart door het toepassingsprogramma, bijvoorbeeld wanneer een interessegebied wordt aangetroffen. Dit voorkomt dat de database wordt rommelig en het doelgeheugen wordt gebruikt wanneer het systeem correct presteert.

Azure RTOS TraceX is als een software logic analyzer

Zodra het gebeurtenislogboek is geüpload van het doelgeheugen naar de host, geeft Azure RTOS TraceX de gebeurtenissen grafisch weer op een horizontale as die tijd vertegenwoordigt, met de verschillende toepassingsthreads en systeemroutines waaraan de gebeurtenissen zijn gerelateerd langs de verticale as. Azure RTOS TraceX maakt een 'software logic analyzer' op de host, waardoor systeemgebeurtenissen duidelijk zichtbaar zijn. Gebeurtenissen worden vertegenwoordigd door pictogrammen met kleurcode, die zich bevinden op het moment van het voorval langs de horizontale tijdlijn, rechts van de relevante thread of systeemroutine. Wanneer een gebeurtenispictogram is geselecteerd, wordt de bijbehorende informatie voor die gebeurtenis weergegeven, evenals de informatie voor de twee vorige en twee volgende gebeurtenissen. Dit biedt snelle toegang met één klik tot de meest onmiddellijke informatie over de gebeurtenis en de gebeurtenissen direct om zich heen. Azure RTOS TraceX biedt een samenvattingsweergave met alle systeemgebeurtenissen op één horizontale lijn om de analyse van systemen met veel threads te vereenvoudigen.

Sequentiële weergavemodus

De sequentiële weergavemodus wordt geselecteerd door te klikken op het tabblad Sequentiële weergave. Dit is de standaardmodus. In deze modus worden gebeurtenissen direct na elkaar weergegeven, ongeacht de verstreken tijd tussen de gebeurtenissen. Let ook op de liniaal boven het weergavegebied. Hier wordt het relatieve gebeurtenisnummer van het begin van de traceer. Deze modus is de standaardmodus en is vooral handig om een goed overzicht te krijgen van wat er in het systeem gebeurt.

Sequentiële weergavemodus

Sequentiële weergavemodus

Tijdweergavemodus

In deze modus worden gebeurtenissen weergegeven op een tijds relatieve manier, met een effen groene balk die wordt gebruikt om de uitvoering tussen gebeurtenissen weer te geven. Deze modus is vooral handig om te zien waar het grootste deel van de verwerking plaatsvindt in het systeem, wat ontwikkelaars kan helpen hun systeem af te stemmen voor betere prestaties en/of reactiesnelheid.

Let ook op de liniaal boven de gebeurtenisweergave. Deze liniaal toont relatieve tikken vanaf het begin van de traceer, zoals afgeleid van het tijdstempel dat is instrumenteerd in de logboekregistratie van gebeurtenis traceergebeurtenissen in Azure RTOS ThreadX. Als de tijdstempels te dicht bij elkaar liggen (timer met lage frequentie), worden de gebeurtenissen samen uitgevoerd. Als de tijdstempels daarentegen te ver uit elkaar liggen (timer met hoge frequentie), liggen de gebeurtenissen te ver uit elkaar. Het kiezen van de juiste frequentie tijdstempel is een belangrijke overweging bij het zinvol maken van de tijd relatieve weergave.

Tijdweergavemodus

Systeemoverzichtsregel

Azure RTOS TraceX biedt ook één samenvattingsregel die alle gebeurtenissen op dezelfde regel bevat. De samenvattingsregel bevat een samenvatting van de context en het bijbehorende gebeurtenisoverzicht eronder. Hierdoor kunt u eenvoudig een overzicht van een complex systeem zien. De samenvattingsbalk is vooral nuttig in systemen met een groot aantal threads. Zonder een dergelijke samenvattingsregel zou de gebruiker complexe systeeminteracties moeten volgen met behulp van de verticale schuifbalk om de context van de uitvoering te volgen.

Azure RTOS TraceX worden de systeemcontexten aan de linkerkant van de weergave weergegeven. Gebeurtenissen die zich in een bepaalde context voordoen, worden weergegeven op de horizontale lijn rechts van die context. Op deze manier kan de gebruiker eenvoudig vaststellen welke context de gebeurtenis heeft plaatsgevonden en die contextregel volgen om alle gebeurtenissen te zien die in een bepaalde context zijn opgetreden.

Systeemoverzichtsregel

Systeemoverzichtsregel

De eerste twee contextgegevens zijn altijd de contexten Interrupt en Initialiseren/Inactief. De context Interrupt vertegenwoordigt alle systeemgebeurtenissen die zijn gemaakt van Interrupt Service Routines (ISR's). De context Initialiseren/inactief vertegenwoordigt twee contexten in Azure RTOS ThreadX. Gebeurtenissen die optreden tijdens tx_application_define, zijn 'Initialiseren'-gebeurtenissen en worden weergegeven in de context Initialiseren/inactief. Als het systeem inactief is en er dus geen gebeurtenissen optreden, wordt de groene balk die 'Wordt uitgevoerd' in de tijdweergave vertegenwoordigt, getekend in de context 'Initialiseren/inactief'.

Navigatiemethoden

Azure RTOS TraceX kan de ontwikkelaar opgeven hoe de navigatieknoppen Volgende en Vorige werken.

Navigatieknoppen

Als 'Gebeurtenis' is geselecteerd, wordt navigatie uitgevoerd bij de volgende/vorige gebeurtenis. Als 'Context' is geselecteerd, wordt navigatie uitgevoerd bij de volgende/vorige gebeurtenis in dezelfde context. Als 'Object' is geselecteerd, wordt navigatie uitgevoerd bij de volgende/vorige gebeurtenis van het huidige object, bijvoorbeeld gebeurtenissen die zijn gekoppeld aan een specifieke wachtrij. Als 'Switches' is geselecteerd, wordt navigatie uitgevoerd op de volgende/vorige contextswitch. Als 'Dezelfde id' is geselecteerd, wordt navigatie uitgevoerd op de volgende/vorige gebeurtenis voor dezelfde gebeurtenis-id.

Weergave van gebeurtenisgegevens

Azure RTOS TraceX biedt gedetailleerde informatie over ongeveer 300 gebeurtenissen. Dit zijn zes interne Azure RTOS ThreadX-gebeurtenissen, twee ISR-gebeurtenissen (enter en exit), 14 interne Azure RTOS FileX-gebeurtenissen, 42 interne Azure RTOS NetX-gebeurtenissen en één door de gebruiker gedefinieerde gebeurtenis. De resterende gebeurtenissen komen rechtstreeks overeen met Azure RTOS ThreadX, Azure RTOS FileX en Azure RTOS NetX API-services. Ongeacht of sequentiële of tijdweergavemodus is geselecteerd, een muisaanwijzer op een gebeurtenis in het weergavegebied resulteert in gedetailleerde informatie over de gebeurtenis weergegeven in de buurt van de gebeurtenis. De muisaanwijzer van gebeurtenis 494 in de demonstratie demo_threadx.trx tracebestand wordt hier weergegeven:

Met de muisaanwijzer wordt meer informatie weergegeven

Met de muisaanwijzer wordt meer informatie weergegeven

Elke weergegeven gebeurtenis bevat standaardinformatie over context en zowel de relatieve tijd en tijdstempel. In het veld Context ziet u in welke context de gebeurtenis heeft plaatsgevonden. Er zijn precies vier contexten: thread, inactief, ISR en initialisatie. Wanneer een gebeurtenis plaatsvindt in een threadcontext, worden de naam van de thread en de prioriteit op dat moment verzameld en weergegeven zoals hierboven wordt weergegeven. De Relatieve tijd toont het relatieve aantal timerti tikken vanaf het begin van de trace. De onbewerkte tijdstempel geeft de bron van de onbewerkte tijd van de gebeurtenis. Ten slotte wordt alle gebeurtenisspecifieke informatie weergegeven.

In- en uitzoomen

Standaard geeft Azure RTOS TraceX de gebeurtenissen weer in een gemakkelijk te bekijken grootte, met een toewijzing van 1:1 pixel:tick. De gebruiker kan desgewenst in- of uitzoomen. Uitzoomen op 100% is handig om de volledige traceer in de huidige weergave weer te geven, terwijl inzoomen handig is in situaties waarin de gebeurtenissen overlappen vanwege de resolutie van de tijdstempelbron.

Uitzoomen naar 100% weergave of inzoomen voor meer informatie

Uitzoomen op 100% weergave of inzoomen voor details

Wanneer u uitzoomt op 100%, met de volledige traceer op de huidige weergavepagina, kunt u eenvoudig alle contextuitvoering zien die in de traceer is vastgelegd, evenals de algemene gebeurtenissen die zich binnen deze contexten voordoen. U ziet dat 'thread 1' en 'thread 2' het vaakst worden uitgevoerd. De blauwe kleuring voor hun gebeurtenissen duidt er ook op dat deze threads wachtrijservice-aanroepen maken (wachtrijgebeurtenissen zijn blauw van kleur).

Herstellen naar een volledige pictogramweergave is net zo eenvoudig; De inzoomknop kan herhaaldelijk worden geselecteerd of er kan een factor 100 worden ingevoerd.

Delta-tikken tussen gebeurtenissen

Het bepalen van het aantal tikken tussen verschillende gebeurtenissen in Azure RTOS TraceX is eenvoudig. Klik gewoon op de begingebeurtenis en sleep de muis naar de eindgebeurtenis. Het deltaaantal tikken tussen de gebeurtenissen wordt weergegeven in de rechterbovenhoek van het scherm.

Delta-tikken

Delta-tikken

De delta tikken laten zien dat er 5032 tikken zijn verstreken tussen gebeurtenis 494 en gebeurtenis 496. Dit kan ook handmatig worden berekend door te kijken naar de relatieve tijdstempels in elke gebeurtenis en af te trekken, maar het gebruik van de GEBRUIKersinterface is eenvoudig en onmiddellijk.

Inversies met prioriteit

Azure RTOS TraceX geeft automatisch prioriteitsversies weer die in het traceerbestand zijn gedetecteerd. Inversies met prioriteit worden gedefinieerd als voorwaarden waarbij een thread met een hogere prioriteit wordt geblokkeerd bij het verkrijgen van een mutex die momenteel eigendom is van een thread met lagere prioriteit. Deze voorwaarde wordt 'deterministisch' genoemd, omdat het systeem is ingesteld om op deze manier te werken. Om de gebruiker hiervan op de hoogte te stellen, Azure RTOS TraceX 'deterministische' prioriteitsinversiebereiken als een lichte kleur.

Azure RTOS TraceX geeft ook 'niet-deterministische' prioriteitsversies weer. Deze prioriteitsinversies verschillen van de 'deterministische' prioriteitsinversies omdat een andere thread van een ander prioriteitsniveau is uitgevoerd in het midden van een 'deterministische' prioriteitsinversie, waardoor de tijd binnen de prioriteitsinversie enigszins 'deterministisch' is. Deze voorwaarde is vaak onbekend voor de gebruiker en kan zeer ernstig zijn. Als u de gebruiker van deze voorwaarde wilt waarschuwen, Azure RTOS TraceX 'un-deterministic' prioriteitsinversies als een slechte kleur voor de prioriteit.

Deterministische en niet-deterministische prioriteit inversie

Deterministische en niet-deterministische prioriteit inversie

Uitvoeringsprofiel

Azure RTOS TraceX biedt een ingebouwd uitvoeringsprofielrapport voor alle uitvoeringscontexten in het momenteel geladen traceerbestand.

Uitvoeringsprofiel

Prestatiestatistieken

Azure RTOS TraceX biedt een ingebouwd rapport met prestatiestatistieken voor het momenteel geladen traceerbestand.

Prestatiestatistieken

Gebruik van threadstack

Azure RTOS TraceX biedt een ingebouwd stackgebruiksrapport voor alle threads die in het momenteel geladen traceerbestand worden uitgevoerd.

Stack-gebruik

Azure RTOS TraceX worden de Azure RTOS FileX-prestatiestatistieken van het momenteel geladen traceerbestand. Deze informatie wordt weergegeven voor het hele systeem op alle geopende mediaobjecten.

FileX-statistieken

Azure RTOS NetX-statistieken

Azure RTOS TraceX bevat ook de NetX-prestatiestatistieken van het momenteel geladen traceerbestand. Deze informatie wordt weergegeven voor het hele systeem.

NetX-statistieken

Onbewerkte traceerdump

Azure RTOS TraceX kan een onbewerkt traceerbestand in tekstindeling maken en Kladblok starten om het weer te geven.

Onbewerkte traceerdump

Houd er rekening mee dat alle vermelde timing- en groottecijfers schattingen zijn en mogelijk anders zijn op uw ontwikkelplatform