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

3
我正在构建一个应用程序,在Linux上使用qtcreator动态加载共享库插件。
插件在单独的文件夹中构建,然后复制到主应用程序插件文件夹中。应用程序在启动时查找插件并加载它们。
插件和可执行文件都在单独的CMake项目中构建(使用Debug配置),这些项目在我的qtcreator会话中加载。
似乎调试器无法将库与源代码文件链接起来。这有两个影响:
- 忽略我在插件文件上设置的断点 - 如果我在插件代码中设置了“代码断点”(即asm int 3),调试器会向我显示反汇编(而不是源代码)。
我该如何告诉调试器查找正确的源文件?

我认为你无法实现你期望的功能(即在预编译库中命中库源文件中的“断点”)。如果你想要调试该库,你应该运行库项目 - 或许使用Qt编写一些单元测试?否则,你可以在库源代码中添加一些详细/打印信息... - floppy12
可能是重复问题:https://dev59.com/JHnZa4cB1Zd3GeqPus_H - jpo38
1个回答

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

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接