Breakpoint in lib



  • Hallo,

    ich habe eine Frage zum debuggen einer Anwendung (Visual Studio 2005), weiß aber nicht sicher, ob sie in diesem Forum richtig aufgehoben ist. Ggf. bitte verschieben.

    Folgendes Problem: ich setze in einer Applikation eine Bibliothek (*.lib, statisch, C++) ein, zu der ich auch den Quellcode habe. Jetzt würde ich gerne einen Breakpoint innerhalb einer Methode einer Klasse dieser Bibliothek setzen, um mir anzuschauen, was dort passiert. Allerdings ist ja nur der Header (nicht die Source-Datei) Teil meines Projekts und ich bin mir nicht ganz im klaren darüber, wie ich dazu vorgehe.

    Danke vorab!



  • Du öffnest einfach die passende Source-Datei und setzt einen Breakpoint.



  • Das ging aber schnell, vielen Dank!

    Da habe ich mir offensichtlich zu viele Gedanken gemacht...

    Aber ganz einleuchtend ist mir das nicht, muss ich zugeben. Woher kennt das Visual Studio diese Verbindung; die Source-Datei kann ja an völlig anderer Stelle auf meinem Rechner liegen. Mache ich durch das Öffnen sozusagen den Speicherort bekannt und es wird in allen geöffneten Dokumenten nach einer passenden Funktionsdefinition gesucht?
    Prinzipiell könnte ich ja dann eine beliebige Source-Datei öffnen, den zur interessierenden Methode gehörenden Header includieren, eine völlig wirre Funktionsdefinition hinzufügen und dort auch einen Breakpoint reinsetzen...? Oder wird das irgendwie mit dem Inhalt der lib abgeglichen?

    Warum komme ich dann per Rechtsklick auf die Deklaration im Header (Go to definition...) weder vor noch nach dem Öffnen der Datei an die passende Stelle...

    Vermutlich funktioniert das alles auch nur mit einer debug-Version der lib?

    Das würde mich jetzt schon irgendwie interessieren...(aber ich sage auch so noch einmal danke für die Hilfe).



  • In den Debug-Daten der LIB ist der Speicherort (und auch das Datum) der SOurce-Datei vermerkt. Somit kann VS einfach feststellen, welche Datei wohin gehört.

    Du kannst auch in einer Funktion Deiner EXE einen Breakpoint setzen und dann in die LIB-Funktion "reindebuggen" (F11 anstatt F10); dann wird der Source automatisch geladen, bzw. wenn er nicht auffindbar ist, kannst Du ihn auch selber auswählen.



  • Jochen Kalmbach schrieb:

    In den Debug-Daten der LIB ist der Speicherort (und auch das Datum) der SOurce-Datei vermerkt. Somit kann VS einfach feststellen, welche Datei wohin gehört.

    Dadurch wird es verständlich. Danke für die Erläuterung!

    Jochen Kalmbach schrieb:

    Du kannst auch in einer Funktion Deiner EXE einen Breakpoint setzen und dann in die LIB-Funktion "reindebuggen" (F11 anstatt F10); dann wird der Source automatisch geladen, bzw. wenn er nicht auffindbar ist, kannst Du ihn auch selber auswählen.

    Das war mir bewusst, allerdings dachte ich, dass in diesem Fall die Source-Datei aus der lib heraus "wiederhergestellt" wird und nicht, dass der tatsächliche Speicherort dort bekannt ist.
    Allerdings kann dieses Verfahren natürlich mühsam sein, wenn man "tief hinein" muss in die lib (Verschachtelung). Und um schnell zu überprüfen, ob eine Methode überhaupt aufgerufen wird, ist die erste Variante auch geeigneter.

    Jedenfalls ist mir jetzt einiges klarer geworden. Vielen Dank für die Hilfe!


Log in to reply