Breakpoints funktionieren nicht

Neonof

Mitglied
Hi, folgendes Problem:

Selbst wenn ich ein neues Projekt erstelle und lediglich
C:
#include <stdio.h>

int main(int argc, char* argv[])
{
   printf("test");
   return 0;
}

in den Code schreibe und in Zeile 5 einen Breakpoint setze, greift dieser nicht.
Erst fiel es mir bei der Arbeit an einem eigenen Projekt auf, dann probierte ich es nach etwas Recherche an einem völlig neuen Projekt mit diesen Codezeilen. Am Code kann es also nicht liegen.

In einigen Quellen wird man auf die Linkeroption -O0 verwiesen. Die ist bei mir gesetzt.
In diesem interessanten Artikel ist immer nur vom Compiler die Rede. Also habe ich testweise auch einmal die Compileroption -O0 gesetzt. Das Ergebnis ist leider unverändert.

Woran könnte es noch liegen?

Danke schon einmal wieder für Antworten.

Gruß,

Neonof
 
Genau das wollte ich gerade ergänzen, als ich mir den Kram noch einmal durchlas... sorry ^^'

IDE: CodeLite
Compiler: MinGW(TDM-GCC-64)
 
Hi

Ich kann davon ausgehen, dass du das Programm nicht ausführst, sondern den entsprechenden Debugger laufen lässt, oder?
(Also müsste es eine Option im Menu "GDB" sein).

-O0 ist eigentlich Standard (der von dir verlinkte Artikel hat hier keinen Effekt, und sonst halt volatile verwenden). Gesetzt sein müsste aber -g (Dbg symbols).
Das Ganze zu überprüfen ist aber recht schwer.

Grundsätzlich kann ich also nur folgendes auflisten:
1) Ist GDB installiert? Gibt es irgendwelche Warnungen?
2) Wird das Programm mit angehängtem Debugger gestartet? (also nicht normal ausgeführt)
3) Was sind die Einstellungen für den aktuellen Modus (Compilerflags etc.)? Ist der Debugmodus aktiv?
4) Funktioniert der Debugger, wenn gdb direkt (also ohne IDE) mit dem Programm gestartet wird?

Gruss
cwriter
 
Die Annahme ist korrekt. Ich starte die Ausführung wie gewohnt über den Button "Start or Continue debugger".

zu 1):
GDB ist installiert (hat ja ohnehin letzte Woche noch funktioniert) und es gibt keine Warnungen. Diese hätte ich selbstverständlich als erstes beschrieben.

zu 2):
Mir ist nicht ganz klar, was mit angehängt gemeint ist, aber es wurde in den allgemeinen Einstellungen nichts verändert, seit es noch funktionierte. Wenn überhaupt probierte ich in einzelnen Projekteinstellungen herum, aber nie an allgemeinen, seit es (auch mit neuen Projekten) noch funktionierte. Auf alle Fälle wird das Programm normal ausgeführt.

zu 3):
Am besten zeige ich direkt einmal alle Projekteinstellungen:

General
Compiler
Linker
Environment
Debugger
Resources
Global


Wenn ich nicht völlig banane bin, ist der Debugmodus sogar der einzige vordefinierte Modus und auch eingestellt.

zu 4):
Wie starte ich das denn direkt?
Da gdb mit CodeLite installiert wurde, ist mir kein eigener Pfad bekannt und sowohl im Stammverzeichnis von CodeLite als auch diversen Unterordnern mit gdb im Namen ist keine "gdb.exe" oder ähnlich zu finden, die ich über die Konsole starten könnte.

Gruß,
Neonof
 
Zuletzt bearbeitet:
Hi

zu 1):
GDB ist installiert (hat ja ohnehin letzte Woche noch funktioniert) und es gibt keine Warnungen. Diese hätte ich selbstverständlich als erstes beschrieben.
Was hat sich seit letzter Woche verändert?

zu 2):
Mir ist nicht ganz klar, was mit angehängt gemeint ist, aber es wurde in den allgemeinen Einstellungen nichts verändert, seit es noch funktionierte. Wenn überhaupt probierte ich in einzelnen Projekteinstellungen herum, aber nie an allgemeinen, seit es (auch mit neuen Projekten) noch funktionierte. Auf alle Fälle wird das Programm normal ausgeführt.
Also die globalen Argumente sind ja ziemlich leer.

Wenn ich nicht völlig banane bin, ist der Debugmodus sogar der einzige vordefinierte Modus und auch eingestellt.
Hast du ein C- oder ein C++-Projekt erstellt?
Denn gemäss deinen Einstellungen gilt folgendes für C++:
"g++ -g -Wall" (Ok, debuginfos vorhanden)
Und dies für C:
"gcc -O0" (Nicht ok, Debugger können funktionieren, müssen aber nicht).

(-O0 beim Linker sollte eigentlich nichts bewirken. Gab es dazu keine Warnung?)

Wie starte ich das denn direkt?
Da gdb mit CodeLite installiert wurde, ist mir kein eigener Pfad bekannt und sowohl im Stammverzeichnis von CodeLite als auch diversen Unterordnern mit gdb im Namen ist keine "gdb.exe" oder ähnlich zu finden, die ich über die Konsole starten könnte.
Ich kann mir schwerlich vorstellen, dass CodeLite gdb in den eigenen Code eingepflegt hat. GDB muss irgendwo auf deinem System sein, sonst scheint es logisch, dass der Debugger nicht funktioniert.

Falls du ihn findest:
http://stackoverflow.com/questions/...-gdb-debugger-to-debug-a-c-program-in-windows

Gruss
cwriter
 
Das Stammverzeichnis von GDB habe ich nicht finden können. Das Projekt sollte ein c-Projekt gewesen sein. Immerhin enden auch alle Sourcefiles auf ".c". Damit sollte der Compiler das Projekt doch ohnehin als c-Projekt erkennen. Verändert hat sich eigentlich seit letzter Woche nichts. Natürlich muss sich etwas geändert haben, aber mir ist keine Veränderung bewusst.


Inzwischen habe ich das Problem gelöst, wobei ich nicht wirklich sagen kann, woran es gelegen hat.

Ich habe den Compiler und die IDE neu installiert, das hat nichts gebracht.
Dann habe ich mal ein neues Workspace erstellt, statt das alte zu verwenden. Darunter funktionierten neue Projekte problemlos.
Fügte ich Projekte aus dem alten Workspace in das neue hinzu, funktionierte es auch nicht.

Auf den Gedanken hin, dass bei der Erstellung des Projekts in dem alten Workspace fehlerhafte Einstellungen übernommen wurden, übernahm ich mal die Compiler- und Linkereinstellungen aus einem neuen Projekt in das alte. Das funktionierte nicht. Hierbei sah ich allerdings auch, dass die Flags beim Linker echt nichts zu suchen haben (obwohl es lange damit funktionierte).

Neues Workspace, neues Projekt und den Code vom alten kopiert. So funktioniert alles tadellos und die Projekteinstellungen sind wieder sauber.
Komisch finde ich das allerdings trotzdem... In den Workspace Settings waren und sind immerhin keine besonderen Einstellungen vorhanden. Ich habe keinen Schimmer, welche Einstellungen da übernommen sein könnten und woher.

Ich danke an dieser Stelle einmal für die Ratschläge. Vielleicht fällt euch ja noch etwas dazu ein?

Gruß,
Neonof
 
Ich danke an dieser Stelle einmal für die Ratschläge. Vielleicht fällt euch ja noch etwas dazu ein?
Drei Dinge würden mich noch interessieren:
1) Was passiert beim Kopieren eines gesamten Projekts (also nicht nur die Einstellungen, sondern der ganze Ordner) aus dem neuen in den alten Workspace?
2) Wie sehen die Compilereinstellungen in deinem neuen Projekt im neuen Workspace aus?
3)
In den Workspace Settings waren und sind immerhin keine besonderen Einstellungen vorhanden. Ich habe keinen Schimmer, welche Einstellungen da übernommen sein könnten und woher.
Was sind die Unterschiede in den Einstellungen zwischen denen des neuen und denen des alten Workspace?

Gruss
cwriter
 
Zu 1):
Beim Übernehmen eines Ordners in den Workspace wird lediglich ein entsprechender Eintrag in der .workspace-Datei gesetzt. Die einzelnen Projekte liegen unter Umständen nicht einmal im Projektverzeichnis. Würde ich die Dateien von dem einen Ordner in den Ordner legen, den ich für den anderen Workspace gemacht habe, gehörte es dadurch nicht automatisch dazu. Erst wenn ich es über "Add an Existing Project" hinzufüge und dadurch die entsprechenden Einträge in der .workspace-Datei gesetzt werden, gehört es dazu.

Insofern entspräche kopieren des gesamten Projekts samt Einstellungen ja dem Übernehmen eines vorhandenen Projekts in das neue Workspace. Das hatte ich probiert und es funktionierte nicht.

Zu 2):
Use with Global Settings: append
C++ Compiler Options: -g;-O0;-Wall
C Compiler Options: -g;-O0;-Wall

Zu 3):
neuer Workspace:
https://i58.servimg.com/u/f58/17/88/55/32/worksp10.png

alter Workspace:
https://i58.servimg.com/u/f58/17/88/55/32/worksp11.png

Bevor jetzt der Gedanke kommt, ich hätte versehentlich zweimal das gleiche Bild hochgeladen: Man sieht, dass bei dem einen noch Abstände zwischen den einzelnen Screens sind.

Die Einstellungen sind absolut identisch. Ich habe gerade auch einmal die .workspace-Dateien angesehen. Die beinhalten ja lediglich eine Auflistung aller Projekte.

Im Anhang einfach mal die .mk- und die .project-Dateien zu den Projekten. Die Dateinamen sind abgeändert.

Gruß,
Neonof
 

Anhänge

  • PosFileManagerV1.mk - nicht funktionell.txt
    3,5 KB · Aufrufe: 2
  • PosFileManagerV1.project - nicht funktionell.txt
    2,4 KB · Aufrufe: 0
  • PosFileManager.mk - funktionell.txt
    3,5 KB · Aufrufe: 0
  • PosFileManager.project - funktionell.txt
    4,2 KB · Aufrufe: 0
Zuletzt bearbeitet:
Insofern entspräche kopieren des gesamten Projekts samt Einstellungen ja dem Übernehmen eines vorhandenen Projekts in das neue Workspace. Das hatte ich probiert und es funktionierte nicht.

Dann habe ich mal ein neues Workspace erstellt, statt das alte zu verwenden. Darunter funktionierten neue Projekte problemlos.
Fügte ich Projekte aus dem alten Workspace in das neue hinzu, funktionierte es auch nicht.
Ich habe das so verstanden, dass aus alt -> neu ausprobiert wurde, aber nicht aus neu -> alt.
Use with Global Settings: append
C++ Compiler Options: -g;-O0;-Wall
C Compiler Options: -g;-O0;-Wall
Da im neuen Projekt also -g;-O0;-Wall bei den C (nicht C++)-Optionen gesetzt ist (und beim alten nicht), wird es sehr wahrscheinlich, dass das das Problem war.

Die Einstellungen sind absolut identisch. Ich habe gerade auch einmal die .workspace-Dateien angesehen. Die beinhalten ja lediglich eine Auflistung aller Projekte.
Also wenn die workspaces identisch sind, dann kann es ja nicht an denen liegen.
Wenn du ein neues Projekt im alten workspace erstellst, sind die flags dann auch:
C++ Compiler Options: -g;-O0;-Wall
C Compiler Options: -g;-O0;-Wall
?
(Wichtig ist vor allem das C-Feld (das C++-Feld ist bei einem C-Projekt wurst).

Falls ja: Funktioniert das Debugging in diesem Projekt?

Gruss
cwriter
 
Zurück