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