Du bist nicht angemeldet.

Stilllegung des Forums
Das Forum wurde am 05.06.2023 nach über 20 Jahren stillgelegt (weitere Informationen und ein kleiner Rückblick).
Registrierungen, Anmeldungen und Postings sind nicht mehr möglich. Öffentliche Inhalte sind weiterhin zugänglich.
Das Team von spieleprogrammierer.de bedankt sich bei der Community für die vielen schönen Jahre.
Wenn du eine deutschsprachige Spieleentwickler-Community suchst, schau doch mal im Discord und auf ZFX vorbei!

Werbeanzeige

1

16.06.2014, 12:12

Statisch gelinkte library debuggen

Hallo,

wie funktioniert das? Die library ist als foo.lib kompiliert und statisch eingebunden, im selben Ordner liegt auch eine foo.pdb, d.h. die Debug-Symbole müssten dann doch auch vorhanden sein?! Wenn ich nun eine *.c-Datei aus dem gleichen Ordner in meinem VStudio-Projekt öffne und versuche, einen Breakpoint zu setzen, wird der aber nicht angesprungen bzw. schon ausgegraut angezeigt. Mache ich da was grundsätzlich falsch?

Beiträge: 1 223

Wohnort: Deutschland Bayern

Beruf: Schüler

  • Private Nachricht senden

2

16.06.2014, 12:16

Funktioniert bei mir problemlos.
Hast du beide Projekte in der Projektmappe? Irgendeine beliebige Datei zu öffnen, wird vielleicht nicht mit dem zu debuggenden Code in Verbindung gebracht. Die Pfade sollten sich auch nicht seit dem Erstellen der Lib geändert haben

Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von »Spiele Programmierer« (16.06.2014, 12:29)


BlueCobold

Community-Fossil

Beiträge: 10 738

Beruf: Teamleiter Mobile Applikationen & Senior Software Engineer

  • Private Nachricht senden

3

16.06.2014, 12:33

Wenn sie nicht in derselben Mappe liegen, kannst Du auch per F11 in eine der Funktionen reinspringen, dass sollte VS den Source laden und Du kannst dadrin den Breakpoint dann setzen.
Teamleiter von Rickety Racquet (ehemals das "Foren-Projekt") und von Marble Theory

Willkommen auf SPPRO, auch dir wird man zu Unity oder zur Unreal-Engine raten, ganz bestimmt.[/Sarkasmus]

4

16.06.2014, 12:33

Das ausgrauen passiert, wenn der Quellcode deiner C Datei nicht mit dem Code in der lib übereinstimmt. Du hast da scheinbar Änderungen vorgenommen, die in der lib nicht gebuilded wurden.

Ein breakpoint in einer nicht zugehörigen Datei funktioniert ebenfalls nicht.

Alternativ kannst du in den Einstellungen der projektmappe unter dem Punkt "debug source files" o. Ä. Pfade festlegen, in denen visual studio nach den source files sucht. Sollten diese sources sowieso bereits in Projekt sein, findet vs diese automatisch.
EnvisionGame(); EnableGame(); AchieveGame(); - Visionen kann man viele haben. Sie umzusetzen und auf das Ergebnis stolz zu sein ist die eigentliche Kunst.

Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von »iSmokiieZz« (16.06.2014, 12:40)


5

16.06.2014, 13:59

Nein, die lib liegt nicht direkt in meiner Projektmappe. Die wird aber auch rein über Kommandozeile/Make-Skripte gebaut und kein VStudio-Projekt angelegt. Code und Pfade hab ich auch nicht geändert bzw, selbst wenn, mittlerweile noch mal neu kompiliert.
Wenn ich versuche, in den Aufruf zu steppen, steppt er einfach drüber. Ich hab jetzt auch versucht, den Pfad als additional reference einzutragen (unter MSVC 2005 gibts die Debug-Source-Paths noch nicht), aber das Problem bleibt.

Ich hab auch mal versucht, die lib dynamisch einzubinden, denn mit der Kompilierung wird auch eine tifflib_i.lib angelegt, mit der man die dll dann nutzen kann. Ich nutze aber auch eine Funktion TiffStreamOpen, die anscheinend nicht in der dll vorhanden ist und dann unresolved externals wirft. Ich habe dann noch die tif_stream.cxx mit der Definition einfach in mein Projekt hinzugefügt, damit sie mitkompiliert wird. Dann gabs es erst nen Fehler, weil er das Manifest-File nicht schreiben konnte "falscher Parameter" und nach nem kompletten Projekt-Rebuild erzählt er mir beim Starten, dass eine MSVCR80.dll nicht gefunden werden könnte, also eine, die bei der Runtime dabei ist. wtf... 8|

6

16.06.2014, 14:35

Doch, in VS 2005 gab es diese Option.
http://blogs.msdn.com/b/davidklinems/arc…/09/463228.aspx

Es ist aber ehrlich gesagt nicht mehr zeitgemäß, noch mit der MSVC 2005 rumzufuchteln ^^
EnvisionGame(); EnableGame(); AchieveGame(); - Visionen kann man viele haben. Sie umzusetzen und auf das Ergebnis stolz zu sein ist die eigentliche Kunst.

7

16.06.2014, 14:51

Stimmt, ich hab nur das Projekt, nicht die Solution angeklickt. Ändert aber auch nichts.
Kann ich denn irgendwie überprüfen, dass er das pdb-file richtig geladen hat? Wenn man es über ne dll einbindet, steht ja zumindest '(No) symbols loaded' auf der console, bei statischer Bindung aber nicht.

Beiträge: 1 223

Wohnort: Deutschland Bayern

Beruf: Schüler

  • Private Nachricht senden

8

16.06.2014, 15:02

Ich denke eher das die Verbindung zu den Quelldateien nicht stimmt.
Ich habe immer einfach alle Projekte in einer Projektmappe und auch gleich die Projektabhängigkeiten richtig konfiguriert.
PDPs braucht man meines Wissens nach nicht. Zumindest habe ich keine. Die Debugsymbole sind ja direkt in der Lib, falls du den Linker oder Compiler nicht angewiesen hast, diese zu entfernen. Und außer die Debugsymbole abzuschalten, kann man da auch eigentlich nicht wirklich viel falsch machen.

Ich würde außerdem mal den Compiler wechseln. 2005 ist schon wirklich ein bisschen sehr alt. Modernes C++ ist da noch nicht mal möglich.

Werbeanzeige