Eclipse/MinGW/CDT/GDB und Probleme mit Debuggen
Habe ich einige C++ - code und versuchen Sie es zu Debuggen.
main.cpp:
#include <iostream>
using namespace std;
int main() {
graph<int> a;
a.add(1);
a.addEdge(1,2);
std::vector<int> answ = a.getAdjacent(1);
for (unsigned int i = 0; i < answ.size(); i++)
std::cout<<answ[i]<<std::endl;
return 0;
}
Habe ich einen Haltepunkt auf "graph a;". Aber wenn ich debugging starten, bekomme ich:
The target endianness is set automatically (currently little endian)
No source file named C:\Users\home\workspace\graphcpp\main.cpp.
[New Thread 3552.0xdc8]
Was ist das problem?
Dieser code scheint nicht vollständig (wo kommt der
Gleiche problem mit
Vereinfachen Sie Ihren WEG so viel wie möglich (vorübergehend). Ich habe gesehen, eclipse Probleme mit Gültiger Pfad es nicht gerne. Dies ist ein makefile-Projekt? Versuchen Sie, sich auf Pfade in msys Weg (/c/users/home...).
graph
Vorlage her?), da aber der Fehler scheint nicht im Zusammenhang mit dem Inhalt der Datei, den ganzen Grafik-Kram lenkt ab; ich denke, eine minimale code wäre "int main() { /*line-break*/ return 0; /*line-break*/ }
" und setzen Sie einen Haltepunkt auf Zeile "return 0;
".Gleiche problem mit
int main() { /*line-break*/ return 0; /*line-break*/ }
Vereinfachen Sie Ihren WEG so viel wie möglich (vorübergehend). Ich habe gesehen, eclipse Probleme mit Gültiger Pfad es nicht gerne. Dies ist ein makefile-Projekt? Versuchen Sie, sich auf Pfade in msys Weg (/c/users/home...).
InformationsquelleAutor michaeluskov | 2013-11-08
Du musst angemeldet sein, um einen Kommentar abzugeben.
Dies scheint eine relativ Häufig auftretende Problem bei der Verwendung von eclipse +cdt mit gdb. Ändern des Standard-launcher von GDB (DSF) Prozess Erstellen zu Standard-Prozess Erstellen scheint die Frage zu lösen, die meiste Zeit.
Diese option finden Sie unter Einstellungen-> "Ausführen/Debug" ->Start->Standard-Trägerraketen:
Auch sicherstellen, dass Sie die Kompilierung mit
-g
debug-Informationen aktiviert.standard wurde umbenannt in "legacy". bugs.eclipse.org/bugs/show_bug.cgi?id=426586
Danke, das löste das Problem für mich, aber ich schweife warum Dsf funktioniert nicht richtig
Ich habe ein Projekt von
Makefile with existing code
und ich habe das gleiche problem, aber ich kann nicht finden diese option im Menü? Ist es in derMakefile
diesem setup, oder bin ich etwas fehlt?Vielleicht geben Luna SR2 Version zu versuchen-es kommt verpackt mit CDT 8.6.0. Ich habe gerade überprüft es heraus, und das setup ist das gleiche, außer seiner Umbenennung in
Legacy Create Process
als tzafrir hingewiesen. Stellen Sie sicher, Sie haben[Debug]
ausgewählt in der "Start-Typ/ - Modus' sonst 'Bevorzugten Launcher' leer sein wird.InformationsquelleAutor greatwolf
Es scheint, dass erst mit dem hinzufügen der standard-Parameter, um Ihre 'main ()' - Funktion ist genug (ich bemerkte, dass Sie nicht mit Parameter in der 'main()':
überprüfen Sie diese link
Scheint es, dass gcc 4.1.0 (ie. dass in SUSE 10.1 32-bit) ist eine Optimierung, wo, wenn Sie nicht verwenden Sie argc und argv in die Körper von main() die Symbole sind nicht in der Binär - (auch mit -g-und ohne spezielle Optimierung eingeschaltet). Die 64-bit-compiler nicht tun das übrigens.
Erhalten Sie die "Cannot access memory at address 0x0" aus dem gdb Befehlszeile, wenn Sie einfach "break main" und drucken argc in einem Programm, in dem nicht argc/argv (und wurde kompiliert mit gcc 4.1.0). Ich Stelle fest, Ihr Beispiel nicht, verwenden Sie argc/argv.
Dies ist wahr für C-oder C++ - Kompilierung.
Eclipse ist vermutlich verwirrt durch diesen Fehler in irgendeiner Weise, wenn es Sie trifft die erste Pause. Ich war auch immer die Unfähigkeit zu stoppen, weitere Haltepunkte bis ich zusätzlichen code zum Verweis argc/argv-oder re-deklarieren main (in C++) als "int main(int, char *[])" so, dass Eclipse nicht erwartet, dass diese Symbole.
Da ist noch ein Fehler in der gdb-Ausgabe-Fenster (kein symbol "neu" im aktuellen Kontext?), aber können Haltepunkte gesetzt werden.
HTH,
-nick
InformationsquelleAutor Jorge Gil