Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   FreePascal (https://www.delphipraxis.net/74-freepascal/)
-   -   Was ist eine Exception : 'external: SIGABRT' ? (https://www.delphipraxis.net/180460-ist-eine-exception-external-sigabrt.html)

iphi 21. Mai 2014 17:12

Was ist eine Exception : 'external: SIGABRT' ?
 
Mein Lazarus/fpc Programm meldet unter Linux ... raised exception class : 'external: SIGABRT' .
Was ist das für eine Exception?
Gibt es irgendwo eine Liste aller Exceptions?
Hab Google befragt, war aber wenig aufschlussreich.

himitsu 21. Mai 2014 17:18

AW: Was ist eine Exception : 'external: SIGABRT' ?
 
Sicher?

Google nannte mir
Zitat:

SIGABRT : abnormal termination condition, as is e.g. initiated by abort()
Also irgendwas hat das Programm abgeschossen.

Bei Google suchenSIGABRT /
Delphi-Quellcode:
lazarus SIGABRT

PS: Delphi-Referenz durchsuchenAbort löst eine stille Exception aus.
Und Exceptions, welche nicht abgefangen werden, also hoch bis zum Windows durchrauschen, beenden das Programm.


Aller Exceptions?
Nö. (Diese Liste wäre ja fast endlos, vorallem wenn man da auch noch alle möglichen Fremdkomponenten und sonstige genutzte DLLs mit auflisten wöllte)

BUG 21. Mai 2014 18:22

AW: Was ist eine Exception : 'external: SIGABRT' ?
 
Das SIGABRT muss noch nicht mal aus deinem Programm kommen, sondern ist ein Bei Google suchenSignal, kann also an dein Programm gesendet werden.

Wahrscheinlicher ist aber, das das Signal von deinem Programm gesendet wurde.
Mit dem gdb sollte man herausfinden können, wo das Signal auftritt. Laufen lassen (r) und wenn es beim Signal stoppt: den Backtrace ausgeben (bt).

JamesTKirk 22. Mai 2014 06:24

AW: Was ist eine Exception : 'external: SIGABRT' ?
 
Unter Linux (oder Unix im allgemeinen) werden statt Exceptions wie in Windows sogenannte Signale verwendet. Lazarus und die FPC RTL repräsentieren diese jedoch als Exceptions, wenn sie auftreten. Je nachdem um was für ein Signal es sich handelt kannst du in Lazarus mit Halt an die Codestelle springen an der es aufgetreten ist.

Zitat:

Zitat von BUG (Beitrag 1259687)
Mit dem gdb sollte man herausfinden können, wo das Signal auftritt. Laufen lassen (r) und wenn es beim Signal stoppt: den Backtrace ausgeben (bt).

Lazarus verwendet intern GDB als Debugger, als muss man gar nicht erst GDB von Hand ausführen, sondern kann einfach Lazarus dafür verwenden. @iphi: nach Halt kannst du mit Strg+Alt+S den Aufrufstack einblenden lassen.

Gruß,
Sven


Alle Zeitangaben in WEZ +1. Es ist jetzt 17:20 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