【问题标题】:Accessing internal project library's debugging symbols in Qt Creator?在 Qt Creator 中访问内部项目库的调试符号?
【发布时间】:2013-02-11 07:43:09
【问题描述】:

我有一个带有子目录项目的项目/源代码树,如下所示:

这个想法是 exec(测试)项目是从 op(共享对象)库项目进行调用 - 两者都是由根项目gviewer

尽管将 gviewer 项目设置为调试(使用 GCC x86_64),但无论何时我尝试从 op 构建中进入构造函数或类方法/函数,调试器将立即吐出反汇编。我一直很难弄清楚问题是否出在项目设置上(我已经查看了其中的问题,并且无法确定可以更改哪个设置来解决问题)调试器设置中的问题(也已查看),或项目文件发生的问题。

common.pri 文件包含在 op.pro 中。

在查看here 并尝试各种视图并尝试在调试时加载符号后,我得出的结论是我做错了。无论这是 GDB 调试配置问题、.pro 文件问题还是 QtCreator 问题,我都无法理解。

如果这里的任何人有使用内部项目库(在本例中为共享对象)加载调试符号的经验,我们将不胜感激。谢谢。


项目文件:

gviewer.pro

TEMPLATE = subdirs
SUBDIRS  = \
    source/op

CONFIG += ordered
SUBDIRS += source/exec

common.pri

INCLUDEPATH += . ..

TEMPLATE = lib

CONFIG -= qt app_bundle

NO_ERR_FLAGS = -Wno-write-strings -Wno-return-type -Wno-unused-parameter

debug:QMAKE_CXXFLAGS_DEBUG += -Wall -Werror -std=c++11 $$NO_ERR_FLAGS -g

DEFINES += OP_DEBUG OP_PLATFORM_X86

LIBS += -lGL -lGLU -lGLEW -lglfw

op.pro

! include(../common.pri) {
    error( Couldn't find the common.pri file! )
}

HEADERS += \
    debug/glout.hpp \
    math/matrix.hpp \
    math/math.hpp \
    math/glm_incl.hpp \
    io/log.hpp

SOURCES += \
    debug/glout.cpp \
    math/matrix.cpp \
    io/log.cpp

exec.pro

INCLUDEPATH += ../

TEMPLATE = app
CONFIG += console
CONFIG -= app_bundle qt

SOURCES += main.cpp

LIBS += -L../op -lop

DESTDIR_TARGET = ../../

更多图片:

exec:入口点 - main.cpp

op:反汇编 - 调用 step into
op::Log::OpenFile(...)

后未加载源

调试器源路径 - 在这里摆弄路径,没有这样的运气;虽然我不确定我是否正确使用了这个

【问题讨论】:

    标签: c++ linux gdb qt-creator debug-symbols


    【解决方案1】:

    在你的 .pro 文件中你有这个:

    LIBS += -L../op -lop
    

    如果我理解你的话,这就是你链接你有问题的库的地方。但是,您应该链接它的两个版本,调试版本用于项目的调试版本,发布版本用于项目的发布版本。我不知道您使用的是什么操作系统,但这里有一个示例供您参考:

    unix:CONFIG(release): LIBS += -L$$PWD/../../Filters/release/ -lFilters
    unix:CONFIG(debug): LIBS += -L$$PWD/../../Filters/debug/ -lFilters
    

    请注意,如果当前项目正在构建为发布版本,则第一行链接发布库,如果当前项目正在构建为调试版本,则第二行链接调试库版本。

    【讨论】:

      【解决方案2】:

      作为对已接受答案的补充,值得注意的是,如果用户的配置使用Shadow Building,我们可以将配置改写为:

      unix:CONFIG(release): LIBS += -L$$PWD/../../path/to/release/folder/ -lLibrary
      unix:CONFIG(debug):   LIBS += -L$$PWD/../../path/to/debug/folder/   -lLibrary
      

      其中/path/to/release|debug/folder 的位置与源|项目文件目录处于同一级别,-lLibrary 是要链接的二进制库,位于指定的-L... 路径中。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2018-05-02
        • 2021-01-12
        • 1970-01-01
        • 2023-02-08
        相关资源
        最近更新 更多