Poznámka:
Přístup k této stránce vyžaduje autorizaci. Můžete se zkusit přihlásit nebo změnit adresáře.
Přístup k této stránce vyžaduje autorizaci. Můžete zkusit změnit adresáře.
Důležité
Visual Studio App Center bylo vyřazeno 31. března 2025 s výjimkou funkcí Analýzy a diagnostiky, které se budou dál podporovat až do 30. června 2026. Další informace.
Pokaždé, když vaše aplikace spadne, funkce App Center Crashes automaticky vygeneruje záznam pádu. Protokol se nejprve zapíše do úložiště zařízení a když uživatel aplikaci znovu spustí, zpráva o chybovém ukončení se odešle do App Center.
Sada App Center SDK shromažďuje pouze chyby způsobené neošetřenými výjimkami .NET. Neshromažďuje nativní chyby, například při použití jazyka C nebo C++. Pokud ale máte aplikaci s pády C++, můžete je nahrát do App Center prostřednictvím rozhraní API pro nahrávání pádů.
Pokud jste ještě nenastavili sadu SDK ve své aplikaci, postupujte podle pokynů WPF/WinForms Začínáme .
Neošetřené výjimky v aplikacích WinForms
Poznámka:
Tato část a následující dílčí oddíly platí jenom pro WinForms. Pokud integrujete sadu SDK ve WPF, můžete tuto část přeskočit.
Ve výchozím nastavení neošetřená výjimka v aplikaci WinForms nezpůsobí pád (aplikace neskončí), pokud není připojen debugger.
Místo toho windows uživateli zobrazí dialogové okno, ve které se má pokračovat nebo ukončit spuštění aplikace. Sada App Center SDK proto nemůže tyto výjimky automaticky zachytit (i když uživatel klikne na tlačítko Ukončit ).
Havárie se shromažďují v App Center pouze v případě, že způsobí automatické ukončení aplikace. App Center podporuje pouze jedno chybové ukončení na relaci.
Neošetřené výjimky ve WinForms můžete hlásit dvěma způsoby. Aplikaci je možné nakonfigurovat tak, aby se chybově ukončila při neošetřených výjimkách nebo pokračovala, ale hlásit neošetřené výjimky jako běhové chyby.
Nakonfigurujte aplikaci tak, aby se ukončila při chybovém ukončení.
Toto je jediný způsob, jak ohlásit neošetřenou výjimku jako chybu v App Center, ukončit aplikaci u neošetřených výjimek.
Uděláte to tak, že před inicializací sady SDK zavoláte metodu Windows:
Application.SetUnhandledExceptionMode(UnhandledExceptionMode.ThrowException);
AppCenter.Start(...);
Pokud tato možnost není v aplikaci přijatelná, můžete neošetřenou výjimku hlásit jako chybu za běhu (popsanou níže).
Nahlásit neošetřenou výjimku jako chybu při běhu programu
Pokud vaše aplikace musí běžet i po neošetřené výjimce, nemůžete ji nahlásit jako chybu v App Center, ale můžete ji ohlásit jako chybu.
K tomu můžete použít následující ukázku kódu:
Application.ThreadException += (sender, args) =>
{
Crashes.TrackError(args.Exception);
};
AppCenter.Start(...);
Poznámka:
Při připojení ladicího programu způsobí neošetřené výjimky ukončení aplikace (chybové ukončení), není-li připojena obslužná rutina k Application.ThreadException.
Vyvolat testovací pád
App Center Crashes poskytuje rozhraní API pro vygenerování zkušebního pádu pro snadné testování SDK. Toto rozhraní API kontroluje konfigurace ladění a verzí. Proto ho můžete použít jenom při ladění, protože nebude fungovat pro aplikace vydaných verzí.
Crashes.GenerateTestCrash();
Získejte více informací o předchozím pádu
App Center crashes má dvě rozhraní API, která poskytují další informace pro případ, že dojde k chybovému ukončení vaší aplikace.
Došlo k pádu aplikace v předchozí relaci?
Kdykoli po spuštění sady SDK můžete zkontrolovat, zda aplikace při předchozím spuštění havarovala.
bool didAppCrash = await Crashes.HasCrashedInLastSessionAsync();
To se hodí v případě, že chcete upravit chování nebo uživatelské rozhraní aplikace po havárii. Někteří vývojáři se rozhodnou zobrazit další uživatelské rozhraní, aby se omluvili svým uživatelům, nebo chtějí najít způsob, jak se po havárii spojit.
Poznámka:
Tato metoda se musí použít pouze po spuštění Crashes, vždy se vrátí false před zahájením.
Podrobnosti o posledním pádu
Pokud se vaše aplikace dříve chybově ukončila, můžete získat podrobnosti o posledním chybovém ukončení.
ErrorReport crashReport = await Crashes.GetLastSessionCrashReportAsync();
Poznámka:
Tato metoda se musí použít pouze po spuštění Crashes, vždy se vrátí null před zahájením.
Pro toto rozhraní API existuje mnoho případů použití, nejběžnější je, že lidé, kteří toto rozhraní API volají, a implementují vlastního delegáta nebo naslouchacího procesu chybových ukončení.
Přizpůsobit používání funkce havárií v App Center
Služba App Center Crashes poskytuje zpětná volání, která umožňují vývojářům provádět další akce před odesláním protokolů o pádech do App Center.
Poznámka:
Před volánímAppCenter.Start()nastavte zpětné volání, protože App Center začne zpracovávat chybové ukončení hned po spuštění.
Měla by se havárie zpracovat?
Tento callback nastavte, pokud se chcete rozhodnout, zda se má konkrétní chyba zpracovat či nikoliv. Může se například stát, že dojde k chybovému ukončení na úrovni systému, které byste chtěli ignorovat a že nechcete posílat do App Center.
Crashes.ShouldProcessErrorReport = (ErrorReport report) =>
{
// Check the report in here and return true or false depending on the ErrorReport.
return true;
};
Požádejte uživatele o souhlas s odesláním protokolu selhání.
Pokud je pro vás ochrana osobních údajů důležitá, můžete před odesláním zprávy o chybovém ukončení do App Center získat potvrzení uživatele. SDK poskytuje zpětné volání, které instruuje App Center Crashes, aby před odesláním jakýchkoli zpráv o chybách čekal na potvrzení uživatele.
Pokud jste se rozhodli to udělat, zodpovídáte za získání potvrzení uživatele, například prostřednictvím dialogového okna s jednou z následujících možností: Vždy odeslat, Odeslat a Neodesílat. Na základě vkladu dat řeknete aplikaci App Center, jak řešit pád aplikace, a ten pak bude následně řešen odpovídajícím způsobem.
Poznámka:
Sada SDK pro toto dialogové okno nezobrazuje, aplikace musí poskytnout vlastní uživatelské rozhraní, aby požádala o souhlas uživatele.
Poznámka:
Aplikace by neměla volat NotifyUserConfirmation explicitně, pokud neimplementuje dialogové okno potvrzení uživatele. Modul Crashes bude zpracovávat odesílání protokolů za vás implicitně.
Následující zpětné volání ukazuje, jak sadě SDK sdělit, aby před odesláním chybových ukončení čekala na potvrzení uživatele:
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;
};
Pokud se vrátíte true ve výše uvedeném zpětném volání, vaše aplikace musí získat (pomocí vlastního kódu) oprávnění uživatele a odeslat zprávu do SDK s výsledkem s použitím rozhraní API níže.
// 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);
Získejte informace o stavu odesílání protokolu o selhání
Někdy chcete zjistit stav pádu aplikace. Běžným případem použití je, že můžete chtít zobrazit uživatelské rozhraní, které uživatelům říká, že aplikace odesílá zprávu o chybovém ukončení, nebo pokud se aplikace po spuštění rychle chybově ukončí, chcete upravit chování aplikace, aby se zajistilo odeslání protokolů chybových ukončení. Centrum crashů aplikace poskytuje tři různá zpětná volání, která můžete v aplikaci použít, abyste byli informováni o situaci.
Před odesláním chybového záznamu SDK se vyvolá následující zpětné volání.
Crashes.SendingErrorReport += (sender, e) =>
{
// Your code, e.g. to present a custom UI.
};
V případě problémů se sítí nebo výpadkem koncového bodu se po restartování procesu znovu aktivuje aplikace SendingErrorReport .
Následující zpětné volání se vyvolá po úspěšném odeslání protokolu chybových ukončení sady SDK.
Crashes.SentErrorReport += (sender, e) =>
{
// Your code, e.g. to hide the custom UI.
};
Pokud sadě SDK nebude úspěšné odeslat protokol pádu, následující zpětné volání se vyvolá.
Crashes.FailedToSendErrorReport += (sender, e) =>
{
// Your code goes here.
};
Příjem FailedToSendErrorReport znamená, že došlo k neobnovitelné chybě, jako je kód 4xx . Například 401 znamená, že appSecret je nesprávná.
Toto zpětné volání se neaktivuje, pokud se jedná o problém se sítí. V tomto případě sada SDK pokračuje v opakování (a zároveň pozastaví opakování, zatímco síťové připojení je mimo provoz).
Přidání příloh do hlášení o pádu
Do zprávy o chybovém ukončení můžete přidat binární a textové přílohy. SDK je odešle spolu s pádem aplikace, abyste je mohli vidět na portálu App Center. Před odesláním uloženého chybového ukončení z předchozího spuštění aplikace se vyvolá následující zpětné volání. Když dojde k chybovému ukončení, nevyvolá se. Ujistěte se, že soubor přílohy není pojmenovaný minidump.dmp , protože tento název je vyhrazený pro soubory minidump. Tady je příklad, jak připojit text a obrázek k pádu aplikace:
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")
};
};
Poznámka:
Limit velikosti je aktuálně 7 MB. Při pokusu o odeslání větší přílohy dojde k chybě.
Povolení nebo zakázání pádů App Center při běhu
Za běhu můžete povolit a zakázat pády aplikace App Center. Pokud ji zakážete, sada SDK pro aplikaci neudělá žádné zprávy o chybách.
Crashes.SetEnabledAsync(false);
Pokud chcete znovu povolit pády aplikace App Center, použijte stejné rozhraní API, ale předejte true jako parametr.
Crashes.SetEnabledAsync(true);
Toto volání nemusíte čekat, pokud chcete provádět další volání rozhraní API (například IsEnabledAsync) konzistentně.
Stav se zachová v úložišti zařízení napříč spuštěním aplikace.
Kontrola, jestli je povolené chybové ukončení App Center
Můžete také zkontrolovat, jestli je funkce App Center pro sledování pádů aplikací povolená, nebo ne:
bool isEnabled = await Crashes.IsEnabledAsync();
Vyřešené chyby
App Center také umožňuje sledovat chyby pomocí zpracovaných výjimek. K tomu použijte metodu TrackError :
try {
// your code goes here.
} catch (Exception exception) {
Crashes.TrackError(exception);
}
Aplikace může volitelně připojit vlastnosti k zpracovávané zprávě o chybách a poskytnout tak další kontext. Předejte vlastnosti jako slovník párů klíč/hodnota (pouze řetězce), jak je znázorněno v následujícím příkladu.
try {
// your code goes here.
} catch (Exception exception) {
var properties = new Dictionary<string, string>
{
{ "Category", "Music" },
{ "Wifi", "On"}
};
Crashes.TrackError(exception, properties);
}
Do zpracovávané zprávy o chybách můžete také volitelně přidat binární a textové přílohy. Předejte přílohy jako pole ErrorAttachmentLog objektů, jak je znázorněno v následujícím příkladu.
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);
}