2012-04-03 10 views
2

Ich habe ein Problem mit gdb zu debuggen vlc.exe in Windows-Umgebung. Ich folge der Anleitung auf http://wiki.videolan.org/Win32Compile und kompiliert und verpackt VLC unter Linux.Loading Symboldatei für das Debugging Cross-kompilierten VLC (Mingw in Linux) -Projekt unter Windows-Umgebung (Cygwin)

Das Programm läuft gut und ich habe die Symboltabelle auch im Projektordner. Ich bin jedoch nicht in der Lage, den gdb laden die notwendigen Symboldateien zum Einrichten von Haltepunkt und Zeug.

Unter dem vlc-Ordner wird die Objektdatei unter wie

aufgeführt

./win32/*/*/*.o

und die ausführbare Datei in

./win32/vlc gespeichert -2.1.0-git/vlc.exe

"gdb vlc.exe" in Cygwin-Shell lädt nicht viel nützliche Symbole.

Ich versuchte Symbol-Tabelle Befehl, um eine bestimmte Symboldatei zu laden. Es lädt Datei und ich kann die Funktion in der Pause-Eingabeaufforderung sehen. Aber wenn ich das Programm laufen habe ich die Warnung:

Kann nicht Unterbrechungs einfügen 1.

Fehler beim Zugriff auf Speicheradresse 0x2800: Input/Output-Fehler.

Gibt es eine Möglichkeit, GDB mit den Symboldateien zu füttern, so dass ich es wie in Linux-Umgebung debuggen kann?

Hier ist ein kleiner Hintergrund, wenn jemand interessiert ist, warum mache ich das.

Ich studiere die VLC Codebase über seine Wrap über DXVA2-Schnittstelle. Das Projekt ist ziemlich groß und komplex mit vielen Funktionszeigern, die versuchen, eine C++ - Vererbung und -Einkapselung nachzuahmen, was es schwierig macht, sie zu verstehen.

Mein Zweck ist es, durch den VLC-Quellcode auf dem DXVA2 (Microsoft DirectX Video Acceleration 2) h264 Pfad, der nur auf Windows-Plattform läuft Schritt. AFAIK vlc hat keine IDE-Projektdatei, die ich zum Kompilieren und Debuggen verwenden könnte. Ich wähle Cross Compilation, weil die VLC Website es vorschlägt und ich dachte, wenn ich die Symboldatei, den Quellcode und die ausführbare Datei bekommen kann, kann ich sie debuggen.

Hilfe wird sehr geschätzt. Danke im Voraus.

Antwort

1

Ich fand die Lösung.

gdb muss wissen, wo die Symboldatei geladen werden soll. Dies kann mit der Pfadfunktion oder durch Hinzufügen der Symboldateien im Pfad erfolgen.

gdb muss auch wissen, wo die Quelldatei zu laden, die Verzeichnisfunktion kann getan werden oder angeben, wenn das Programm startet. Diese

ist, was ich tue:

Fügen Sie diese in meinem.bashrc:

PATH=$PATH:[vlc proj folder] 

export PATH 

Dann gdb beginnen wie:

gdb `find [vlc proj folder] -type d -printf '-d %p '` vlc.exe 

:)

Verwandte Themen