ERLEDIGT
NEIN
NEIN
ANTWORTEN
11
11
ZUGRIFFE
2365
2365
EMPFEHLEN
-
Hi!
Ich versuche gerade eine eigene "move the boxes" Version
mit c++ und Sdl unter Linux zu erstellen.
Es funktioniert auch alles soweit ganz gut, nur erhalte ich
beim verlassen des Programms ab und zu einen Speicherzugriffsfehler.
Was nicht weiterhin stören würde wenn es nur beim
Verlassen des Spieles wäre. Wenn ich mein Männchen
während des Spieles in die oberste bzw. unterste Reihe
setze wird das Spiel beendet und ich erhalte:
Fatal signal: Segmentation Fault (SDL Parachute Deployed)
was meinen Informationen nach auch ein Speicherzugrifsfehler
ist. Allerdings hab ich keine Ahnung an welcher Stelle
in meinem Programm der auftritt. Meine Frage jetzt:
Weiß jemand worauf man besonderst achten muss?
Also wo solche Fehler gerne auftreten?
Oder kann mir vieleicht jemand sagen wie ich das
Programm im debugger ddd aufrufen kann um es dort zu testen?
Danke schon mal!
Gruß BennyTheorie ist Wissen, das nicht funktioniert.
Praxis ist, wenn alles funktioniert und man weiß nicht warum
-
01.12.05 19:59 #2
- Registriert seit
- Apr 2002
- Ort
- Delmenhorst (Niedersachsen)
- Beiträge
- 3.567
moin
Welche Entwicklungsumgebung benutzt du?
mfg
umbrasaxum
-
Editor >> kwrite
Compiler >> gnuTheorie ist Wissen, das nicht funktioniert.
Praxis ist, wenn alles funktioniert und man weiß nicht warum
-
Hallo,
am besten du verwendest den gdb oder den ddd (wie du schon geschrieben
hast).
Du musst dein Programm mit der Option -g kompilieren und dann den
Debugger starten:
Code :1
gdb ./deinprogram
oder mit grafischen Frontend:
Code :1
ddd ./deinprogram
Wie man den gdb verwendet kannst du hier nachlesen:
http://shekel.jct.ac.il/cc-res/onlin...b/gdb_toc.html
und der ddd ist selbsterklärend...
Gruß
RedWing"I'm not deaf, I'm ignoring you"
----
-
01.12.05 21:15 #5
- Registriert seit
- Jan 2002
- Ort
- Bayern
- Beiträge
- 1.390
Hast du dein Spiel schon mal im GDB gestartet?
Wenn nicht, dann versuch das mal, setzt dich mal mit dem GNU-Debugger auseinander, der "fängt" nämlich die Signale (in dem Fall SIGNAL 11=Segmentation Faul=Speicherzugriffsfehler)
Wenn der GDB das Signal fängt, dann bleibt er in der Regel in der entsprechenden Codezeile stehen und du kannst dir auch nen Backtrace geben lassen.
Vorraussetzung dafür ist natürlich, dass du dein Code mit Debug-Symbolen übersetzt.
Danielwe would change the world if god gave us the source code...
and remember, science is nothing more than reverse engineering nature...
Current projects:
- LdrawConverter
-
Moin
Danke für die Tipps, ich hab das Programm mit dem gdb
gestartet und der sagt mir nun in welcher Funktion der
Fehler ist. Hab den nun behoben.
Allerdings hab ich das Programm nur mit run einfach
ablaufen lassen, ohne irgendwelche Breakpoints zu
setzten.
Kennt ihr zufällig eine gute Deutsche seite über den gdb?
Denn meinem Eindruck nach scheint man mit dem
einiges mehr machen zu können als mit dem ddd,
stimmt das? Da ich allerdings erst seit 2-3 Wochen
unter Linux arbeite, und total das Mauskind bin, ist
das mit der Konsolensteuerung noch recht ungewohnt.
Und wenn dann noch alles auf Englisch erklärt ist..muhaha
Also dann Danke für eure Hilfe!
Gruß BennyTheorie ist Wissen, das nicht funktioniert.
Praxis ist, wenn alles funktioniert und man weiß nicht warum
-
Hallo,
Mit dem ddd kann man genau das auch machen was man mit dem gdb machenDenn meinem Eindruck nach scheint man mit dem
einiges mehr machen zu können als mit dem ddd,
stimmt das?
kann.
Wenn du mal im ddd im unteren Teil des Fensters schaust, wirst du das Prompt
des gdb wiedererkennen... ddd ist wie gesagt nur das grafische Frontend des gdb
und da es auch das Eingabeprompt des gdb's zur Verfügung stellt ist der ddd
gleichmächtig.
google gibt da denke ich ausreichend Antworten...Kennt ihr zufällig eine gute Deutsche seite über den gdb?
Gruß
RedWing"I'm not deaf, I'm ignoring you"
----
-
Wieso kann ich aber mein Programm im gdb öffnen
aber nicht im ddd ?
Gruß BennyTheorie ist Wissen, das nicht funktioniert.
Praxis ist, wenn alles funktioniert und man weiß nicht warum
-
Hallo,
entweder:
Code :1
ddd ./deinprogram
oder im ddd:
"File->Open Program"
dein Programm auswählen und dann mit run starten oder
über die buttons ...
Gruß
RedWing"I'm not deaf, I'm ignoring you"
----
-
Der sagt mir immer Datei oder Verzeichnis nicht gefunden!
Selbst wenn ich es mit Datei >Programm öffnen mache.

Aber im gdb läuft es ab. Allerdings gibt er mir wenn dann nur
die Funktion aus in der der Fehler auftritt aber nicht die Zeile.
Gruß BennyTheorie ist Wissen, das nicht funktioniert.
Praxis ist, wenn alles funktioniert und man weiß nicht warum
-
Ein "Segmentation Fault"-Error bedeutet bei SDL fast immer, dass ein typischer Windows "Blue Screen" verhindert wird (ich weiß, dass du Linux verwendest...), also ein unzulässiger Speicherzugriff, wie du richtig erkannt hast.
Da du erwähnst, dass dieser Fehler vorkommt, wenn du den Spieler in die oberste bzw. unterste Zeile stellst, vermute ich eventuell einen Array-Fehler (zum Beispiel "int array[5]" wird mit "array[5]" angesprochen etc.). Du benutzt doch sicherlich Arrays in irgendeiner Form um die Spieler-Position oder die Felder (Tiles) zu speichern?
Hast du immer bedacht, dass ein Array in C++ bei 0 anfängt? Also, dass "int array[5]" die Elemente von 0 bis 4 besitzt? Zu leicht passiert es einem, dass man in einer Schleife zum Beispiel so was macht: "for ( int i = 0; i < 5; i++ ) array[i] = 1;" Das würde in solch einem Fehler enden.
Ich hoffe ich konnte irgendwie helfen!
-
Hallo,
der Fehler kommt bei mir auch. Es geht aber trotzdem zu debuggen...
Zitat von kle-ben
Nachdem dir dein Programm abgestürzt ist kannst du dir mit dem Befehl
Zitat von kle-ben
"where" im gdb den Funktionaufrufsstack anschauen. Da sollten
auch die Zeilennummern stehen, vorrausgesetzt du hast mit -g kompiliert....
Gruß
RedWing"I'm not deaf, I'm ignoring you"
----
Ähnliche Themen
-
[C++] Speicherzugriffsfehler
Von FBIagent im Forum C/C++Antworten: 4Letzter Beitrag: 26.03.08, 13:16 -
Speicherzugriffsfehler
Von NoPanic2007 im Forum C/C++Antworten: 5Letzter Beitrag: 11.09.07, 11:11 -
Speicherzugriffsfehler
Von sunmania im Forum C/C++Antworten: 1Letzter Beitrag: 25.06.07, 10:13 -
Cedega - Speicherzugriffsfehler?
Von _henrik im Forum Linux & UnixAntworten: 0Letzter Beitrag: 22.07.05, 13:26 -
Speicherzugriffsfehler
Von vaporizer im Forum C/C++Antworten: 3Letzter Beitrag: 27.05.04, 10:02





Zitieren
Login






