1. Diese Seite verwendet Cookies. Wenn du dich weiterhin auf dieser Seite aufhältst, akzeptierst du unseren Einsatz von Cookies. Weitere Informationen

Breakpoints funktionieren nicht

Dieses Thema im Forum "C/C++" wurde erstellt von Neonof, 17. März 2017.

  1. Neonof

    Neonof Mitglied

    Hi, folgendes Problem:

    Selbst wenn ich ein neues Projekt erstelle und lediglich
    Code (C):
    1. #include <stdio.h>
    2.  
    3. int main(int argc, char* argv[])
    4. {
    5.    printf("test");
    6.    return 0;
    7. }
    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
     
  2. sheel

    sheel I love Asm Administrator

    Hi

    Gegenfrage 1: Um welchen Compiler und IDE gehts überhaupt?
     
  3. Neonof

    Neonof Mitglied

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

    IDE: CodeLite
    Compiler: MinGW(TDM-GCC-64)
     
  4. cwriter

    cwriter Erfahrenes Mitglied

    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
     
    Neonof und sheel gefällt das.
  5. Neonof

    Neonof Mitglied

    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: 18. März 2017
  6. cwriter

    cwriter Erfahrenes Mitglied

    Hi

    Was hat sich seit letzter Woche verändert?

    Also die globalen Argumente sind ja ziemlich leer.

    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?)

    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
     
    Neonof gefällt das.
  7. Neonof

    Neonof Mitglied

    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
     
  8. cwriter

    cwriter Erfahrenes Mitglied

    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)
    Was sind die Unterschiede in den Einstellungen zwischen denen des neuen und denen des alten Workspace?

    Gruss
    cwriter
     
  9. Neonof

    Neonof Mitglied

    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:

    Zuletzt bearbeitet: 20. März 2017
    cwriter gefällt das.
  10. cwriter

    cwriter Erfahrenes Mitglied

    Ich habe das so verstanden, dass aus alt -> neu ausprobiert wurde, aber nicht aus neu -> alt.
    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.

    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:
    ?
    (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
     
  11. Neonof

    Neonof Mitglied

    So hatte ich das auch nicht verstanden. ;)
    Ich habe das gerade mal ausprobiert. Ein Projekt aus dem neuen Workspace in das alte übernommen funktioniert korrekt. Haltepunkte werden berücksichtigt.

    Das hatte ich bereits zu Beginn probiert.

    Ich bin verwirrt. o_O
    Ich hatte das bereits probiert, und die Einstellungen wurden fehlerhaft übernommen. Jetzt probierte ich es noch einmal und die Flags sind korrekt. Auch das Debuggen funktioniert in dem neuen problemlos.
    Nun dachte ich, vielleicht werden in ein neues Projekt ja einfach immer die Einstellungen übernommen, die man in dem letzten Projekt abgeändert hat. Das ist aber nicht der Fall.

    Das bei der Problematik zum Testen neu erstellte Projekt in dem alten Workspace, das nicht funktioniert hatte, funktioniert auch jetzt noch nicht. Neu erstellte funktionieren nun auch in dem alten Workspace wieder.

    Edit:
    Ich würde mal denken eine problematische Standarteinstellung für neue Projekte wurde bei der Neuinstallation überschrieben. Aber es ging ja direkt nach der Neuinstallation erstmal nur mit dem neuen Workspace. An den Flags allein kann es auch nicht liegen, da in dem alten Projekt, das immernoch nicht funktioniert, nun ja auch die korrekten Flags stehen.

    Edit:
    Nach der Neuinstallation machte ich keinen Neustart des Laptops. Vielleicht ist das der entscheidende Unterschied dazu, dass neue Projekte nun mit korrekten Einstellungen ausgestattet sind.
     
    Zuletzt bearbeitet: 20. März 2017
Die Seite wird geladen...