2012-10-19 3 views
17

Ich habe ein Projekt mit einer gemeinsam genutzten Bibliothek (dynamisch geladen) bekommt, und ich bin versucht, es zu debuggen. Ich erhalte die folgende Fehlermeldung:„Keine Quelldatei namens“ Fehler Debuggen von Eclipse CDT

No source file named /home/username/Code/path/to/project/MyFile.cpp. 

Nach anderen Threads gesucht zu haben, ich habe dafür gesorgt, dass ich mit -g bin kompilieren, und dass die entsprechenden Ordner auf dem Quellpfad Registerkarte Debug-Konfigurationen sind. Der seltsame Teil ist, dass es den korrekten absoluten Pfad gibt: Die Datei, auf die es verweist, existiert, daher verstehe ich nicht, warum es nicht denkt, dass es da ist.

Wer weiß, was ist zu tun?

Antwort

22

Ich bin gerade auf dasselbe Problem gestoßen, obwohl meine Haltepunkte in der ausführbaren Datei selbst und nicht in einer gemeinsam genutzten Bibliothek waren. Um dies zu lösen, hatte ich die „Debug-Konfiguration“ zu öffnen, wählen Sie meine Debug-Konfiguration und stellen Sie die folgenden Einstellungen:

  • Am unteren Ende gibt es einen Link „andere wählen ...“ aus dem Prozess erstellen Startprogramm. Klicken Sie auf den Link. Aktivieren Sie die Option "Konfigurationsspezifische Einstellungen verwenden". Wählen Sie "Standard Create Process Launcher" und drücken Sie "OK".
  • Gehen Sie zur Registerkarte "Debugger" und wählen Sie oben auf der Registerkarte "Debugger: gdb/mi". Was kann/darf keinen Unterschied machen: Auf der gleichen Registerkarte auch eine Checkbox ist „Verwenden Sie den vollständigen Dateipfad Breakpoints zu setzen“ - ich damit gespielt, aber es scheint nicht das Problem beeinflussen wir (natürlich unsere Quellpfade beobachten sind schon volle Wege).

Für Stützpunkte in gemeinsam genutzten Bibliotheken, können Sie zusätzliche Informationen benötigen (insbesondere über latente Stützpunkte) aus Debugging with eclipse cdt and gdb und Why does eclipse cdt ignore breakpoints.

Hinweis: Dies bezieht sich auf Eclipse Kepler (4.3) und gdb 7.4.

+2

nette Antwort, ich denke, es ist richtig. Vielleicht möchten Sie auch diese Frage zu sehen/.answer auch: http://StackOverflow.com/Q/801423/1284631 – user1284631

+0

In meinem Fall, nach dem Versuch, alle oben genannten Schritte vergeblich, endete es, dass die Installation einer neueren Version von gdb (7.4) hat es behoben. – harish

0

Ich hatte das gleiche Problem, aber meine Lösung war anders. Öffnen Sie die Verzeichnisse "debug/src" + "release/src" des Projekts, und stellen Sie sicher, dass keine [Dateiname] .d-Dateien vorhanden sind, die den Namen von Quelldateien enthalten, die ihre Namen geändert haben oder nicht mehr existieren. Ich hatte eine, löschte sie und seit keine Fehler mehr.

Ich würde daher annehmen, zumindest in meinem Fall, dass die Fehler von Objekten verursacht werden, die außerhalb des Geltungsbereiches liegen.

2

hatte ich das gleiche Problem, aber in meinem Fall war es meine Schuld. Einige meiner Projekte waren auf Release-Konfiguration eingestellt, und der Debugger konnte die Quelldateiinformationen natürlich nicht finden.

+0

Ich hatte das gleiche Problem. Ich habe vergessen, mein CMake-Projekt mit '-DMAKE_BUILD_TYPE = Debug' zu konfigurieren. – Ignitor

1

hatte ich das gleiche Problem. Ich konnte keinen Haltepunkt in einer freigegebenen Bibliotheksdatei (.so) festlegen, die an einer anderen Stelle als mein Programm kompiliert wurde. Um dies zu beheben:

  1. Gehen Sie auf die Debug-Konfiguration, Registerkarte Quelle
  2. ein Compilation Verzeichnis hinzufügen (I verwendet, um den Standort der Haupt Make-Datei, die alle Prozesse kompiliert, nicht dort, wo die Make-Datei für diesen Prozess befindet).
  3. auch auf „Subdirectories auch für die Kompilierung verwendet werden“ (meine subprocess Make-Datei in einem Unterverzeichnis des Hauptstandortes kompiliert wird)

Ich habe für all Debug-Konfigurationen Zukunft nicht herausgefunden, wie diese Änderung zu machen und Vergangenheit, so dass ich dieses Verzeichnis nicht jedes Mal hinzufügen muss, aber ich werde versuchen, später zu aktualisieren, wenn ich das herausfinden werde.

-1

für Makefile Projekt vorhandenen Code. Schritt 1 check Kompilieren Sie alle Quellen mit -g -o0 Schritt 2 Verwenden Sie den gdbserver und arm-yourversion-gdb, die in Ihrer SDK- und gdb-Toolchain zur Verfügung gestellt werden.

0

Dies kann passieren, wenn Sie sowohl Cygwin und Mingw (oder eine andere Variante) haben. Wenn gcc von cygwin verwendet wird, um die Quelle zu kompilieren, haben Sie den cygwin-Pfad in der ausführbaren Datei. Wenn der Debugger von mingw stammt, kann gdb den cygwin-Pfad nicht interpretieren. Der einfachste Weg, dies zu lösen, ist, auf Run -> Debug Configurations -> Debugger zu gehen und den vollständigen Pfad zu cygwin gdb (C: \ cygwin64 \ bin \ gdb.exe) einzustellen. Das hat das Problem für mich gelöst.

0

Ich folgte @Andreas Fester Kommentar zu Debugger Registerkarte in Debug Konfigurationen Einstellungen, aber nicht finden Sie den "Debugger: gdb/mi", aber in der Registerkarte Quelle habe ich alle Elemente entfernt und fügte "Absolute Dateipfad" durch Klicken auf die "Add ..." Knopf auf der rechten Seite des Fensters. Das half mir bei diesem Problem