Anteckning
Åtkomst till den här sidan kräver auktorisering. Du kan prova att logga in eller ändra kataloger.
Åtkomst till den här sidan kräver auktorisering. Du kan prova att ändra kataloger.
Viktigt!
Visual Studio App Center drogs tillbaka den 31 mars 2025, förutom analys- och diagnostikfunktionerna, som fortsätter att stödjas fram till den 30 juni 2026. Läs mer.
App Center-krascher genererar automatiskt en kraschlogg varje gång appen kraschar. Loggen skrivs först till enhetens lagring och när användaren startar appen igen skickas kraschrapporten till App Center. Insamling av krascher fungerar för både beta- och liveappar, dvs. de som skickas till App Store. Kraschloggar innehåller värdefull information som hjälper dig att åtgärda kraschen.
Följ avsnittet Komma igång om du inte har konfigurerat SDK:t i ditt program ännu.
Dessutom kräver kraschloggar på iOS symboliska värden, läs dokumentationen för App Center Diagnostics som förklarar hur du tillhandahåller symboler för din app.
Anmärkning
I iOS och Mac sparar SDK:n inte någon kraschlogg om du har kopplat ett felsökningsprogram. Kontrollera att debuggern inte är kopplad om appen för iOS och macOS kraschar. På Android kan du uppleva ett kraschläge medan debuggern är ansluten, men du måste fortsätta körningen efter att ha gått in i det ohanterade undantaget.
Generera en testkrasch
Med App Center-krascher får du ett API för att generera en testkrasch för enkel testning av SDK:n. Det här API:et söker efter felsöknings- och versionskonfigurationer. Så du kan bara använda den när du felsöker eftersom den inte fungerar för versionsappar.
Crashes.GenerateTestCrash();
Få mer information om en tidigare krasch
App Center-krascher har två API:er som ger dig mer information om din app har kraschat.
Fick appen en varning om lite minne i föregående session?
När som helst efter att du har startat SDK:n kan du kontrollera om appen fick en minnesvarning i föregående session:
bool hadMemoryWarning = await Crashes.HasReceivedMemoryWarningInLastSessionAsync();
Anmärkning
Den här metoden får endast användas efter att Crashes
har startats; den kommer alltid att returnera false
före start.
Anmärkning
I vissa fall kan en enhet med lite minne inte skicka händelser.
Kraschade appen i föregående session?
När som helst efter att du har startat SDK kan du kontrollera om appen kraschade i föregående start:
bool didAppCrash = await Crashes.HasCrashedInLastSessionAsync();
Detta är praktiskt om du vill justera appens beteende eller användargränssnitt efter att en krasch har inträffat. Vissa utvecklare väljer att visa ytterligare användargränssnitt för att be om ursäkt till sina användare eller vill ha ett sätt att komma i kontakt efter att en krasch har inträffat.
Anmärkning
Den här metoden får endast användas efter att Crashes
har startats; den kommer alltid att returnera false
före start.
Information om den senaste kraschen
Om appen kraschade tidigare kan du få information om den senaste kraschen.
ErrorReport crashReport = await Crashes.GetLastSessionCrashReportAsync();
Anmärkning
Den här metoden får endast användas efter att Crashes
har startats; den kommer alltid att returnera null
före start.
Det finns många användningsfall för det här API:et, den vanligaste är personer som anropar detta API och implementerar sin anpassade kraschdelegat eller lyssnare.
Anpassa din användning av App Center Crashes
"App Center Crashes" ger callback-funktioner för utvecklare så att de kan utföra ytterligare åtgärder innan och när kraschloggar skickas till App Center.
Anmärkning
Ställ in återanropet innan du anropar AppCenter.Start()
eftersom App Center börjar bearbeta kraschar omedelbart efter starten.
Ska kraschen bearbetas?
Ange det här återanropet om du vill avgöra om en viss krasch behöver bearbetas eller inte. Det kan till exempel finnas en krasch på systemnivå som du vill ignorera och som du inte vill skicka till App Center.
Crashes.ShouldProcessErrorReport = (ErrorReport report) =>
{
// Check the report in here and return true or false depending on the ErrorReport.
return true;
};
Be om användarens medgivande att skicka en kraschlogg
Om användarsekretess är viktigt för dig kanske du vill få användarbekräftelse innan du skickar en kraschrapport till App Center. SDK exponerar ett återanrop som instruerar App Center Crashes att invänta bekräftelse från användaren innan kraschrapporter skickas.
Om du väljer att göra det ansvarar du för att få användarens bekräftelse, t.ex. via en dialogruta med något av följande alternativ: Skicka, Skicka alltid och Skicka inte. Baserat på indata kommer du att instruera App Center Crashes om åtgärderna som ska vidtas, och kraschen kommer sedan att hanteras därefter.
Anmärkning
SDK:t visar ingen dialogruta för detta. Appen måste ange ett eget användargränssnitt för att be om användarmedgivande.
Anmärkning
Appen bör inte anropa NotifyUserConfirmation
uttryckligen om den inte implementerar en dialogruta för användarbekräftelse. Modulen Kraschar hanterar sändningsloggar åt dig implicit.
Följande återanrop visar hur du instruerar SDK:t att vänta på att användaren bekräftas innan krascher skickas:
Crashes.ShouldAwaitUserConfirmation = () =>
{
// Build your own UI to ask for user consent here. SDK doesn't provide one by default.
// Return true if you built a UI for user consent and are waiting for user input on that custom UI, otherwise false.
return true;
};
Om du återlämnar true
i återanropet ovan måste din app skaffa användarbehörighet (med din egen kod) och meddela SDK:n om resultatet med hjälp av följande API.
// Depending on the user's choice, call Crashes.NotifyUserConfirmation() with the right value.
Crashes.NotifyUserConfirmation(UserConfirmation.DontSend);
Crashes.NotifyUserConfirmation(UserConfirmation.Send);
Crashes.NotifyUserConfirmation(UserConfirmation.AlwaysSend);
Som ett exempel kan du referera till vårt anpassade dialogexempel.
Hämta information om statusen för sändningen av en kraschlogg
Ibland vill du veta status för din appkrasch. Ett vanligt användningsfall är att du kanske vill visa användargränssnittet som talar om för användarna att din app skickar en kraschrapport, eller, om din app kraschar snabbt efter starten, vill du justera appens beteende för att se till att kraschloggarna kan skickas. App Center-krascher innehåller tre olika återanrop som du kan använda i din app för att få ett meddelande om vad som händer:
Följande callback-funktion anropas innan en kraschlogg skickas av SDK:et
Crashes.SendingErrorReport += (sender, e) =>
{
// Your code, e.g. to present a custom UI.
};
Om vi har nätverksproblem eller ett avbrott på slutpunkten och du startar om appen SendingErrorReport
utlöses den igen efter att processen startats om.
Följande callback kommer att anropas efter att SDK:et har skickat en kraschlogg framgångsrikt
Crashes.SentErrorReport += (sender, e) =>
{
// Your code, e.g. to hide the custom UI.
};
Följande återanrop kommer att ske om SDK:et misslyckats med att skicka en kraschlogg
Crashes.FailedToSendErrorReport += (sender, e) =>
{
// Your code goes here.
};
Att ta emot FailedToSendErrorReport
innebär att ett fel som inte kan återställas, till exempel en 4xx-kod , inträffade. Till exempel betyder 401 att det är appSecret
fel.
Återanropet utlöses inte om det är ett nätverksproblem. I det här fallet fortsätter SDK:n att försöka igen (och pausar även återförsök medan nätverksanslutningen är nere).
Lägga till bifogade filer i en kraschrapport
Du kan lägga till binära filer och textbilagor i en kraschrapport. SDK skickar dem tillsammans med kraschen så att du kan se dem i App Center-portalen. Följande återanrop anropas direkt innan den lagrade kraschen skickas från tidigare programstarter. Den anropas inte när kraschen inträffar. Kontrollera att den bifogade filen inte är namngiven minidump.dmp
eftersom namnet är reserverat för minidump-filer. Här är ett exempel på hur du kopplar text och en bild till en krasch:
Crashes.GetErrorAttachments = (ErrorReport report) =>
{
// Your code goes here.
return new ErrorAttachmentLog[]
{
ErrorAttachmentLog.AttachmentWithText("Hello world!", "hello.txt"),
ErrorAttachmentLog.AttachmentWithBinary(Encoding.UTF8.GetBytes("Fake image"), "fake_image.jpeg", "image/jpeg")
};
};
Anmärkning
Storleksgränsen är för närvarande 7 MB. Om du försöker skicka en större bifogad fil utlöses ett fel.
Aktivera eller inaktivera App Center-krascher vid körning
Du kan aktivera och inaktivera App Center-krascher under körning. Om du inaktiverar det gör SDK:t ingen kraschrapportering för appen.
Crashes.SetEnabledAsync(false);
Om du vill aktivera App Center-krascher igen använder du samma API men skickar true
som en parameter.
Crashes.SetEnabledAsync(true);
Du behöver inte invänta det här anropet för att göra andra API-anrop (till exempel IsEnabledAsync
) konsekventa.
Tillståndet sparas i enhetens lagring mellan programstarter.
Anmärkning
Den här metoden får endast användas efter att Crashes
har startats.
Kontrollera om App Center-krascher är aktiverat
Du kan också kontrollera om App Center-krascher är aktiverat eller inte:
bool isEnabled = await Crashes.IsEnabledAsync();
Anmärkning
Den här metoden får endast användas efter att Crashes
har startats; den kommer alltid att returnera false
före start.
Hanterade fel
Med App Center kan du också spåra fel med hjälp av hanterade undantag. Om du vill göra det använder du TrackError
metoden:
try {
// your code goes here.
} catch (Exception exception) {
Crashes.TrackError(exception);
}
En app kan eventuellt koppla egenskaper till en hanterad felrapport för att ge ytterligare kontext. Skicka egenskaperna som en ordlista med nyckel/värde-par (endast strängar) som du ser i exemplet nedan.
try {
// your code goes here.
} catch (Exception exception) {
var properties = new Dictionary<string, string>
{
{ "Category", "Music" },
{ "Wifi", "On"}
};
Crashes.TrackError(exception, properties);
}
Du kan också lägga till binära filer och textbilagor i en hanterad felrapport. Skicka de bifogade filerna som en matris med ErrorAttachmentLog
objekt som visas i exemplet nedan.
try {
// your code goes here.
} catch (Exception exception) {
var attachments = new ErrorAttachmentLog[]
{
ErrorAttachmentLog.AttachmentWithText("Hello world!", "hello.txt"),
ErrorAttachmentLog.AttachmentWithBinary(Encoding.UTF8.GetBytes("Fake image"), "fake_image.jpeg", "image/jpeg")
};
Crashes.TrackError(exception, attachments: attachments);
}