Hallo,
meine Xamarin Forms App läuft inzwischen auf vielen Handys und Tablets. Auch sehr stabil und zuverlässig. immer noch VS 2019.
Leider ist es bei Auftreten eines Fehlers so dass die App einfach abstürzt, und natürlich weiß man nicht wieso.
Ich habe jetzt ein sehr einfaches Error Handling eingebaut dass alle Fehler abfängt, in eine Datei schreibt und beim nächsten Start anzeigt.
Jetzt sehe ich zwar den Fehler und den Stack, aber leider nicht die Zeilennummer wo der Fehler aufgetreten ist. Auch wenn ich die PDB-Datei mitliefere oder einbette ist das so.
protected override void OnCreate(Bundle savedInstanceState)
{
...
System.AppDomain.CurrentDomain.UnhandledException += CurrentDomainOnUnhandledException;
System.Threading.Tasks.TaskScheduler.UnobservedTaskException += TaskSchedulerOnUnobservedTaskException;
...
}
private void CurrentDomainOnUnhandledException(object sender, System.UnhandledExceptionEventArgs e)
{
UnhandledException(sender, (System.Exception)e.ExceptionObject);
}
private void TaskSchedulerOnUnobservedTaskException(object sender, UnobservedTaskExceptionEventArgs e)
{
UnhandledException(sender, e.Exception);
}
private void UnhandledException(object sender, System.Exception ex)
{
string error = ex.Message;
if (ex.InnerException != null) error += "\r\n" + ex.InnerException.Message;
error += "\r\n\r\nStack :" + ex.StackTrace;
if (error.Length > 500) error = error.Substring(0, 500) + " ...";
File.WriteAllText(Path.Combine(FileSystem.AppDataDirectory, "Errorlog.txt"), error);
}
Wie kann ich die genaue Stelle herausbekommen wo der Fehler aufgetreten ist ?
Grüße Bernd
Workshop : Datenbanken mit ADO.NET
Xamarin Mobile App : Finderwille Einsatz App
Unternehmenssoftware : Quasar-3
Hallo,
aktiviere mal debug.mono.debug
mit
adb shell setprop debug.mono.debug 1
(aus Exception stack trace does not include line numbers in debug build when no debugger is attached)
Ich weiß allerdings nicht, wie du das bei deinen App-Benutzern automatisch aktiviert bekommst.
Leider funktioniert das nicht.
Merkwürdig ist dass das Debuggen funktioniert mit Anzeige des Source Code.
Die App läuft auf einem externen Device über USB oder WLAN angebunden. Ein Samsung Galaxy S6 Tablet.
Den Methodennamen in der der Fehler aufgetreten ist kennt das StackTrace, nur die Zeilennummer nicht.
Grüße Bernd
Workshop : Datenbanken mit ADO.NET
Xamarin Mobile App : Finderwille Einsatz App
Unternehmenssoftware : Quasar-3
Toll !
Jetzt hab ich einen Fehler der absolut unregelmäßig auftritt. Und ich hab keinen Plan wo.
Wie findet man den jetzt ?
Grüße Bernd
Workshop : Datenbanken mit ADO.NET
Xamarin Mobile App : Finderwille Einsatz App
Unternehmenssoftware : Quasar-3
Der Bug scheint jetzt in der UnhandledException
-Methode selbst zu sein: benutze dort mal try..catch
...
Danke !!!
Das wars, jetzt läuft die App bei mir wieder stabil. Bei einigen wenigen Leuten kommt es aber immer wieder zu Abstürzen.
Ich werde jetzt mal das Update mit dieser Fehlermeldung verteilen und schauen ob ich was finde.
Danke nochmal Grüße Bernd
Workshop : Datenbanken mit ADO.NET
Xamarin Mobile App : Finderwille Einsatz App
Unternehmenssoftware : Quasar-3
Leider zeigt mir das Visual Studio bei einem Fehler nie die Zeile an wo der Fehler auftritt. Das macht die Fehlersuche immer sehr schwierig.
Folgendes wird bei einem Fehler im Debug Mode angezeigt :
Fehlermeldung:
Die Anwendung befindet sich im Haltemodus
Ihre App wurde angehalten, aber es gibt keinen anzuzeigenden Code, da alle Threads externen Code ausgeführt haben (normalerweise System- oder Frameworkcode).
Details anzeigen :
Microsoft Visual Studio
EXCEPTION: Mono.Debugger.Soft.VMNotSuspendedException: The vm is not suspended.
bei Mono.Debugger.Soft.VirtualMachine.ErrorHandler(Object sender, ErrorHandlerEventArgs args) in C:\A\1\5\s\External\debugger-libs\Mono.Debugger.Soft\Mono.Debugger.Soft\VirtualMachine.cs:Zeile 367.
bei Mono.Debugger.Soft.Connection.SendReceive(CommandSet command_set, Int32 command, PacketWriter packet) in C:\A\1\5\s\External\debugger-libs\Mono.Debugger.Soft\Mono.Debugger.Soft\Connection.cs:Zeile 1806.
bei Mono.Debugger.Soft.VirtualMachine.Resume() in C:\A\1\5\s\External\debugger-libs\Mono.Debugger.Soft\Mono.Debugger.Soft\VirtualMachine.cs:Zeile 139.
bei Mono.Debugging.Soft.SoftDebuggerSession.HandleEventSet(EventSet es) in C:\A\1\5\s\External\debugger-libs\Mono.Debugging.Soft\SoftDebuggerSession.cs:Zeile 1871.
bei Mono.Debugging.Soft.SoftDebuggerSession.EventHandler() in C:\A\1\5\s\External\debugger-libs\Mono.Debugging.Soft\SoftDebuggerSession.cs:Zeile 1772.
OK
Wie kann man erreichen dass beim VS 2019 bei Xamarin Forms die Zeile angezeigt wird wo der Fehler auftritt ?
Grüße Bernd
Workshop : Datenbanken mit ADO.NET
Xamarin Mobile App : Finderwille Einsatz App
Unternehmenssoftware : Quasar-3
Das wird wohl laut Fehlermeldung wirklich daran liegen, daß der Fehler im Framework-Code liegt. Du müßtest daher die PDB-Dateien dafür herunterladen (lassen), s. SymbolSource: Visual Studio bzw. mit Bildern Source Code Debugging [with BuildIt Libraries].
Der Fehler war in meinem C# Code.
Diese Anzeige bekomme ich bei jedem Fehler.
Breakpoint setzen und Debugging funktioniert.
Grüße Bernd
Workshop : Datenbanken mit ADO.NET
Xamarin Mobile App : Finderwille Einsatz App
Unternehmenssoftware : Quasar-3
Hast du das neueste VS 2019-Update 16.11.x? Vor 2 Jahren gab es schon diesen Fehler und ein Fix dafür wurde in Version 16.8 eingebaut: Error debuging Xamarin.Forms app
Ansonsten mußt du dich mal selber an Microsoft wenden ("Send feedback" Button oben rechts im VS).
Ich habe Version 16.11.21, also die aktuellste Version.
Grüße Bernd
Workshop : Datenbanken mit ADO.NET
Xamarin Mobile App : Finderwille Einsatz App
Unternehmenssoftware : Quasar-3
Hab im Android Projekt in der csproj-Datei den Eintrag
<DebugType>portable</DebugType>
geändert in
<DebugType>full</DebugType>
Jetzt wird die Stelle angezeigt wo der Fehler auftritt.
Schade dass das nicht die Standard Einstellung ist und auch nirgendwo dokumentiert ist.
Grüße Bernd
Workshop : Datenbanken mit ADO.NET
Xamarin Mobile App : Finderwille Einsatz App
Unternehmenssoftware : Quasar-3
OK, darauf wäre ich nicht gekommen.
Aber ich habe mal recherchiert: DebugType = full
ist eigentlich seit Xamarin.Android 11.2 veraltet (und es sollte eine Warnung ausgegeben werden): Xamarin.Android 11.2 release notes: Deprecation of DebugType full and pdbonly
Welche Xamarin.Android Version verwendest du denn?
Ich benutze Android.Forms Version 5.0.0.2012+671 vom 2. Februar 2021.
Wenn es funktioniert ist es mir egal ob es deprecated ist.
Grüße Bernd
Workshop : Datenbanken mit ADO.NET
Xamarin Mobile App : Finderwille Einsatz App
Unternehmenssoftware : Quasar-3