【问题标题】:How to set a breakpoint in a shared library opened with dlopen in QTCreator in Linux如何在 Linux 的 QTCreator 中使用 dlopen 打开的共享库中设置断点
【发布时间】:2013-12-03 05:58:50
【问题描述】:

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

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

SO 有调试符号。

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

谢谢。

更新:

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

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

【问题讨论】:

  • 我正在尝试解决同样的问题。您能否分享有关您的解决方案的更多详细信息?你找到“正确”的方法了吗?

标签: c++ linux qt debugging qt-creator


【解决方案1】:

GDB 似乎无法找到您的 .so 文件。您应该检查this post 以查看是否可以在您的solib-search-path 中找到共享库。如果不是,您应该扩展 Tools/Options/Debugger/GDB 中的“Additional Startup Commands”字段,如下所示:

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 不允许我标记重复项,因为“此问题没有支持或接受的答案“……”

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-03-29
    • 2019-03-05
    • 1970-01-01
    相关资源
    最近更新 更多