![]() |
MacOS-64: Exceptions mittels Map-Datei ausgeben
Hi,
ich habe aktuell das Problem, dass meine Anwendung im Modus "Normal" kompiliert, tadellos funktioniert und sobald ich sie mit Entwickler-ID kompiliere, kommen Fehlermeldungen wie "Terminating app due to uncaught exception 'NSInvalidArgumentException', reason: '*** -[__NSDictionaryM setObject:forKey:]: key cannot be nil'". Ich bekomme da keinen richtigen Griff dran, wie ich das Problem einkreise. Meine Logs geben mir auch nach Erweiterung keinen Aufschluss. Jetzt würde ich gerne wieder die Exceptions über die Map-Datei schöner ausgeben können, also auch dort, wo ich wirklich in der Anwendung die Exception sehe. Ich scheitere aktuell daran, dass meine dafür unter MacOS-32 genutzte Klasse bei der Initialisierung folgenden Code verwendet:
Delphi-Quellcode:
Die Abfrage auf MACOS32 erfolgt hier, weil PC_MAPPED_EXCEPTIONS unter MACOS64 nicht definiert ist.
procedure InstallExceptionHandler;
{$IFDEF MACOS32} var U: TUnwinder; {$ENDIF} begin {$IFDEF MACOS32} GetUnwinder(U); Assert(Assigned(U.RaiseException)); PrevRaiseException := U.RaiseException; U.RaiseException := RaiseException; SetUnwinder(U); mapDict:=nil; {$ENDIF} end; procedure UnInstallExceptionHandler; {$IFDEF MACOS32} var U: TUnwinder; {$ENDIF} begin {$IFDEF MACOS32} GetUnwinder(U); U.RaiseException := PrevRaiseException; SetUnwinder(U); {$ENDIF} end; Folgende Fragen: a) Hat jemand eine Idee, wie man einer solchen Exception auf den Grund geht, die abhängig ist von der genutzten Kompiler-Konfiguration Normal vs. Entwickler-ID? b) Kennt jemand einen Grund, warum PC_MAPPED_EXCEPTIONS für MACOS64 nicht definiert ist? c) Kann ich {$DEFINE PC_MAPPED_EXCEPTIONS} irgendwo eintragen, damit das Feature zurückkommt (und falls ja, wo)? Grüße, Philipp |
AW: MacOS-64: Exceptions mittels Map-Datei ausgeben
P.S.: Die erste Exception unter MacOS-64 konnte ich schon mal so beheben, diese gab es aber auch im Normal-Modus: Wenn man in einem TMS-FMX-Grid mehrfach die addButton-Funktionalität nutzt und diese Buttons dann auch klickt, crasht es unter MacOS-64, ist an TMS-Software gemeldet. Die Buttons habe ich mir Bitmaps ersetzt und schon geht es. Es ist nur leider nicht mein einziges Problem. An dem Beispiel sieht man aber, wie tricky die Fehlersuche ist, wenn es in den Tiefen solche OS-Unterschiede gibt und die Exception-Ausgabe nicht funktioniert. Ich werde mir daher überlegen müssen, ob ich nicht auch teilweise wieder in MacOS-32 testen möchte (was dann nur gegen Catalina nicht geht).
|
AW: MacOS-64: Exceptions mittels Map-Datei ausgeben
Entscheiden kannst du nichts.
Es hängt davon ab, wie das jeweilige OS die Exceptions verwaltet.
Code:
STACK_BASED_EXCEPTIONS Registration Records on Stack Win32, Java
TABLE_BASED_EXCEPTIONS Table for all Funktions Win64 https://docs.microsoft.com/en-us/cpp/build/exception-handling-x64 PC_MAPPED_EXCEPTIONS Program Counter Mapped Exceptions Mac, Linux http://docwiki.embarcadero.com/RADStudio/Rio/en/PC-Mapped_Exceptions Sorry, bin leider noch mit Windows beschäftigt ... Linux, Android vielleicht nächstes Jahr und I-Produkte hab ich nicht |
AW: MacOS-64: Exceptions mittels Map-Datei ausgeben
Ich habe es mal als Fehler eingestellt (RSP-27172). In der Liste steht ja MacOS, nur dass das Exception-Handling für MacOS-32 aktuell anders ist als für MacOS-64 und in der Liste für Rio steht nur generell MacOS, so dass ich schätze, dass dies so nicht sein sollte.
|
AW: MacOS-64: Exceptions mittels Map-Datei ausgeben
Joar, als 32 Bit damals urplötzlich unvorhergesehn schlagartig ausstarb, da musste Emba das halt schnell umbauen. :stupid:
(auch wenn schnell fast schon bissl zu lange dauerte) |
AW: MacOS-64: Exceptions mittels Map-Datei ausgeben
Antwort von Marco Cantu:
Zitat:
|
Alle Zeitangaben in WEZ +1. Es ist jetzt 12:49 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz