[Forum] Backtrace i C programmer

From: Esben Nielsen <simlo@ifa.au.dk>
Date: Sat Jul 28 2001 - 22:28:10 CEST

Hej,
 Jeg har rodet lidt med en Boehm's garbage collecter. Man kan bruge den
til at debugge ens program for memory leaks. Når man bruger den med DEBUG
flaget sat vil den gemme navnet paa source filen og linienummeret til hver
allokering (altså hver gang man bruger malloc()) så man kan finde ud
af hvor ens memory leaks kommer fra. Desværre er det ikke så brugbart hvis
man f.eks har lavet sin egen strdup() funktion: Af de strenge man ikke har
fået free'et vil man jo bare så se at de kommer fra en strdup()-kald,
som man jo har rigtigt mange af i stort program.
Men hvis man kører Solaris vil den (ifølge manualen) gemme et helt stack
trace! Dvs man kan spore kaldet frem til det specifikke strdup()-kald, som
giver bøvlet. Det giver selvsagt meget større chancer for at finde og
rette fejlen.

Mit spørgsmål er nu: Findes der noget lignende til linux?
Altså er der nogle funktioner til at aflæse programmets stack med så man
senere kan printe det ud i een eller anden form?

Kort fortalt kunne jeg godt tænke mig at lave det så når jeg kaster en
(slem) exception i C++, husker den backtrace og skriver det ud som i
gdb og ikke bare en besked med at det og det er gået galt, inden
programmet fortsætter. Uden et backtrace vil jeg nemlig ofte stå med alt
for lidt information til senere at gå ind og finde fejlen.

Mvh.,
Esben Nielsen
Work (from August 1st 2001):
 Cotas A/S
 Paludan Mullersvej
 8200 Aarhus C
Private (temporarely):
 Snogebaeksvej 29, v 28
 8210 Aarhus V
Phone:
 +45 27 13 10 05
Received on Sat Jul 28 22:28:09 2001

This archive was generated by hypermail 2.1.8 : Tue Jul 19 2005 - 16:02:26 CEST