[neue erkenntnisse] DLL debuggen mit MinGW gdb
-
ich versuche grade, eine dll mit gdb zu debuggen, aber iwie klappt das net. Ich hab sowohl programm als auch dll mit debugging symbols gebaut, dann gdb auf das programm losgelassen, funktioniert auch soweit: Ich kann ordentlich da durch steppen und auch in die funktionen, die ich im programm selber definiert hab, hinein.
aber wenn ich dann auf eine funktion aus der dll komme und 'step' eingebe, verhält es sich, als hätte ich 'next' eingegeben: die funktion wird ausgeführt, nicht darein gesprungen.
Die Untervariablen der Objekte, die in der DLL definierter Typen sind, kann ich mir immerhin ansehen...Wie muss ich gdb einstellen, dass ich in die dll hinein debuggen kann, dafür mach ich das ja :-\
-
Hi,
mittlerweile krieg ich das bis auf einige beschränkungen hin (zu denen ich gleich noch komme). Dazu gehe ich wie folgt vor:- DLL und Programm bauen (natürlich mit debigging-symbolen : D )
- gdb mit dem Programm starten
- dll-symbols und directory für die dll angeben
- breakpoint auf den NAMEN einer dll-funktion setzen
- run
So. Da schimmert dann auch schon das problem durch: Ich muss den breakpoint auf den Namen setzen. Wenn ich datei:zeilennummer benutze, gibt er zwar die speicheradresse des dort definierten symbols an. Wenn ich info break eingebe, wird auch der korrekte name usw angezeigt, eben so, wie es nach o.g. methode auch aussieht.
Das Problem: Der breakpoint wird ignoriert. Das stört mich gewaltig. Kann man die breakpoints nicht auch nach datei:zeilennummer setzen?Das zweite Problem: Wenn ich dann gerade im Programm (nicht in den dll-funktionen) herum steppe, kann ich in lokale funktionen hineinsteppen (mit step). Mache ich das bei einer DLL funktion, wird drübergesteppt (wie im letzten post beschrieben).
Was mich irritiert: Wenn ich mich aufgrund eines Breakpoints bereits im stepping modus in einer dll-funktion befinde, kann ich auch ohne Probleme in die verwendeten dll-funktionen hineinsteppen.Noch ein wenig holprig für die benutzung, aber ich schöpfe hoffnung
weiß vielleicht einer, wie ich die restlichen Probleme aus der Welt schaffe?