本文介绍了如何在Linux的QTCreator中设置用dlopen打开的共享库的断点的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!
问题描述
我正在尝试使用QTCreator调试我的共享库,该库由dlopen和dlsym调用。Qt调试器未在共享库中的断点处停止。
当我使用GDB运行我的应用程序时,它工作正常。
SO有调试符号。
如何让QTCreator调试我的应用?
谢谢。
更新:
我创建了一个GDB启动脚本,其中包含我的项目的完整路径,现在它可以工作了。问题是,我不希望使用Qt为每个项目运行此脚本。
是否可以针对每个项目执行此操作?
推荐答案
看起来gdb无法找到您的.so文件。您应该检查this post,看看您的solib-search-path
中是否可以找到共享库。如果不是这样,您应该在Tools/Options/Debugger/gdb中的&Quot;Additional Startup Commands&Quot;字段中扩展如下内容:
set solib-search-path %{CurrentProject:BuildPath}/<relative path to the folder where the .so file was built>
在我的情况下,在Android下工作,我设置了set solib-search-path %{CurrentProject:BuildPath}/android-build/libs/armeabi-v7a
,现在如果在共享库代码中设置断点就可以工作了。
@ChrisF:已尝试将Debugging a dynamically-loaded library in c++ with QtCreator标记为此问题的副本,但我必须等待投票通过(Stackoverflow不允许我标记重复的副本,因为";此问题没有正面投票或接受的答案&...
这篇关于如何在Linux的QTCreator中设置用dlopen打开的共享库的断点的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持!