Important: Please read the Qt Code of Conduct - https://forum.qt.io/topic/113070/qt-code-of-conduct

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


  • Lifetime Qt Champion

    @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.


  • Lifetime Qt Champion

    @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.pro

    TARGET=TestLib
    TEMPLATE=lib
    DEFINES += TESTLIB_LIBRARY
    DESTDIR = ../lib
    

    Projekt.pro

    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.


  • Lifetime Qt Champion

    @Grisu Gibt es einen bestimmten Grund warum du die Lib im Build-Verzeichnis löschen willst und dann 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.


Log in to reply