Hinweis: Das Forum wird geschlossen! Neue Registrierungen sind nicht mehr möglich!

 Zurück zu Pro-Linux   Foren-Übersicht   FAQ     Suchen    Mitgliederliste
grrrr Segfault

 
Neuen Beitrag schreiben   Auf Beitrag antworten    Pro-Linux Foren-Übersicht -> Programmieren - C
Vorheriges Thema anzeigen :: Nächstes Thema anzeigen  
Autor Nachricht
Peter
Gast





BeitragVerfasst am: 16. März 2002 14:54   Titel: grrrr Segfault

Hmmm

ich kriege manchmal beim Programmieren einfach mal nen Segfault...Ist ja klar, wenn man nen Fehler einbaut Smile...Aber:

Jedesmal muss ich ewig mim Debugger rummachen, bis ich die Stelle gefunden habe wo der "rausfliegt". Gibts da nichts was eim gleich Zeile oder so sagt wos geknallt hat ??

Peter
 

Peter
Gast





BeitragVerfasst am: 16. März 2002 15:08   Titel: Re: grrrr Segfault

den Segfault eben, wollte ich mit ein paar cout Meldungen eingrenzen...und ich hab ihn auch immer Weiter eingeschränkt, bis er plötzlich nicht mehr kam ! Auch nachdem ich die couts wieder entfernt habe....der Segfault is weg :)

^^Wie kann sowas passieren... und immernoch: ich brauche für die "permanenten" Segfaults ein tool, was mir sofort angeben kann, an welcher Stelle es passierte..

Thx in advance
Peter
 

Descartes
Gast





BeitragVerfasst am: 16. März 2002 15:12   Titel: Re: grrrr Segfault

Wie wäre es mit einem Debugger ?

$ gcc -d -o main main.c
$ ./main
Segfault
$ gdb main core
...
...
...
 

hjb
Pro-Linux


Anmeldungsdatum: 15.08.1999
Beiträge: 3236
Wohnort: Bruchsal

BeitragVerfasst am: 16. März 2002 20:03   Titel: Re: grrrr Segfault

Hi,

entweder man macht es so, wie es Descartes beschrieben hat, oder man grenzt die Stelle ein, wo es passiert (z.B. mit einer Logdatei) und stiert dann auf den Quellcode. Mit ausreichend Erfahrung (wie ich sie zu haben meine) kommt man oft ohne Debugger aus

Wenn der Segfault plötzlich verschwindet, ist der Fehler mit Sicherheit nicht behoben. Dann hast du eine Speicherkorruption, verursacht durch fehlerhaften Umgang mit malloc/free/new/delete oder Schreiben über das Ende eines Arrays.

Gruß,
hjb
_________________
Pro-Linux - warum durch Fenster steigen, wenn es eine Tür gibt?
 
Benutzer-Profile anzeigen Private Nachricht senden E-Mail senden Website dieses Benutzers besuchen MSN Messenger

arni



Anmeldungsdatum: 10.02.2002
Beiträge: 73
Wohnort: Berlin

BeitragVerfasst am: 17. März 2002 1:49   Titel: Re: grrrr Segfault

Hast du das Programm auch ohne Optimierungen also z.b. mit "-O -g" compiliert?
Solche zufällig verstreuten Fehler die wie von Geisterhand auftauchen und wieder verschwinden haben meistends damit zu tun. Ein Debugger hilft dann auch nicht weiter weil durch die Optimierungen die Adressen nicht mehr zum Debugcode stimmen. Manchmal kann im übrigen auch ein coredump gut geeignet sein um einen Fehler nachträglich zu finden.
_________________
Frank Arnold <far@4damind.com>
{ http://arnisoft.net & http://4damind.com }
 
Benutzer-Profile anzeigen Private Nachricht senden Website dieses Benutzers besuchen

Peter
Gast





BeitragVerfasst am: 17. März 2002 12:39   Titel: Re: grrrr Segfault

Nein, ohne O?...
ich hatte:
-Wall -pg -ggdb

Achja:

ich benutze immer den "ddd" (Frontend zu gdb), ist das mit dem Befehl vom Descartes genauso schnell/langsam zu finden ? Wenn man nämlich C++ Code debugged, dann landet der immer wieder in so C++ functionen/wasauchimmer, was ich nicht verstehe, wo er aber manchmal ewig bleibt (wenn ich immer auf "Step" klicke). Schoen wäre es, wenn man ein Programm hätte, was, wenn man es über ein segfault binary laufen lässt gibt:

Segfault in:
void c++_spezial_allocation_template() in Z.563;
int facultaet(int) Z.45 in:
void calculation in Z.213 :
class math in Z.10
int main() in Z.18

Da könnte ich dann genaustens und ohne Verzögerungen an den Fehler gehen


cya Peter
 

chrizel
Gast





BeitragVerfasst am: 17. März 2002 13:19   Titel: Re: grrrr Segfault

hi.

Ich möcht ja nix sagen, aber ich hab neulich ein ddd-Tutorial gemacht, und der ddd machts doch schon so...? Wenn ich ein Programm aufrufe (mit ddd), und es tritt ein seg. fault auf, dann springt mir der ddd zu der zeile, wo der fehler auftrat...

...oder versteh ich da was falsch? ;)

ciao

chrizel
 

Peter
Gast





BeitragVerfasst am: 22. März 2002 22:29   Titel: Re: grrrr Segfault

klar springt der ddd zur Zeile Smile Nur ist die meistens (sprich immer) in einem andern Code, der nicht von mir stammt (in irgendwelchen C++ STL Dateien ist der da meist drin).

Peter
 

fb
Gast





BeitragVerfasst am: 29. März 2002 16:27   Titel: Re: grrrr Segfault

Du musst einen backtrace machen. Dann siehst du, wo in deinem Code der Fehler beginnt. Unter GDB gibst du dazu einfach "bt" ein, bei DDD gibts glaub ich ein Fenster und du kannst dann klicki klicki machen.
 

arni



Anmeldungsdatum: 10.02.2002
Beiträge: 73
Wohnort: Berlin

BeitragVerfasst am: 31. März 2002 15:39   Titel: Re: grrrr Segfault

Coredump halt ich für besser geeignet.
Einfach mit ulimit -c die maximale Grösse der core-Datei festlegen und nach dem segfault in den gdb laden.
(ulimit -c unlimited setzt die grösse des Corefiles auf das verfügbare Maximimum)

Nach 'gdb programmdatei core' kann man dann immer noch ein Backtrace machen (bt) sich Variablen anschauen (p) usw.

Halte ich für effizienter und angenehmer als mit dem DDD "rumzumachen".
_________________
Frank Arnold <far@4damind.com>
{ http://arnisoft.net & http://4damind.com }
 
Benutzer-Profile anzeigen Private Nachricht senden Website dieses Benutzers besuchen

Beiträge vom vorherigen Thema anzeigen:   
     Pro-Linux Foren-Übersicht -> Programmieren - C Alle Zeiten sind GMT + 1 Stunde
Seite 1 von 1

 
Gehen Sie zu:  

Powered by phpBB © phpBB Group
pro_linux Theme © 2004 by Mandaxy