AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Cross-Platform-Entwicklung MacOS-64: Exceptions mittels Map-Datei ausgeben
Thema durchsuchen
Ansicht
Themen-Optionen

MacOS-64: Exceptions mittels Map-Datei ausgeben

Ein Thema von philipp.hofmann · begonnen am 9. Dez 2019 · letzter Beitrag vom 20. Dez 2019
Antwort Antwort
philipp.hofmann

Registriert seit: 21. Mär 2012
Ort: Hannover
890 Beiträge
 
Delphi 10.4 Sydney
 
#1

MacOS-64: Exceptions mittels Map-Datei ausgeben

  Alt 9. Dez 2019, 10:53
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:
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;
Die Abfrage auf MACOS32 erfolgt hier, weil PC_MAPPED_EXCEPTIONS unter MACOS64 nicht definiert ist.
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
  Mit Zitat antworten Zitat
philipp.hofmann

Registriert seit: 21. Mär 2012
Ort: Hannover
890 Beiträge
 
Delphi 10.4 Sydney
 
#2

AW: MacOS-64: Exceptions mittels Map-Datei ausgeben

  Alt 9. Dez 2019, 13:51
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).
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu

Registriert seit: 11. Okt 2003
Ort: Elbflorenz
44.063 Beiträge
 
Delphi 12 Athens
 
#3

AW: MacOS-64: Exceptions mittels Map-Datei ausgeben

  Alt 9. Dez 2019, 17:15
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
Neuste Erkenntnis:
Seit Pos einen dritten Parameter hat,
wird PoSex im Delphi viel seltener praktiziert.
  Mit Zitat antworten Zitat
philipp.hofmann

Registriert seit: 21. Mär 2012
Ort: Hannover
890 Beiträge
 
Delphi 10.4 Sydney
 
#4

AW: MacOS-64: Exceptions mittels Map-Datei ausgeben

  Alt 9. Dez 2019, 18:59
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.
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu

Registriert seit: 11. Okt 2003
Ort: Elbflorenz
44.063 Beiträge
 
Delphi 12 Athens
 
#5

AW: MacOS-64: Exceptions mittels Map-Datei ausgeben

  Alt 15. Dez 2019, 15:12
Joar, als 32 Bit damals urplötzlich unvorhergesehn schlagartig ausstarb, da musste Emba das halt schnell umbauen.
(auch wenn schnell fast schon bissl zu lange dauerte)
Neuste Erkenntnis:
Seit Pos einen dritten Parameter hat,
wird PoSex im Delphi viel seltener praktiziert.
  Mit Zitat antworten Zitat
philipp.hofmann

Registriert seit: 21. Mär 2012
Ort: Hannover
890 Beiträge
 
Delphi 10.4 Sydney
 
#6

AW: MacOS-64: Exceptions mittels Map-Datei ausgeben

  Alt 20. Dez 2019, 16:35
Antwort von Marco Cantu:
Zitat:
As per the comment, macOS 64-bit compiler uses LLVM architecture and a different exceptions handling code. We can consider offering ways to analyze the exceptions stack for LLVM platforms, but that's a separate request from this one.
Na dann hoffen wir mal, dass sich hier noch etwas bewegt, das passende Feature-Request: RSP-27297 - MacOS-64: way to print out exception stack trace
  Mit Zitat antworten Zitat
Antwort Antwort


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 18:12 Uhr.
Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz