Доступ к символам отладки внутренней библиотеки проекта в Qt Creator?

У меня есть дерево проекта / исходного кода с проектами подкаталогов, которые выглядят следующим образом:

Qt Creator - Дерево исходного кода проекта

Идея в том, что Exec (тестирование) проект заключается в совершении звонков с оп (разделяемый объект) библиотечный проект — оба являются подпроектами, управляемыми корневым проектом gviewer.

Несмотря на то, что gviewer Проект установлен как Debug (с использованием GCC x86_64), каждый раз, когда я пытаюсь войти в конструктор или метод / функцию класса из оп сборка, отладчик сразу выплюнет разборку. Мне было трудно выяснить, является ли проблема в настройках проекта (из которых я смотрел и не мог понять, который параметр может быть изменен для решения проблемы) проблема в настройках отладчика (также рассматриваемая) или что-то, что происходит с файлами проекта.

common.pri файл включен в op.pro.

После просмотра Вот, и экспериментируя с различными представлениями, пытаясь загрузить символы во время отладки, я пришел к выводу, что я делаю что-то не так. Является ли это проблемой конфигурации отладки 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

главная точка входа

оп: disassembly — источник не загружен после вызова step into
на op::Log::OpenFile(...)

разборка

исходные пути отладчика — возиться с дорожками здесь, нет такой удачи; хотя я не уверен, правильно ли я использовал это

настройки отладки - исходные пути

1

Решение

В вашем .pro файле у вас есть это:

LIBS += -L../op -lop

Если я вас хорошо понял, то здесь вы связываете библиотеку, с которой у вас проблемы. Однако вы должны связать две его версии: отладочную версию для отладочной сборки вашего проекта и выпускную версию для выпускной версии вашего проекта. Я не знаю, под какой ОС вы работаете, но вот вам пример, чтобы вы могли понять:

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

Обратите внимание, что первая строка связывает библиотеку выпусков, если текущий проект создается как выпуск, а вторая строка связывает версию библиотеки отладки, если текущий проект создается как отладка.

1

Другие решения

В качестве дополнения к принятому ответу стоит отметить, что если в конфигурации пользователя используется Тень Строительство, мы можем перефразировать конфигурацию как:

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... дорожка.

0

По вопросам рекламы [email protected]