在 Qt Creator Android 项目中调试外部共享库
Debug external shared library in Qt Creator Android project
我有 Qt Quick Android 应用程序,它使用外部 C++ 库。
我使用 CMake 自己构建了这个库,CMAKE_BUILD_TYPE
设置为 Debug
。当我在 Qt Creator 调试模式下启动应用程序时,我可以在 Qt 代码中的断点处停止,但它不会跳转到库调用,我只能看到汇编程序列表。
是否可以告诉调试器库源代码在哪里,甚至可以像这样在 Android 中进行调试?
好的,绝对有可能。
首先,请确保您确实拥有.so库中的所有调试信息:
<path-to-your-NDK>/toolchains/arm-linux-androideabi-4.9/prebuilt/linux-x86_64/arm-linux-androideabi/bin/objdump -S <your-lib-name>.so | less
您应该看到汇编程序和 C++ 代码的混合,这表明您的库包含调试符号。
之后确保 Qt Creator 能够在调试会话期间找到您的库。启动 "Debug",然后 Windows->Views->Debugger log 打开 gdb 控制台。执行:
show solib-search-path
查看 gdb 尝试查找库的目录的完整列表。如果还没有,请将路径添加到您的库中,例如:
set solib-search-path <old-value>:<path-to-your-library>
我知道这有点蹩脚,应该有一种方法可以使它自动化。但这对我有用。
我有 Qt Quick Android 应用程序,它使用外部 C++ 库。
我使用 CMake 自己构建了这个库,CMAKE_BUILD_TYPE
设置为 Debug
。当我在 Qt Creator 调试模式下启动应用程序时,我可以在 Qt 代码中的断点处停止,但它不会跳转到库调用,我只能看到汇编程序列表。
是否可以告诉调试器库源代码在哪里,甚至可以像这样在 Android 中进行调试?
好的,绝对有可能。
首先,请确保您确实拥有.so库中的所有调试信息:
<path-to-your-NDK>/toolchains/arm-linux-androideabi-4.9/prebuilt/linux-x86_64/arm-linux-androideabi/bin/objdump -S <your-lib-name>.so | less
您应该看到汇编程序和 C++ 代码的混合,这表明您的库包含调试符号。
之后确保 Qt Creator 能够在调试会话期间找到您的库。启动 "Debug",然后 Windows->Views->Debugger log 打开 gdb 控制台。执行:
show solib-search-path
查看 gdb 尝试查找库的目录的完整列表。如果还没有,请将路径添加到您的库中,例如:
set solib-search-path <old-value>:<path-to-your-library>
我知道这有点蹩脚,应该有一种方法可以使它自动化。但这对我有用。