如何在Linux中使用QTCreator中的dlopen打开的共享库中设置断点

How to set a breakpoint in a shared library opened with dlopen in QTCreator in Linux

本文关键字:共享 dlopen 设置 断点 中的 Linux QTCreator      更新时间:2023-10-16

我正在尝试使用QTCreator调试我的共享库,该库正在使用dlopen和dlsym调用。QT调试器不会在共享库中的断点处停止。

当我使用GDB运行我的应用程序时,它可以正常工作。

SO具有调试符号。

如何让QTCreator调试我的应用程序?

谢谢。

更新:

我创建了一个gdb启动脚本,其中包含我的项目的完整路径,现在它可以工作了。问题是,我不希望这个脚本为每个使用QT的项目运行。

每个项目都可以这样做吗?

看起来GDB无法定位.so文件。您应该查看这篇文章,看看是否可以在您的solib-search-path中找到共享库。如果不是,则应扩展";附加启动命令";Tools/Options/Debugger/GDB中的字段,类似于:

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:试图将用QtCreator在c++中调试一个动态加载的库标记为此问题的重复,但我必须等待投票(stackoverflow不允许我标记重复,因为"此问题没有投票或接受的答案"…"