Dela via


Spårning och arrangemang av program

Kommentar

Den här artikeln är specifik för .NET Framework. Det gäller inte för nyare implementeringar av .NET, inklusive .NET 6 och senare versioner.

Spårning är ett sätt att övervaka körningen av ditt program medan det körs. Du kan lägga till spårnings- och felsökningsinstrumentation i .NET Framework-programmet när du utvecklar det, och du kan använda den instrumentationen både när du utvecklar programmet och när du har distribuerat det. Du kan använda klasserna System.Diagnostics.Trace, System.Diagnostics.Debugoch System.Diagnostics.TraceSource för att registrera information om fel och programkörning i loggar, textfiler eller andra enheter för senare analys.

Termen instrumentation avser en möjlighet att övervaka eller mäta nivån på en produkts prestanda och diagnostisera fel. I programmering innebär detta möjligheten för ett program att införliva:

  • Kodspårning – Ta emot informativa meddelanden om körningen av ett program vid körning.

  • Felsökning – Spåra och åtgärda programmeringsfel i ett program under utveckling. Mer information finns i Felsökning.

  • Prestandaräknare – Komponenter som gör att du kan spåra programmets prestanda. Mer information finns i Prestandaräknare.

  • Händelseloggar – Komponenter som gör att du kan ta emot och spåra större händelser i körningen av ditt program. Mer information finns i EventLog klassen .

Instrumentering av ditt program genom att placera spårningsinstruktioner på strategiska platser i koden är särskilt användbart för distribuerade program. Genom att använda spårningssatser kan du instrumentera ett program inte bara för att visa information när saker går fel, utan också för att övervaka hur bra programmet presterar.

Klassen TraceSource innehåller förbättrade spårningsfunktioner och kan användas i stället för de statiska metoderna i de äldre Trace klasserna och Debug spårningsklasserna. De bekanta Trace klasserna och Debug klasserna används fortfarande i stor utsträckning, men TraceSource klassen rekommenderas för nya spårningskommandon, till exempel TraceEvent och TraceData.

Klasserna Trace och Debug är identiska, förutom att procedurer och funktioner i Trace klassen kompileras som standard i versionsversioner, men inte Debug i klassen.

Klasserna Trace och Debug ger möjlighet att övervaka och undersöka programprestanda under utveckling eller efter distributionen. Du kan till exempel använda Trace klassen för att spåra vissa typer av åtgärder i ett distribuerat program när de inträffar (till exempel skapande av nya databasanslutningar) och kan därför övervaka programmets effektivitet.

Kodspårning och felsökning

Under utvecklingen kan du använda utdatametoderna för Debug klassen för att visa meddelanden i utdatafönstret i Visual Studio Integrated Development Environment (IDE). Till exempel:

Trace.WriteLine("Hello World!")
Debug.WriteLine("Hello World!")
System.Diagnostics.Trace.WriteLine("Hello World!");
System.Diagnostics.Debug.WriteLine("Hello World!");

Vart och ett av dessa exempel visar "Hello World!" i utdatafönstret när programmet körs i felsökningsprogrammet.

På så sätt kan du felsöka dina program och optimera deras prestanda baserat på deras beteende i testmiljön. Du kan felsöka ditt program i felsökningsversionen med villkorsattributet Debug aktiverat så att du får alla felsökningsutdata. När programmet är redo för lansering kan du kompilera versionsversionen utan att aktivera villkorsattributet Debug , så att kompilatorn inte inkluderar felsökningskoden i den slutgiltiga körbara filen. Mer information finns i How to: Compile Conditionally with Trace and Debug (Kompilera villkorligt med spårning och felsökning). Mer information om olika byggkonfigurationer för ditt program finns i Kompilera och skapa.

Du kan också spåra kodkörning i ett installerat program med hjälp av klassens Trace metoder. Genom att placera spårningsväxlar i koden kan du styra om spårning sker och hur omfattande den är. På så sätt kan du övervaka statusen för ditt program i en produktionsmiljö. Detta är särskilt viktigt i ett affärsprogram som använder flera komponenter som körs på flera datorer. Du kan styra hur växlarna används efter distributionen via konfigurationsfilen. Mer information finns i Så här skapar, initierar och konfigurerar du spårningsväxlar.

När du utvecklar ett program som du tänker använda spårning för inkluderar du vanligtvis både spårnings- och felsökningsmeddelanden i programkoden. När du är redo att distribuera programmet kan du kompilera versionsversionen utan att aktivera villkorsattributet Felsökning . Du kan dock aktivera villkorsattributet Trace så att kompilatorn innehåller din spårningskod i den körbara filen. Mer information finns i How to: Compile Conditionally with Trace and Debug (Kompilera villkorligt med spårning och felsökning).

Faser i kodspårning

Det finns tre faser av kodspårning:

  1. Instrumentation – du lägger till spårningskod i ditt program.

  2. Spårning – spårningskoden skriver information till det angivna målet.

  3. Analys – du utvärderar spårningsinformationen för att identifiera och förstå problem i programmet.

Under utvecklingen skriver alla metoder för felsökning och spårning av utdata information till utdatafönstret i Visual Studio som standard. I ett distribuerat program skriver metoderna spårningsinformation till de mål som du anger. Mer information om hur du anger ett utdatamål för spårning eller felsökning finns i Spåra lyssnare.

Följande är en övergripande vy över de viktigaste stegen som vanligtvis ingår i att använda spårning för att analysera och korrigera potentiella problem i distribuerade program. Mer information om hur du utför de här stegen finns i lämplig länk.

Så här använder du spårning i ett program
  1. Överväg vilka spårningsutdata du vill ta emot på plats när du har distribuerat programmet.

  2. Skapa en uppsättning växlar. Mer information finns i Så här konfigurerar du spårningsväxlar.

  3. Lägg till spårningssatserna i programkoden.

  4. Ta reda på var du vill att spårningsutdata ska visas och lägg till lämpliga lyssnare. Mer information finns i Skapa och initiera spårningslyssnare.

  5. Testa och felsöka programmet och spårningskoden som det innehåller.

  6. Kompilera programmet till körbar kod med någon av följande procedurer:

    • Använd menyn Skapa tillsammans med felsökningssidani dialogrutan Egenskapssidor i Istraživač rešenja. Använd detta när du kompilerar i Visual Studio.

      - eller -

    • Använd kompileringsdirektiven Trace och Debug för kommandoradsmetoden för kompilering. Mer information finns i Kompilera villkorligt med spårning och felsökning. Använd detta när du kompilerar från kommandoraden.

  7. Om ett problem uppstår under körningen aktiverar du lämplig spårningsväxel. Mer information finns i Konfigurera spårningsväxlar.

    Spårningskoden skriver spårningsmeddelanden till ett angivet mål, till exempel en skärm, en textfil eller en händelselogg. Vilken typ av lyssnare du inkluderade i Trace.Listeners samlingen avgör målet.

  8. Analysera spårningsmeddelandena för att identifiera och förstå problemet i programmet.

Spårningsinstrumentation och distribuerade program

När du skapar ett distribuerat program kan det vara svårt att testa programmet på det sätt som det ska användas. Få utvecklingsteam har möjlighet att testa alla möjliga kombinationer av operativsystem eller webbläsare (inklusive alla lokaliserade språkalternativ) eller att simulera det stora antalet användare som kommer åt programmet samtidigt. Under dessa omständigheter kan du inte testa hur ett distribuerat program svarar på höga volymer, olika installationer och unika slutanvändarbeteenden. Dessutom har många delar av ett distribuerat program inget användargränssnitt som du kan interagera direkt med eller visa aktiviteten för dessa delar.

Du kan dock kompensera för detta genom att göra det möjligt för distribuerade program att beskriva vissa händelser av intresse för systemadministratörer, särskilt saker som går fel, genom att instrumentera programmet , det villa genom att placera spårningsuttryck på strategiska platser i koden. Om något oväntat inträffar vid körning (till exempel för långsam svarstid) kan du fastställa den troliga orsaken.

Med spårningsuttryck kan du undvika den svåra uppgiften att undersöka den ursprungliga källkoden, ändra den, kompilera om och försöka skapa körningsfelet i felsökningsmiljön. Kom ihåg att du kan instrumentera ett program inte bara för att visa fel, utan även för att övervaka prestanda.

Strategisk placering av spårningsrapporter

Du måste vara särskilt försiktig när du placerar spårningssatserna för användning under körningen. Du måste fundera på vilken spårningsinformation som sannolikt kommer att behövas i ett distribuerat program, så att alla sannolika spårningsscenarier omfattas på lämpligt sätt. Eftersom program som använder spårning varierar kraftigt finns det dock inga allmänna riktlinjer för strategisk placering av spårning. Mer information om hur du placerar spårningsuttryck finns i Så här lägger du till spårningsuttryck i programkoden.

Utdata från spårning

Spårningsutdata samlas in av objekt som kallas lyssnare. En lyssnare är ett objekt som tar emot spårningsutdata och skriver det till en utdataenhet (vanligtvis ett fönster, en logg eller en textfil). När en spårningslyssnare skapas läggs den vanligtvis till i Trace.Listeners samlingen, vilket gör att lyssnaren kan ta emot alla spårningsutdata.

Spårningsinformation skrivs alltid minst till standardutdatamålet Trace , DefaultTraceListener. Om du av någon anledning har tagit DefaultTraceListener bort utan att lägga till några andra lyssnare i Listeners samlingen får du inga spårningsmeddelanden. Mer information finns i Spåra lyssnare.

De sex Debug medlemmar och Trace metoder som skriver spårningsinformation visas i följande tabell.

Metod Output
Assert Den angivna texten; eller, om ingen har angetts, anropsstacken. Utdata skrivs endast om villkoret som anges som ett argument i -instruktionen Assert är falskt.
Fail Den angivna texten; eller, om ingen har angetts, anropsstacken.
Write Den angivna texten.
WriteIf Den angivna texten, om villkoret som anges som ett argument i -instruktionen WriteIf är uppfyllt.
WriteLine Den angivna texten och en vagnretur.
WriteLineIf Den angivna texten och en vagn returnerar, om villkoret som anges som ett argument i -instruktionen WriteLineIf är uppfyllt.

Alla lyssnare i Listeners samlingen får de meddelanden som beskrivs i tabellen ovan, men de åtgärder som vidtas kan variera beroende på vilken typ av lyssnare som tar emot meddelandet. Till exempel DefaultTraceListener visar en kontrolldialogruta när den tar emot ett Fail eller misslyckat Assert meddelande, men en TextWriterTraceListener helt enkelt skriver utdata till sin ström.

Du kan skapa anpassade resultat genom att implementera din egen lyssnare. En anpassad spårningslyssnare kan till exempel visa meddelanden i en meddelanderuta eller ansluta till en databas för att lägga till meddelanden i en tabell. Alla anpassade lyssnare bör ha stöd för de sex metoder som nämns ovan. Mer information om hur du skapar utvecklardefinierade lyssnare TraceListener finns i .NET Framework-referensen.

Metoderna Write och WriteLine skriver alltid den text som du anger. Assert, WriteIfoch WriteLineIf kräver ett booleskt argument som styr om de skriver den angivna texten eller inte. De skriver endast den angivna texten om uttrycket är sant (för WriteIf och WriteLineIf) eller falskt (för Assert). Metoden Fail skriver alltid den angivna texten. Mer information finns i Så här lägger du till spårningsuttryck i Application Code och .NET Framework-referensen.

Säkerhetsproblem

Om du inte inaktiverar spårning och felsökning innan du distribuerar ett ASP.NET program kan programmet avslöja information om sig själv som kan utnyttjas av ett skadligt program. Mer information finns i How to: Compile Conditionally with Trace and Debug, Compiling and Building, and How to: Create, Initialize and Configure Trace Switchs (Kompilera och skapa) och How to: Create, Initialize and Configure Trace Switchs (Så här gör du för att: Skapa, initiera och konfigurera spårningsväxlar). Felsökning kan också konfigureras via Internet Information Services (IIS).

Se även