2009-08-13 3 views
3

Ich versuche C++ - Code mit Eclipse Galileo auf meinem MacBook Pro unter Mac OS X v10.5 (Leopard) zu debuggen. Das versuche ich zum ersten Mal. Ich habe ein kompliziertes C++ Programm, das ich debuggen möchte, aber die Dinge zu testen, habe ich versucht, einfach zu debuggen und Schritt durch das folgende:Fehlerbehebung bei C++ mit Eclipse Galileo unter Mac

#include <iostream> 
using namespace std; 

int main() 
{ 
    int x = 0; 
    cout << x << endl; 

    x = 54; 
    cout << x << endl; 

    return 0; 
} 

ich das Debug-Symbol geklickt, sagte ihm GDB (DSF verwenden) Erstellen Sie den Prozessstart und starten Sie den Schritt durch den Code. Ich wollte in der Lage sein, den Wert von x zu überwachen, also öffnete ich das Variablenfenster und schaute zu. Anfangs war es 4096 - vermutlich etwas Müllwert. Sobald ich die nächste Zeile getroffen, wo sie den Wert gezeigt hatte, zeigt nun die folgende Fehlermeldung:

Failed to execute MI command: 
-var-update 1 var1 
Error message from debugger back end: 
Variable object not found 

ich das nicht drum herum, um herauszufinden, oder scheinen, kann. Und ein paar Google-Suchanfragen wurden knochentrocken, auch ohne den Hinweis auf eine Spur.


Lösung: Wie drhirsch unten erwähnt, verwenden die Standard-Prozessstart anstelle des GDB erstellen Prozessstart erstellen. (Dies ist eigentlich ein Workaround und keine echte Lösung, aber es funktionierte für mindestens zwei von uns.)

+0

hi, ich bekomme den gleichen Fehler Wie erhalten Sie auf dem Bildschirm die Fehlerausgabe "Failed to execute .."? Ich habe nicht einmal eine Info .... – flow

+0

Ok, im Moment, mit/opt/local/bin/fsf-gdb was Version 7.1 ist, scheint den Trick zu tun! Ich habe es nicht ausgiebig getestet, aber ich kann Breakpoints in sehr unterschiedlichen Funktionen verwenden, und das Programm stoppt während des Debuggens. – flow

+0

Haben Sie mit Debug-Informationen kompiliert und die ausführbare Datei nicht entfernt? – steve

Antwort

5

Nach meiner Erfahrung ist der gdb/dsf Launcher immer noch ziemlich unbrauchbar. Ich kann es nicht bekommen, um Variablen zu zeigen, es scheint immer noch sehr fehlerhaft.

Haben Sie den Standard Create Process Launcher versucht? Für mich funktioniert das gut.

+0

Weißt du, ich habe ehrlich versucht, zu diesem Thema zu wechseln und habe einen völlig anderen Anwendungsfehler bekommen. Wie auch immer, auf Ihren Vorschlag hin habe ich es wieder versucht und ich weiß es ... es funktioniert! Vielen Dank! –

+0

Ich habe Eclipse seitdem vielleicht neu gestartet. Das könnte der Grund sein. –

0

In Zukunft könnten Sie auch versuchen, Xcode (nur zum debuggen) - ziehen Sie alle Dateien, um sie in ein neues Projekt zu importieren, aber nicht kompilieren. Öffnen Sie stattdessen das Debugger-Fenster und hängen Sie es an Ihren laufenden Prozess an.

+0

es ist nicht sehr praktisch, zwei IDEs zu verwenden, würde ich sagen, – flow

0

Das gleiche Problem, aber ich könnte einen Weg gefunden haben. In Eclipse, unter den Projekteigenschaften, in Run/Debug Einstellungen, löschte ich die Startkonfigurationen und führte den Debugger erneut aus.

An diesem Punkt hat alles korrekt funktioniert, obwohl es mindestens 10 Sekunden dauert, den Debugger zu starten, wenn ich modifiziere. Ich denke, es hat mit einer Kombination der Debugging-Eigenschaften und der Launcher-Konfiguration zu tun.

2

Dies scheint immer noch ein Problem ohne eine zuverlässig gute Antwort zu sein, abgesehen von einer anderen IDE als Eclipse.

Ich habe sowohl den DSF Create Process Launcher als auch die Standard Create Process Launcher-Varianten ausprobiert, aber beides führt nicht zu einer erfolgreichen Debuggerfahrung. Der GDB-Debugger wird auf beide Arten gestartet, aber Breakpoints werden nicht ordnungsgemäß behandelt (in einigen Fällen nicht aufgelöst), und fast keine Variablenwerte können inspiziert/nachverfolgt werden.

Hier ist, was Software verwende ich:

  • Eclipse-3.5.2 (Galileo), 64-Bit-Cocoa-Version
  • Eclipse-C/C++ Entwicklungstools 6.0.2.2
  • Mac OS X 10.6 0,3 (Snow Leopard)
  • GDB 6.3.5 (Apple-Version, die Schiffe mit Xcode)

ich auch GDB 7.1 Sourcen habe versucht seit ab 7.0 es soll native x86/x86_64 Darwin-Unterstützung haben. Es baut gut auf und startet OK über die Befehlszeile, aber es gibt verschiedene Probleme, wenn ich versuche, es aus Eclipse zu starten. Diese scheinen mit den Änderungen in Zusammenhang zu stehen, die Apple kürzlich vorgenommen hat, um zu ermitteln, wie der taskgesteuerte Mechanismus funktioniert, um Debuggern die Verbindung zu Prozessen zu ermöglichen. Der folgende Fehler ist typisch für diese:

Target request failed: Unable to find Mach task port for process-id 88283: 
(os/kern) failure (0x5).\n (please check gdb is codesigned - see taskgated(8)). 

Verschiedene Quellen im Web zeigen, dass Apple ihr eigenes spezielles Patches in GDB verwendet 6.3.5 Mac OS X zu unterstützen, jedoch ist dies eine wirklich alte Code-Basis (2004) . Umgekehrt weisen andere Webquellen darauf hin, dass das Eclipse DSF-Debugger-Framework GDB-Befehle benötigt, die erst ab GDB 6.6 (circa 2006?) Erscheinen.

Ich war schon überall in den Eclipse-Foren, habe aber keine Anzeichen für eine Lösung für dieses Problem gefunden. Es sieht so aus, als ob fast niemand im Eclipse CDT-Entwicklungsteam Mac OS X verwendet. Daher versuchen sie nur selten, ihre Änderungen auf dieser Plattform zu testen.

EDIT UPDATE: Zusätzlich zu den oben genannten, ich habe alle nach dem Stand der beschriebenen Tests (GDB-Versionen 6.3.5 und 7.1) mit einem Entwickler bauen Eclipse Helios 3.6 RC3 (IDE für C/C++ Entwickler erneut versucht), die CDT 7.0 enthält. Alle genannten Probleme wurden gemeldet. Eclipse CDT-Debugging unter Mac OS X Snow Leopard ist immer noch nicht funktionsfähig.

Kennt jemand etwas anderes und/oder eine zuverlässige Eclipse-basierte Lösung für das oben beschriebene Szenario?

+0

Joel, Sie können dies als Ihre eigene Frage veröffentlichen möchten. Drhirschs Empfehlung, den Standard-Launcher einfach zu benutzen, funktionierte für mich sehr gut.Zwei Upvotes weisen darauf hin, dass es auch anderen geholfen haben könnte, aber basierend auf dem Feedback auf dieser Seite scheint es nicht jedem zu helfen. Vielleicht verdient dieses Thema eine andere Frage von jemandem wie Ihnen, der das Problem immer noch erlebt. –

+0

@speedmetal - Danke für den Vorschlag; Ich kann das noch tun, da das Problem für mich immer noch existiert - ich habe stattdessen XCode verwendet. Ich werde wahrscheinlich zuerst versuchen, in einem der Eclipse-Foren zu posten. –

+0

Ich habe das gleiche Problem, haben Sie eine neue Lösung gefunden? – flow

0

Aktualisieren Sie auf die veröffentlichte Version von Eclipse 3.6 (Helios) und verwenden Sie den DSF/GDB Create Launcher. Es wurde viel getan, um die Feature-Parität des DSF/GDB-Frameworks auf nutzbare Level für Eclipse 3.6 (Helios) zu bringen. Das Debuggen funktioniert jetzt gut unter OS X 10.5 und 10.6 mit Eclipse CDT 3.6 Helios.

+0

Hallo Mike, könnten Sie uns sagen, welche Debug-Einstellung verwenden Sie? – flow

0

OK, im Moment, mit /opt/local/bin/fsf-gdb, die Version 7.1 ist, scheint den Trick zu tun! Ich habe es nicht ausgiebig getestet, aber ich kann Haltepunkte in sehr unterschiedlichen Funktionen verwenden, und das Programm stoppt während des Debuggens.

1

Ich hatte ähnliche Probleme mit mehreren Versionen von Eclipse auf Ubuntu. Eine Lösung, die oft für mich funktioniert hat, ist die Verwendung der GDB Version 6.6 anstelle der neuesten Versionen.

Verwandte Themen