如何在Linux中使用QTCreator中的dlopen打开的共享库中设置断点
How to set a breakpoint in a shared library opened with dlopen in QTCreator in Linux
我正在尝试使用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不允许我标记重复,因为"此问题没有投票或接受的答案"…"
相关文章:
- 将成员变量添加到共享库中的类中,不会破坏二进制兼容性吗
- 是否可以通过C++扩展强制多个python进程共享同一内存
- 在cuda线程之间共享大量常量数据
- 如何从具有移动语义的类对象中生成共享指针
- Linux 可执行文件通过 dlopen 在emplace_back崩溃打开共享库
- 卸载共享对象(.so 文件)在 C++ 中用 dlopen() 打开
- 使用 dlopen/dlsym 打开C++共享库 - dlsym 返回 NULL
- 不同的数学符号绑定与共享库与 dlopen 并直接链接到可执行文件 (Linux)
- 使用dlopen动态加载共享库
- 为什么主可执行文件和 dlopen 加载的共享库共享命名空间静态变量的一个副本?
- 使用 dlopen() 引用共享库插件的正确方法是什么?
- DLSYM等人与共享库合作 - 仍然只是Dlopen
- 共享库 SIGSEGV 在 dlopen 上 / 静态初始化时调用@plt函数
- C++:使用dlopen()加载共享库时未定义的符号
- 我可以使用由C使用dlopen从C++编译的共享库吗
- 将共享库与dlopen一起使用-共享对象找不到加载程序导出的符号
- 如何在Linux中使用QTCreator中的dlopen打开的共享库中设置断点
- 使用共享库的后果dlopen另一个具有不同构建类型的共享库
- Perl捕获嵌入脚本的stdout,如果在dlopen中加载共享库,则失败
- 如何使用dlopen检查共享库是否已成功加载