Ich würde zwei Dinge angehen:
a) Ein filebasiertes Logging einbauen, damit man auch im Release-Modus (z.B. auch beim Kunden) sieht, wo die Anwendung was macht. Ist relativ einfach umsetzbar, ich habe auch einen Button in der App, wo per
Indy-Mail die letzten 20 Logs als Mail geschickt werden können.
b) Einen
Exception-Handler einbauen, der alle in der Anwendung geworfenen Exceptions fängt. Ich persönlich habe seit iOS 13.x das Gefühl, das ganz viele
Exception geworfen werden, für die man nichts kann, die man aber auch getrost ignorieren kann.
Code:
procedure xxx.FormCreate(Sender: TObject);
...
Application.OnException := TgoExceptionReporter.ExceptionHandler;
TMessageManager.DefaultManager.SubscribeToMessage(TgoExceptionReportMessage, HandleExceptionReport);
procedure xxx.HandleExceptionReport(const Sender: TObject; const M: TMessage);
var Report: IgoExceptionReport;
begin
if (finishedFormActivated and formDestroyReached) then
exit;
Assert(M is TgoExceptionReportMessage);
Report := TgoExceptionReportMessage(M).Report;
if (pos('IOAccelResourceGetResidentDataSize',report.Report)>0) then
exit; //ignored
if (sender<>nil) then
mlog.error('
Exception from '+sender.ToString+' (showInfo:'+TStringUtils.BoolToStr(doShowInfo)+'): '+#13#10+report.report)
else
mlog.error('
Exception (showInfo:'+TStringUtils.BoolToStr(doShowInfo)+'): '+#13#10+report.report);
if ((finishedFormActivated=false) or (cbConfigAutomatedSendLogs.isChecked)) then
btDownloadSendLogsClick(Sender);
end;