次のようなサブディレクトリ プロジェクトを含むプロジェクト/ソース ツリーがあります。
アイデアは、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
opstep into
: 逆アセンブリ - を呼び出した後にソースがロードされていません
op::Log::OpenFile(...)
デバッガーのソース パス- ここでパスをいじっていますが、そのような運はありません。これを正しく使用しているかどうかはわかりませんが