Notitie
Voor toegang tot deze pagina is autorisatie vereist. U kunt proberen u aan te melden of de directory te wijzigen.
Voor toegang tot deze pagina is autorisatie vereist. U kunt proberen de mappen te wijzigen.
Belangrijk
Visual Studio App Center is op 31 maart 2025 buiten gebruik gesteld, met uitzondering van de functies analyse en diagnose, die tot 30 juni 2026 nog steeds worden ondersteund. Meer informatie.
App Center-crashes genereren automatisch een crashlogboek telkens wanneer uw app vastloopt. Het logboek wordt eerst naar de opslag van het apparaat geschreven en wanneer de gebruiker de app opnieuw start, wordt het crashrapport verzonden naar App Center. Het verzamelen van crashes werkt voor zowel bèta-apps als de apps die zijn verzonden naar de Windows Store. Crashlogboeken bevatten waardevolle informatie voor u om de crashes op te lossen.
De App Center SDK verzamelt alleen crashes die worden veroorzaakt door niet-verwerkte .NET-uitzonderingen. Er worden geen systeemeigen crashes verzameld, bijvoorbeeld bij het gebruik van C of C++. Als u echter een app met C++-crashes hebt, kunt u deze uploaden naar App Center via de API voor het uploaden van crashes.
Volg de sectie Aan de slag als u de SDK nog niet hebt ingesteld in uw toepassing.
Opmerking
Momenteel bieden we geen ondersteuning voor detectie van waarschuwingen met weinig geheugen op het UWP-/WinUI-platform.
De module crashes toevoegen
Pakketbeheerconsole
- Open de console in Visual Studio. Hiervoor kiest u Tools>NuGet Package Manager>Package Manager Package Manager Console.
- Typ de volgende opdrachten:
Install-Package Microsoft.AppCenter.Crashes
Using-statements toevoegen
Voeg de juiste naamruimten toe voordat u onze API's gebruikt.
using Microsoft.AppCenter.Crashes;
De Start() methode wijzigen
Voeg de volgende aanroep toe aan de constructor van uw toepassing of bewerk deze om de module crashes op te nemen:
AppCenter.Start("{Your App Secret}", typeof(Crashes));
Een testcrash genereren
App Center-crashes biedt u een API om een testcrash te genereren voor eenvoudige tests van de SDK. Met deze API wordt gecontroleerd op foutopsporing versus releaseconfiguraties. U kunt deze dus alleen gebruiken bij foutopsporing, omdat dit niet werkt voor release-apps.
Crashes.GenerateTestCrash();
Meer informatie over een eerdere crash
App Center Crashes heeft twee API's die u meer informatie geven voor het geval uw app is vastgelopen.
Is de app in de vorige sessie vastgelopen?
U kunt op elk gewenst moment na het starten van de SDK controleren of de app is vastgelopen tijdens de vorige start:
bool didAppCrash = await Crashes.HasCrashedInLastSessionAsync();
Dit is handig als u het gedrag of de gebruikersinterface van uw app wilt aanpassen nadat er een crash is opgetreden. Sommige ontwikkelaars kiezen ervoor om aanvullende gebruikersinterface weer te geven om zich te verontschuldigen bij hun gebruikers of willen een manier om contact op te nemen nadat er een crash is opgetreden.
Opmerking
Deze methode mag alleen worden gebruikt nadat Crashes deze is gestart. Deze wordt altijd vóór het begin geretourneerd false .
Details over de laatste crash
Als uw app eerder is gecrasht, kunt u meer informatie krijgen over de laatste crash.
ErrorReport crashReport = await Crashes.GetLastSessionCrashReportAsync();
Opmerking
Deze methode mag alleen worden gebruikt nadat Crashes deze is gestart. Deze wordt altijd vóór het begin geretourneerd null .
Er zijn talloze gebruiksvoorbeelden voor deze API, en de meest voorkomende is dat mensen deze API gebruiken om hun aangepaste Crashes-gedelegeerde of luisteraar te implementeren.
Pas de manier waarop u App Center Crashes gebruikt aan
App Center Crashes biedt callbacks voor ontwikkelaars om extra acties uit te voeren voordat en tijdens het verzenden van crashlogboeken naar App Center.
Opmerking
Stel de callback in voordat u aanroept AppCenter.Start(), omdat App Center begint met het verwerken van crashes direct na het starten.
Moet de crash worden verwerkt?
Stel deze callback in als u wilt bepalen of een bepaalde crash moet worden verwerkt of niet. Er kan bijvoorbeeld een crash op systeemniveau zijn die u wilt negeren en dat u niet naar App Center wilt verzenden.
Crashes.ShouldProcessErrorReport = (ErrorReport report) =>
{
// Check the report in here and return true or false depending on the ErrorReport.
return true;
};
Vraag om toestemming van de gebruiker om een crashlogboek te verzenden
Als gebruikersprivacy belangrijk voor u is, wilt u mogelijk bevestiging van de gebruiker krijgen voordat u een crashrapport naar App Center verzendt. De SDK biedt een callback die App Center Crashes instrueert om te wachten op bevestiging van de gebruiker voordat crashrapporten worden verzonden.
Als u hiervoor kiest, bent u verantwoordelijk voor het verkrijgen van de bevestiging van de gebruiker, bijvoorbeeld via een dialoogvenster met een van de volgende opties: Altijd verzenden, verzenden en niet verzenden. Op basis van de invoer geeft u App Center Crashes instructies over wat te doen en wordt de crash vervolgens dienovereenkomstig afgehandeld.
Opmerking
In de SDK wordt hiervoor geen dialoogvenster weergegeven. De app moet een eigen gebruikersinterface opgeven om toestemming van de gebruiker te vragen.
Opmerking
De app moet NotifyUserConfirmation niet expliciet aanroepen als er geen dialoogvenster voor gebruikersbevestiging wordt geïmplementeerd; de Crashes-module stuurt impliciet logboeken voor u.
De volgende callback laat zien hoe de SDK moet wachten op bevestiging van de gebruiker voordat crashes worden verzonden:
Crashes.ShouldAwaitUserConfirmation = () =>
{
// Build your own UI to ask for user consent here. The 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;
};
Als u true retourneert in de callback hierboven, moet uw app de gebruikersmachtiging verkrijgen (met behulp van uw eigen code) en de SDK berichten met het resultaat via de volgende 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);
Informatie ophalen over de verzendstatus voor een crashlogboek
Soms wilt u weten wat de status van de crash van uw app is. Een veelvoorkomend gebruiksvoorbeeld is dat u de gebruikersinterface wilt weergeven die de gebruikers vertelt dat uw app een crashrapport indient, of, als uw app snel vastloopt na de start, wilt u het gedrag van de app aanpassen om ervoor te zorgen dat de crashlogboeken kunnen worden verzonden. App Center Crashes biedt drie verschillende callbacks die u in uw app kunt gebruiken om te worden geïnformeerd over wat er gebeurt.
De volgende callback wordt aangeroepen voordat de SDK een crashlogboek verzendt
Crashes.SendingErrorReport += (sender, e) =>
{
// Your code, e.g. to present a custom UI.
};
Als er netwerkproblemen of een storing op het eindpunt zijn en u de app opnieuw start, SendingErrorReport wordt deze opnieuw geactiveerd nadat het proces opnieuw is opgestart.
De volgende callback wordt aangeroepen nadat de SDK succesvol een crashrapport heeft verzonden.
Crashes.SentErrorReport += (sender, e) =>
{
// Your code, e.g. to hide the custom UI.
};
De volgende callback wordt aangeroepen als de SDK een crashlogboek niet heeft verzonden
Crashes.FailedToSendErrorReport += (sender, e) =>
{
// Your code goes here.
};
Het ontvangen FailedToSendErrorReport betekent dat er een niet-herstelbare fout is opgetreden, zoals een 4xx-code .
401 betekent bijvoorbeeld dat het appSecret verkeerd is.
Deze callback wordt niet geactiveerd als het een netwerkprobleem is. In dit geval blijft de SDK pogingen herhalen (en worden die pogingen ook gepauzeerd terwijl de netwerkverbinding verstoord is).
Bijlagen toevoegen aan een crashrapport
U kunt binaire en tekstbijlagen toevoegen aan een crashrapport. De SDK verzendt ze samen met de crash, zodat u ze kunt zien in de App Center-portal. De volgende callback wordt aangeroepen vlak voordat de opgeslagen crash van eerdere applicatiestarts wordt verstuurd. Deze wordt niet aangeroepen wanneer de crash plaatsvindt. Zorg ervoor dat het bijlagebestand niet de naam minidump.dmp heeft, aangezien die naam gereserveerd is voor minidump-bestanden. Hier volgt een voorbeeld van het koppelen van tekst en een afbeelding aan een crash:
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")
};
};
Opmerking
De groottelimiet is momenteel 7 MB. Als u probeert een grotere bijlage te verzenden, zal er een fout optreden.
De App Center-functie voor crashes tijdens uitvoering in- of uitschakelen
U kunt App Center-crashes tijdens de uitvoering van de applicatie in- en uitschakelen. Als u deze optie uitschakelt, zal de SDK geen crashrapportage uitvoeren voor de app.
Crashes.SetEnabledAsync(false);
Om App Center Crashes opnieuw in te schakelen, gebruikt u dezelfde API, maar geeft u true door als parameter.
Crashes.SetEnabledAsync(true);
U hoeft deze aanroep niet te wachten om andere API-aanroepen (zoals IsEnabledAsync) consistent te maken.
De status blijft behouden in de opslag van het apparaat tijdens het starten van de toepassing.
Controleren of App Center Crashes is ingeschakeld
U kunt ook controleren of App Center-crashes is ingeschakeld of niet:
bool isEnabled = await Crashes.IsEnabledAsync();
Afgehandelde fouten
Met App Center kunt u ook fouten bijhouden met behulp van afgehandelde uitzonderingen. Gebruik hiervoor de TrackError methode:
try {
// your code goes here.
} catch (Exception exception) {
Crashes.TrackError(exception);
}
Een app kan desgewenst eigenschappen toevoegen aan een afgehandeld foutenrapport om verdere context te bieden. Geef de eigenschappen door als een woordenlijst van sleutel-waardeparen (alleen tekenreeksen) zoals weergegeven in het onderstaande voorbeeld.
try {
// your code goes here.
} catch (Exception exception) {
var properties = new Dictionary<string, string>
{
{ "Category", "Music" },
{ "Wifi", "On"}
};
Crashes.TrackError(exception, properties);
}
U kunt eventueel binaire en tekstbijlagen toevoegen aan een afgehandeld foutenrapport. Geef de bijlagen door als een matrix van ErrorAttachmentLog objecten, zoals wordt weergegeven in het onderstaande voorbeeld.
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);
}