我有一个带有子目录项目的项目/源代码树,如下所示:
这个想法是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
执行程序
INCLUDEPATH += ../
TEMPLATE = app
CONFIG += console
CONFIG -= app_bundle qt
SOURCES += main.cpp
LIBS += -L../op -lop
DESTDIR_TARGET = ../../
一些进一步的图像:
exec : 入口点 - main.cpp
opstep into
: 反汇编 - 调用后没有加载源
op::Log::OpenFile(...)
调试器源路径- 在这里摆弄路径,没有这样的运气;虽然我不确定我是否正确使用它