Shared Libraries Debuggen ohne Build Ergebnisse
-
Hallo zusammen,
ich glaube ich habe da grundsätzlich etwas nicht verstanden.
Eine Kurze Erklärung des Projekts:
+
|- TestLib/TestLib.pro (Das Library Projekt)
|- lib/libTestlib.so (In lib wird der erzeugt so abgelegt)
|- Testprojekt/Projekt.pro (Das Projekt, das die lib aufruft.
|- build-Testlib...-Debug (Die Buildergebnisse aus TestLib)
|- build-Testprojekt...-Debug (Die Builderebnisse aus Testprojekt)Solange "build-Testlib..." existiert, kann ich die Lib debuggen. Sobald ich das Verzeichnis lösche, funktioniert das Debuggen nicht mehr.
Ich dachte die Debug-Infos wären in der Library eingebettet? Liege ich da falsch?Ich hoffe einer von euch kann da Licht ins dunkele bringen :-)
Sebastian
-
@Grisu said in Shared Libraries Debuggen ohne Build Ergebnisse:
Sobald ich das Verzeichnis lösche, funktioniert das Debuggen nicht mehr
Wie soll es funktionieren wenn die Lib nicht mehr da ist?
Oder verstehe ich etwas nicht?"Ich dachte die Debug-Infos wären in der Library eingebettet?" - ja, aber wenn du die Lib löscht sind auch die Debug-Infos weg. Und dein Test-Projekt kann ohne die Lib auch gar nicht starten.
-
Hi,
das "lib"-Verzeichnis mit der libTestlib.so bleibt ja bestehen. Die Anwendung läuft auch.
Ich kann nur nicht debuggen, wenn ich das build-Testlib... -Verzeichnis lösche. -
@Grisu said in Shared Libraries Debuggen ohne Build Ergebnisse:
das "lib"-Verzeichnis mit der libTestlib.so
Was ist das für ein Verzwichnis?! Hast du es manuel angelegt?
Build Artefakte landen ja im "build-Testlib..." Verzeichnis, inclusive exe und Lib.
Wenn du deine app startest dann wird die exe aus "build-Testlib..." gestartet und die nutzt dann die Libs, die ebenfalls im Build-Verzeichnis liegen. Wenn also dein Test-Projekt gegen die Lib linkt dann sollte im "build-Testlib..." alles liegen was zum Ausführen benötigt wird. Inclusive Test-Exe und der Lib. Es ist völlig egal was in diesem "Lib" verzeichnis liegt. -
Hi,
das ist schon korrekt. Aber ich lasse die TestLib Build-Ergebnisse in das "lib"-Verzeichnis ausliefern.
So habe ich später alle Libs an einer Stelle (Insgesamt sind das 9 Libs) und kann die einfacher auf meinen Raspberry ausliefern.
TestLib.proTARGET=TestLib TEMPLATE=lib DEFINES += TESTLIB_LIBRARY DESTDIR = ../lib
TARGET = Testprojekt TEMPLATE = app LIBS +=-L../lib/ -lTestLib INCLUDEPATH +=../TestLib/header/
Ich habe auch schon gedacht, es liegt am Remote Debuggen. Aber ich bekomme keinen Fehler in dem Debuger-Log, dass eine .so Datei nicht gefunden wird. Und wie gesagt, solange die restlichen technischen Build-Erzeugnisse auch noch das sind, funktioniert das debuggen.
-
Eigentlich lösche ich die nicht. Ich habe nur bei meinen ganzen Projekten verschiedene Strukturen und dann liegt teilweise das build-Verzeichnis nicht im gleichen Ordner wie die anderen.
+(root)
|-Projekt_A
| |- ProjektA1 (mit ProjektA1.pro erzeugt A1Lib verwendet Testlib)
| |- ProjektA2 (mit ProjektA2.pro verwendet A1Lib und Testlib)
|-Projekt_B
| |- ProjektB1 (mit ProjektB2.pro verwendet Testlib)
|-Testlib (mit Testlib.pro)
|-lib (mit den Libs)Jetzt liegt das Build-Verzeichnis für Testlib unter (root).
Die von ProjektA1/A2 unter Projekt_A
Und schon funktioniert das Debuggen von Testlib aus Projekt_A1 nicht mehr (also Quasi wie gelöscht)Ich will die Ergebnisse in einem Lib-Verzeichnis speichern, da ich nicht jedes Mal den Pfad zur Lib im Pro File anpassen möchte (Wechsel der Qt-Version oder zwischen Release/Debug).
Vielleicht gibt es da aber auch eine andere Lösung für.