Am Freitag, 23. September 2005 14:37 schrieb Erik Wasser: > Stacktraces werden normalerweise vom Compiler mitgeführt, deshalb meine > Frage nach den entsprechenden Compile-Optionen. Bin kein Programmierer mehr und der Meinung, daß Stacktraces vom Betriebssystem beim Eintreffen bestimmter Signale (Speichersegment-Verletzung, unerlaubte Opcodes, Adressierungsfehler - also alles Sachen, die auf systematische Fehler hinweisen und deshalb untersucht werden sollten) erzeugt werden. Dabei wird das gesamte Prozeßabbild, d.h. Code (Text) und initialisierte und allokierte Datenbereiche des Prozesses (ausgeführtes Binary und Bibliotheken) auf Platte geschrieben (ggf. von ALLEN Threads). Da das i.d.R. 'ne Menge Platz braucht, ist das normalerweise ausgeschalten. Der Compiler wird allerdings die Symboltabellen, die die Zuordnung Speicherplatz <-> Symbolnamen ermöglichen, entfernen, wenn man nicht mit der Option "-g" übersetzt hat. Debugging (von core-Dumps) ist dann immer noch möglich, aber schwierig. > Einen Stacktrace sieht man zum Beispiel unter http://tinyurl.com/8hayz Is'n Backtrace, und damit normalerweise das erste, was man dem Debugger entlockt. Hilft oft schon weit genug, aber beim core-Debugging kommt oft noch 'ne Menge mehr zur Anwendung... zum "Einschalten": siehe "man ulimit; man proc" # core-Dumps beliebiger Größe zulassen ulimit -c unlimited # das ganze etwas komfortabler machen :) mkdir -p /tmp/cores chmod 777 /tmp/cores echo "/tmp/cores/core.%e.%p" > /proc/sys/kernel/core_pattern Wenn noch 'was zu klären ist, ggf. per Privatmail, ich nehm' nicht an, daß das viele Leute interessiert... Viele Grüße Eckard