在Qt Creator中访问内部项目库的调试符号?

时间:2013-02-11 07:43:09

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

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

Qt Creator - Project Source Tree

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

尽管将 gviewer 项目设置为Debug(使用GCC x86_64),但只要我尝试从 op 构建步入构造函数或类方法/函数,调试器将立即吐出反汇编。我一直很难弄清楚问题是否是项目设置(我已经看过了,并且无法弄清楚哪些设置可以更改以解决问题)调试器设置中的问题(也看了),或者项目文件正在发生的事情。

op.pro。

包含common.pri文件

在查看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

main entry point

op :反汇编 - 调用step into 后未加载任何来源    op::Log::OpenFile(...)

disassembly

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

debug settings - source paths

2 个答案:

答案 0 :(得分:1)

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

LIBS += -L../op -lop

如果我理解得很好,那么您就可以链接您遇到问题的图书馆了。但是,您应该链接它的两个版本,项目的调试版本的调试版本,以及项目发布版本的发行版本。我不知道你有什么操作系统,但这里有一个例子给你,所以你可以得到这个想法:

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

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

答案 1 :(得分:0)

作为对已接受答案的补充,值得注意的是,如果用户的配置使用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...路径中。