使用 QtCreator 在 c++ 中调试动态加载的库

Debugging a dynamically-loaded library in c++ with QtCreator

本文关键字:动态 加载 调试 QtCreator c++ 使用      更新时间:2023-10-16

我正在构建一个应用程序,该应用程序在Linux上使用qtcreator动态加载共享库插件。

该插件构建在一个单独的文件夹中,然后复制到主应用程序插件文件夹中。应用程序在启动时查找插件并加载它们。

插件和可执行文件都构建在单独的 CMake 项目中(在调试配置中),这些项目在我的 qtcreator 会话中加载。

调试器似乎无法将库与源代码文件链接。这有两个效果* 我放在插件文件上的断点被忽略* 如果我放一个"代码断点"(即 asm int 3 )在插件代码中,调试器向我显示disasembly(而不是源代码)。

如何告诉调试器查找正确的源文件?

您可以根据函数名称等在库中设置断点。 要查看断点的源代码,必须使用调试符号(例如 qmake CONFIG+=debug)编译库,并且源代码在编译后不能移动。 我相信打破文件和行号也需要来源。如果您仍然遇到问题,我会尝试将源目录添加到 INCLUDEPATH,或在运行时在 QtCreator 中加载这两个项目。