Dela via


Använda den fristående IntelliTrace-insamlaren (C#, Visual Basic)

Med den fristående IntelliTrace-insamlaren kan du samla in IntelliTrace-diagnostikdata för dina appar på produktionsservrar eller andra miljöer utan att installera Visual Studio på måldatorn och utan att ändra målsystemets miljö. Den fristående IntelliTrace-insamlaren fungerar på webb-, SharePoint-, WPF- och Windows Forms-appar. När du är klar med att samla in data tar du bara bort insamlaren för att avinstallera den.

Anmärkning

Rekommenderade metoder för att diagnostisera problem på produktionsservrar finns i Diagnostisera problem efter distributionen.

Requirements

Vilka appar fungerar med insamlaren?

  • ASP.NET webbappar som finns i IIS-version 7.0, 7.5, 8.0, 12.0 och 16.0

  • SharePoint 2010- och SharePoint 2013-program

  • Windows Presentation Foundation (WPF) och Windows Forms-appar.

Hur kommer jag igång?

  1. Installera insamlaren

  2. Konfigurera behörigheter för samlarens katalog

  3. Installera IntelliTrace PowerShell-cmdletar för att samla in data för webbappar eller SharePoint-program

  4. Konfigurera behörigheter för .iTrace-filkatalogen

  5. Samla in data från en webbapp eller Ett SharePoint-program

    -or-

    Samla in data från en hanterad app

  6. Öppna .iTrace-filen i Visual Studio Enterprise

Installera insamlaren

  1. Skapa insamlingskatalogen på appens server, till exempel : C:\IntelliTraceCollector

  2. Hämta samlaren från Visual Studio-installationsmappen.

    1. Kopiera IntelliTraceCollection.cab från mappen där insamlaren är installerad, till exempel:

      .. \Microsoft Visual Studio\18\Enterprise\Common7\IDE\CommonExtensions\Microsoft\IntelliTrace

      .. \Microsoft Visual Studio\2022\Enterprise\Common7\IDE\CommonExtensions\Microsoft\IntelliTrace

      eller för tidigare versioner av Visual Studio:

      .. \Microsoft Visual Studio 12.0\Common7\IDE\CommonExtensions\Microsoft\IntelliTrace\12.0.0

    2. Placera IntelliTraceCollection.cab i insamlingskatalogen, till exempel: C:\IntelliTraceCollector

  3. Expandera IntelliTraceCollection.cab:

    1. Öppna ett kommandotolksfönster som administratör på appens server.

    2. Bläddra till insamlingskatalogen, till exempel: C:\IntelliTraceCollector

    3. Använd kommandot expandera , inklusive perioden (.) i slutet, för att expandera IntelliTraceCollection.cab:

      expand /f:* IntelliTraceCollection.cab .

      Anmärkning

      Perioden (.) bevarar de undermappar som innehåller lokaliserade samlingsplaner.

Konfigurera behörigheter för 'Collector Directory'-katalogen

  1. Öppna ett kommandotolksfönster som administratör på appens server.

  2. Använd Windows icacls-kommandot för att ge serveradministratören fullständig behörighet till insamlingskatalogen. Till exempel:

    icacls "C:\IntelliTraceCollector" /grant " <Domain\AdministratorID>":F

  3. Så här samlar du in data för en webbapp eller Ett SharePoint-program:

    1. Ge den person som ska köra IntelliTrace PowerShell-cmdletarna fullständig behörighet till samlingskatalogen.

      Till exempel:

      icacls "C:\IntelliTraceCollector" /grant " <Domain\UserID>":F

    2. Ge programpoolen för webbappen eller SharePoint-programmet läs- och körbehörighet till insamlingskatalogen.

      Till exempel:

      • För en webbapp i Programpoolen DefaultAppPool :

        icacls "C:\IntelliTraceCollector" /grant "IIS APPPOOL\DefaultAppPool":RX

      • För ett SharePoint-program i SharePoint - 80-programpoolen :

        icacls "C:\IntelliTraceCollector" /grant "IIS APPPOOL\SharePoint - 80":RX

Installera IntelliTrace PowerShell-cmdletar för att samla in data för webbappar eller SharePoint-program

  1. Kontrollera att PowerShell är aktiverat på appens server. I de flesta versioner av Windows Server kan du lägga till den här funktionen i administrationsverktyget serverhanteraren .

    Lägga till PowerShell med hjälp av Serverhanteraren

  2. Installera IntelliTrace PowerShell-cmdlets.

    1. Öppna ett PowerShell-kommandofönster som administratör.

      1. Välj Start, Alla program, Tillbehör, Windows PowerShell.

      2. Välj något av följande steg:

        • Öppna snabbmenyn för Windows PowerShell på 64-bitars operativsystem. Välj Kör som administratör.

        • Öppna snabbmenyn för Windows PowerShell (x86) på 32-bitars operativsystem. Välj Kör som administratör.

    2. I PowerShell-kommandofönstret använder du kommandot Import-Module för att importera Microsoft.VisualStudio.IntelliTrace.PowerShell.dll.

      Till exempel:

      Import-Module "C:\IntelliTraceCollector\Microsoft.VisualStudio.IntelliTrace.PowerShell.dll"

Konfigurera behörigheter för .iTrace-filkatalogen

  1. På appens server skapar du .iTrace-filkatalogen, till exempel : C:\IntelliTraceLogFiles

    Anmärkning

    • Om du vill undvika att sakta ned appen väljer du en plats på en lokal höghastighetsdisk som inte är särskilt aktiv.
      • Du kan placera .iTrace-filer och insamlarfilerna på samma plats. Men om du har en webbapp eller Ett SharePoint-program kontrollerar du att den här platsen ligger utanför den katalog som är värd för programmet.

    Viktigt!

    • Begränsa filkatalogen .iTrace endast till de identiteter som måste fungera med insamlaren. En .iTrace-fil kan innehålla känslig information, till exempel data från användare, databaser, andra källplatser och anslutningssträngar eftersom IntelliTrace kan registrera data som skickas till metodparametrar eller som returvärden.
      • Se till att de som kan öppna .iTrace-filer har behörighet att visa känsliga data. Var försiktig när du delar .iTrace-filer. Om andra personer måste ha åtkomst kopierar du filerna till en säker delad plats.
  2. För en webbapp eller Ett SharePoint-program ger du dess programpool fullständiga behörigheter till filkatalogen .iTrace. Du kan använda kommandot Windows icacls eller använda Utforskaren (eller Filutforskaren).

    Till exempel:

    • Så här konfigurerar du behörigheter med windows icacls-kommandot :

      • För en webbapp i Programpoolen DefaultAppPool :

        icacls "C:\IntelliTraceLogFiles" /grant "IIS APPPOOL\DefaultAppPool":F

      • För ett SharePoint-program i SharePoint - 80-programpoolen :

        icacls "C:\IntelliTraceLogFiles" /grant "IIS APPPOOL\SharePoint - 80":F

        -or-

    • Så här konfigurerar du behörigheter med Utforskaren (eller File Explorer):

      1. Öppna Egenskaper för .iTrace-filkatalogen.

      2. På fliken Säkerhet väljer du Redigera, Lägg till.

      3. Kontrollera att inbyggda säkerhetsobjekt visas i rutan Välj den här objekttypen . Om den inte finns där väljer du Objekttyper för att lägga till den.

      4. Kontrollera att den lokala datorn visas i rutan Från den här platsen . Om den inte finns där väljer du Platser för att ändra den.

      5. I rutan Ange de objektnamn som ska väljas lägger du till programpoolen för webbappen eller SharePoint-programmet.

      6. Välj Kontrollera namn för att lösa namnet. Välj OK.

      7. Kontrollera att programpoolen har fullständig kontroll.

Samla in data från en webbapp eller Ett SharePoint-program

  1. Om du vill börja samla in data öppnar du ett PowerShell-kommandofönster som administratör och kör sedan det här kommandot:

    Start-IntelliTraceCollection " <ApplicationPool>"<PathToCollectionPlan><FullPathToITraceFileDirectory>

    Viktigt!

    När du har kört det här kommandot skriver du Y för att bekräfta att du vill börja samla in data.

    Om du till exempel vill samla in data från ett SharePoint-program i SharePoint - 80-programpoolen :

    Start-IntelliTraceCollection "SharePoint - 80" "C:\IntelliTraceCollector\collection_plan.ASP.NET.default.xml" "C:\IntelliTraceLogFiles"

    Namn Description
    ApplicationPool Namnet på programpoolen där programmet körs
    PathToCollectionPlan Sökvägen till en samlingsplan, en .xml fil som konfigurerar inställningar för insamlaren.

    Du kan ange ett schema som medföljer insamlaren. Följande planer fungerar för webbappar och SharePoint-program:

    - collection_plan.ASP.NET.default.xml
    Samlar endast in IntelliTrace-händelser och SharePoint-händelser, inklusive undantag, databasanrop och webbserverbegäranden.
    - collection_plan.ASP.NET.trace.xml
    Samlar in funktionsanrop och alla data i collection_plan.ASP.NET.default.xml. Den här planen är bra för detaljerad analys, men den kan göra appen långsammare än collection_plan.ASP.NET.default.xml.

    Du kan undvika att sakta ned appen genom att anpassa dessa planer eller skapa en egen plan. För säkerhet placerar du alla anpassade planer på samma säkra plats som insamlingsfilerna. Se Skapa och anpassa IntelliTrace-insamlingsplaner och Hur får jag ut mesta möjliga av data utan att sakta ned min app?Not: Som standard är maxstorleken för .iTrace-filen 100 MB. När .iTrace-filen når den här gränsen tar insamlaren bort filens tidigaste poster för att skapa utrymme för nyare poster. Om du vill ändra den här gränsen redigerar du samlingsplanens MaximumLogFileSize attribut.

    Var hittar jag lokaliserade versioner av dessa samlingsplaner?

    Du hittar lokaliserade planer i insamlarens undermappar.
    FullPathToITraceFileDirectory Den fullständiga sökvägen till .iTrace-filkatalogen. Säkerhetsanteckning: Ange den fullständiga sökvägen, inte en relativ sökväg.

    Insamlaren ansluter till programpoolen och börjar samla in data.

    Kan jag öppna .iTrace-filen just nu? Nej, filen är låst under datainsamlingen.

  2. Återskapa problemet.

  3. Om du vill skapa en kontrollpunkt för .iTrace-filen använder du den här syntaxen:

    Checkpoint-IntelliTraceCollection " <ApplicationPool>"

  4. Om du vill kontrollera samlingens status använder du den här syntaxen:

    Get-IntelliTraceCollectionStatus

  5. Om du vill sluta samla in data använder du den här syntaxen:

    Stop-IntelliTraceCollection " <ApplicationPool>"

    Viktigt!

    När du har kört det här kommandot skriver du Y för att bekräfta att du vill sluta samla in data. Annars kan insamlaren fortsätta att samla in data, iTrace-filen förblir låst eller så kanske filen inte innehåller några användbara data.

  6. Öppna .iTrace-filen i Visual Studio Enterprise

Samla in data från en hanterad app

  1. Om du vill starta din app och samla in data samtidigt använder du den här syntaxen:

    <FullständigSökvägTillIntelliTraceSamlarkörbarFil>\IntelliTraceSC.exe launch /cp:<SökvägTillInsamlingsplan>/f:<FullständigSökvägTillITraceFildirectoryOchFilnamn><SökvägTillAppKörbarFilOchFilnamn>

    Om du till exempel vill samla in data från en app med namnet MyApp:

    C:IntelliTraceCollectorIntelliTraceSC.exe launch /cp:"C:IntelliTraceCollectorcollection_plan.ASP.NET.default.xml" /f:"C:IntelliTraceLogFilesMyApp.itrace" "C:MyAppMyApp.exe"

    Namn Description
    FullPathToIntelliTraceCollectorExecutable Den fullständiga sökvägen till den körbara insamlaren IntelliTraceSC.exe
    PathToCollectionPlan Sökvägen till en samlingsplan, en .xml fil som konfigurerar inställningar för insamlaren.

    Du kan ange ett schema som medföljer insamlaren. Följande planer fungerar för hanterade appar:

    - collection_plan.ASP.NET.default.xml
    Samlar endast in IntelliTrace-händelser, inklusive undantag, databasanrop och webbserverbegäranden.
    - collection_plan.ASP.NET.trace.xml
    Samlar in funktionsanrop och alla data i collection_plan.ASP.NET.default.xml. Den här planen är bra för detaljerad analys, men den kan göra appen långsammare än collection_plan.ASP.NET.default.xml.

    Du kan undvika att sakta ned appen genom att anpassa dessa planer eller skapa en egen plan. För säkerhet placerar du alla anpassade planer på samma säkra plats som insamlingsfilerna. Se Skapa och anpassa IntelliTrace-insamlingsplaner och Hur får jag ut mesta möjliga av data utan att sakta ned min app?Not: Som standard är maxstorleken för .iTrace-filen 100 MB. När .iTrace-filen når den här gränsen tar insamlaren bort filens tidigaste poster för att skapa utrymme för nyare poster. Om du vill ändra den här gränsen redigerar du samlingsplanens MaximumLogFileSize attribut.

    Var hittar jag lokaliserade versioner av dessa samlingsplaner?

    Du hittar lokaliserade planer i insamlarens undermappar.
    FullPathToITraceFileDirectoryAndFileName Den fullständiga sökvägen till filkatalogen .iTrace och filnamnet .iTrace med filnamnstillägget .itrace . Säkerhetsanteckning: Ange den fullständiga sökvägen, inte en relativ sökväg.
    SökvägTillAppensKörbaraFilOchFilnamn Sökvägen och filnamnet för din hanterade app
  2. Stoppa datainsamlingen genom att avsluta appen.

  3. Öppna .iTrace-filen i Visual Studio Enterprise

Öppna .iTrace-filen i Visual Studio Enterprise

Anmärkning

Om du vill felsöka med IntelliTrace och gå igenom kod måste du ha matchande källfiler och symbolfiler. Se Diagnostisera problem efter distributionen.

  1. Flytta .iTrace-filen eller kopiera den till en dator med Visual Studio Enterprise (men inte Professional- eller Community-utgåvor).

  2. Dubbelklicka på .iTrace-filen utanför Visual Studio eller öppna filen inifrån Visual Studio.

    Visual Studio visar sidan Sammanfattning av IntelliTrace . I de flesta avsnitt kan du granska händelser eller andra objekt, välja ett objekt och börja felsöka med IntelliTrace vid den tidpunkt då och när en händelse inträffade. Se Använda sparade IntelliTrace-data.

    Anmärkning

    Om du vill felsöka med IntelliTrace och gå igenom kod måste du ha matchande källfiler och symbolfiler på utvecklingsdatorn. Se Diagnostisera problem efter distributionen.

Hur får jag ut mesta möjliga av data utan att sakta ned min app?

IntelliTrace kan samla in massor av data, så effekten på appens prestanda beror på de data som IntelliTrace samlar in och vilken typ av kod den analyserar. Se Optimera IntelliTrace-samlingen på produktionsservrar.

Här är några sätt att få ut mesta möjliga av data utan att göra appen långsammare:

  • Kör endast insamlaren när du tror att det finns ett problem eller när du kan återskapa problemet.

    Starta samlingen, återskapa problemet och stoppa sedan samlingen. Öppna .iTrace-filen i Visual Studio Enterprise och granska data. Se Öppna .iTrace-filen i Visual Studio Enterprise.

  • För webbappar och SharePoint-program registrerar insamlaren data för varje app som delar den angivna programpoolen. Detta kan göra alla appar som delar samma programpool långsammare, även om du bara kan ange moduler för en enskild app i en samlingsplan.

    För att förhindra att kompileraren saktar ned andra appar ska du köra varje app i en egen programgrupp.

  • Granska händelserna i insamlingsplanen som IntelliTrace samlar in data för. Redigera samlingsplanen för att inaktivera händelser som inte är relevanta eller som inte intresserar dig.

    Om du vill inaktivera en händelse anger du enabled attributet för elementet <DiagnosticEventSpecification> till false:

    <DiagnosticEventSpecification enabled="false">

    Om attributet enabled inte finns aktiveras händelsen.

    Hur förbättrar detta prestanda?

    • Du kan minska starttiden genom att inaktivera händelser som inte är relevanta för appen. Inaktivera till exempel Windows-arbetsflödeshändelser för appar som inte använder Windows-arbetsflöde.

    • Du kan förbättra både start- och körningsprestanda genom att inaktivera registerhändelser för appar som har åtkomst till registret men inte visar problem med registerinställningar.

  • Granska modulerna i insamlingsplanen som IntelliTrace samlar in data för. Redigera samlingsplanen så att den endast innehåller de moduler som intresserar dig:

    1. Öppna samlingsplanen. Leta upp elementet <ModuleList> .

    2. I <ModuleList>anger du attributet isExclusionList till false.

    3. Använd elementet <Name> för att ange varje modul med något av följande: filnamn, strängvärde för att inkludera alla moduler vars namn innehåller strängen eller den offentliga nyckeln.

      Om du till exempel bara vill samla in data från huvudwebbmodulen i Fabrikam Fiber Web-appen skapar du en lista som den här:

    <ModuleList isExclusionList="false">
       <Name>FabrikamFiber.Web.dll</Name>
    </ModuleList>
    

    Om du vill samla in data från en modul vars namn innehåller "Fabrikam" skapar du en lista som den här:

    <ModuleList isExclusionList="false">
       <Name>Fabrikam</Name>
    </ModuleList>
    

    Om du vill samla in data från moduler genom att ange deras offentliga nyckeltoken skapar du en lista som den här:

    <ModuleList isExclusionList="false">
       <Name>PublicKeyToken:B77A5C561934E089</Name>
       <Name>PublicKeyToken:B03F5F7F11D50A3A</Name>
       <Name>PublicKeyToken:31BF3856AD364E35</Name>
       <Name>PublicKeyToken:89845DCD8080CC91</Name>
       <Name>PublicKeyToken:71E9BCE111E9429C</Name>
    </ModuleList>
    

    Hur förbättrar detta prestanda?

    Detta minskar mängden information om metodanrop och andra instrumentationsdata som IntelliTrace samlar in när appen startar och körs. Med dessa data kan du:

    • Gå igenom koden efter att ha samlat in data.

    • Granska värden som skickas till och returneras från funktionsanrop.

      Varför inte exkludera moduler i stället?

      Som standard exkluderar samlingsplaner moduler genom att ange isExclusionList attributet till true. Om du exkluderar moduler kan det dock fortfarande leda till att data samlas in från moduler som inte uppfyller listans kriterier och som kanske inte intresserar dig, till exempel moduler från tredje part eller med öppen källkod.

  • Finns det några data som IntelliTrace inte samlar in?

    Ja, för att minska prestandapåverkan begränsar IntelliTrace datainsamlingen till värden för primitiva datatyper som skickas till och returneras från metoder och till värden för primitiva datatyper i fält på objekt på översta nivån som skickas till och returneras från metoder.

    Anta till exempel att du har en AlterEmployee metodsignatur som accepterar ett heltal id och ett Employee objekt oldemployee:

    public Employee AlterEmployee(int id, Employee oldemployee)

    Typen Employee har följande attribut: Id, Nameoch HomeAddress. Det finns en kopplingsrelation mellan Employee och Address typen.

    Relation mellan anställd och adress

    Insamlaren registrerar värden för id, Employee.IdEmployee.Nameoch objektet Employee som returneras från AlterEmployee metoden. Insamlaren registrerar dock inte någon annan information om Address objektet än om det var null eller inte. Insamlaren registrerar inte heller data om lokala variabler i AlterEmployee metoden om inte andra metoder använder dessa lokala variabler som parametrar vid vilken tidpunkt de registreras som metodparametrar.

Var annars kan jag hämta IntelliTrace-data?

Du kan hämta IntelliTrace-data från en IntelliTrace-felsökningssession i Visual Studio Enterprise. Se IntelliTrace-funktioner.

Var kan jag få mer information?

Använda sparade IntelliTrace-data

IntelliTrace

Blogs

Använda den fristående IntelliTrace-insamlaren via fjärranslutning

Skapa och anpassa IntelliTrace-samlingsplaner

Optimera IntelliTrace-samlingen på produktionsservrar

Microsoft DevOps

Forumen

Felsökningsprogram för Visual Studio