 |
C++Talk.NET C++ language newsgroups
|
| View previous topic :: View next topic |
| Author |
Message |
Alexander Dietz Guest
|
Posted: Mon May 24, 2004 7:34 am Post subject: Suche nach einem Speicherleck |
|
|
Hallo,
ich habe ein groesseres und sehr komplexes Program (insgesamt fast
20.000 Zeilen) in dem wohl ein Speicherleck auftaucht. An einer Stelle
des Programms bricht das Program mit einem 'segmentation fault' ab.
Wie finde ich die Stelle, an der dieses Leck entsteht?
Wie kann ich herausfinden, welche Zeile (die ja auch vielleicht sehr
viel frueher im Code steht) dieses 'segmentation fault' ausloest?
Fuer sinnvolle Hilfe waere ich sehr dankbar!
Gruss
Alexander Dietz
--
de.comp.lang.iso-c++ - Moderation: mailto:voyager+mod (AT) bud (DOT) prima.de
FAQ: http://www.voyager.prima.de/cpp/ mailto:voyager+send-faq (AT) bud (DOT) prima.de
|
|
| Back to top |
|
 |
Torsten Schneider Guest
|
Posted: Mon May 24, 2004 9:14 am Post subject: Re: Suche nach einem Speicherleck |
|
|
Alexander Dietz <alexd4351 (AT) compuserve (DOT) de> wrote:
| Quote: | Wie finde ich die Stelle, an der dieses Leck entsteht?
Wie kann ich herausfinden, welche Zeile (die ja auch vielleicht sehr
viel frueher im Code steht) dieses 'segmentation fault' ausloest?
|
Ich habe keine Ahnung, welchen C++-Compiler du einsetzt, aber dies ist
ein klarer Fall für einen Debugger.
Grüße, Torsten
--
de.comp.lang.iso-c++ - Moderation: mailto:voyager+mod (AT) bud (DOT) prima.de
FAQ: http://www.voyager.prima.de/cpp/ mailto:voyager+send-faq (AT) bud (DOT) prima.de
|
|
| Back to top |
|
 |
Andreas Huennebeck Guest
|
Posted: Mon May 24, 2004 9:40 am Post subject: Re: Suche nach einem Speicherleck |
|
|
Alexander Dietz wrote:
| Quote: | ich habe ein groesseres und sehr komplexes Program (insgesamt fast
20.000 Zeilen) in dem wohl ein Speicherleck auftaucht. An einer Stelle
des Programms bricht das Program mit einem 'segmentation fault' ab.
|
Ein segmention fault ist keine Folge eines Speicherlecks, sondern eher
von dessen Gegenteil (Zugriff auf Speicher, der schon freigegeben wurde).
| Quote: | Wie finde ich die Stelle, an der dieses Leck entsteht?
Wie kann ich herausfinden, welche Zeile (die ja auch vielleicht sehr
viel frueher im Code steht) dieses 'segmentation fault' ausloest?
|
Schwierig. valgrind und mpatrol koennten helfen. Ansonsten Debuggen.
Tschau
Andreas
--
Andreas Hünnebeck | email: [email]ah (AT) despammed (DOT) com[/email]
----- privat ---- | www : http://www.huennebeck-online.de
Fax/Anrufbeantworter: 0721/151-284301 o. 0180/50525-5232659 (24 Pfg/Min)
SMS: D1=72617 D2=0172/7366-042 E-Plus=0177/7934-396 Viag=0179/2029-894
GPG-Key: http://www.huennebeck-online.de/public_keys/andreas.asc
--
de.comp.lang.iso-c++ - Moderation: mailto:voyager+mod (AT) bud (DOT) prima.de
FAQ: http://www.voyager.prima.de/cpp/ mailto:voyager+send-faq (AT) bud (DOT) prima.de
|
|
| Back to top |
|
 |
Vinzent 'Gadget' Hoefler Guest
|
Posted: Mon May 24, 2004 10:45 am Post subject: Re: Suche nach einem Speicherleck |
|
|
Torsten Schneider wrote:
| Quote: | Alexander Dietz <alexd4351 (AT) compuserve (DOT) de> wrote:
Wie finde ich die Stelle, an der dieses Leck entsteht?
Wie kann ich herausfinden, welche Zeile (die ja auch vielleicht sehr
viel frueher im Code steht) dieses 'segmentation fault' ausloest?
Ich habe keine Ahnung, welchen C++-Compiler du einsetzt, aber dies ist
ein klarer Fall für einen Debugger.
|
Nein. Fuer einen Code-Review.
Vinzent.
--
de.comp.lang.iso-c++ - Moderation: mailto:voyager+mod (AT) bud (DOT) prima.de
FAQ: http://www.voyager.prima.de/cpp/ mailto:voyager+send-faq (AT) bud (DOT) prima.de
|
|
| Back to top |
|
 |
Michael Schlenger Guest
|
Posted: Mon May 24, 2004 10:23 pm Post subject: Re: Suche nach einem Speicherleck |
|
|
On 24 May 2004 00:34:24 -0700, [email]alexd4351 (AT) compuserve (DOT) de[/email] (Alexander
Dietz) wrote:
| Quote: | Hallo,
Wie finde ich die Stelle, an der dieses Leck entsteht?
Wie kann ich herausfinden, welche Zeile (die ja auch vielleicht sehr
viel frueher im Code steht) dieses 'segmentation fault' ausloest?
Das hängt davon ab, was du unter "Entstehen" und "Auslösen" vestehen |
willst. Etwa Code wie
p = new P;
...
delete p;
vielleicht?
Schreibt man nämlich später z.B.
p-> f();
gibt's ein Problem. Wo liegt nun der Fehler?
Viele finden, die letzte Zeile ist fehlerhaft, weil das Objekt schon
nicht mehr existiert, aber trotzdem darauf zugegriffen wird.
Andere (ich z.B. ) wiederum finden die delete-Anweisung fehlerhaft.
Danach hat p nämlich den gleichen Wert, obwohl das Objekt nicht mehr
existiert. Zeiger sollten aber immer nur auf gültige Objekte
verweisen, oder 0 sein.
Ich möchte hier keine Lösung präsentieren (SAFEDELETE, oder smart
pointer etc.), sondern nur klarmachen: die Problematik mit
Speicherlecks, seg faults etc. muss im Gesamtzusammenhang gesehen
werden. "Die" eine Zeile, die falsch ist, gibt es in der Praxis nicht.
------------------------------------------------
Michael Schlenger
------------------------------------------------
--
de.comp.lang.iso-c++ - Moderation: mailto:voyager+mod (AT) bud (DOT) prima.de
FAQ: http://www.voyager.prima.de/cpp/ mailto:voyager+send-faq (AT) bud (DOT) prima.de
|
|
| Back to top |
|
 |
James Kanze Guest
|
Posted: Fri May 28, 2004 9:19 pm Post subject: Re: Suche nach einem Speicherleck |
|
|
[email]schneider (AT) mabi (DOT) de[/email] (Torsten Schneider) writes:
| Quote: | Alexander Dietz <alexd4351 (AT) compuserve (DOT) de> wrote:
Wie finde ich die Stelle, an der dieses Leck entsteht? Wie kann
ich herausfinden, welche Zeile (die ja auch vielleicht sehr viel
frueher im Code steht) dieses 'segmentation fault' ausloest?
Ich habe keine Ahnung, welchen C++-Compiler du einsetzt, aber dies
ist ein klarer Fall für einen Debugger.
|
Und wie findest du sowas mit einem Debugger?
--
James Kanze
Conseils en informatique orientée objet/
Beratung in objektorientierter Datenverarbeitung
9 place Sémard, 78210 St.-Cyr-l'École, France +33 (0)1 30 23 00 34
--
de.comp.lang.iso-c++ - Moderation: mailto:voyager+mod (AT) bud (DOT) prima.de
FAQ: http://www.voyager.prima.de/cpp/ mailto:voyager+send-faq (AT) bud (DOT) prima.de
|
|
| Back to top |
|
 |
|
|
You cannot post new topics in this forum You cannot reply to topics in this forum You cannot edit your posts in this forum You cannot delete your posts in this forum You cannot vote in polls in this forum
|
|