gpt4 book ai didi

android - LLDB:添加符号文件?

转载 作者:塔克拉玛干 更新时间:2023-11-01 21:42:22 24 4
gpt4 key购买 nike

我正在尝试使用 lldb 从 Android Studio 的原生调试中调试 android 原生应用。
我的 native 应用程序包含一个由 Android Studio 编译和运行的 libmain.so 和另一个由我编译的外部 libother.so。调试时,我可以在 libmain.so 中设置断点,但不能在 libother.so 中设置断点。
两个共享对象都被剥离,但 Android Studio 以某种方式让 lldb 知道 libmain.so 的未剥离版本。我想对 libother.so 做同样的事情。

我需要给 lldb 什么命令,以便它从我本地机器上的未剥离文件加载符号?
当我执行 image list 时,我看到主要的 .so 带有指向其本地未剥离版本的路径:

/Users/username/Projects/gow/android/AppName/app/build/intermediates/binaries/debug/arm7/obj/armeabi-v7a/libmain.so

第二个 .so 的路径类似于 /var/folders/3w/5nr95lxx3qvdm2ylb8c8b7500000gn/T/./lldb/module_cache/remote-android/.cache/B5F32653-0000-0000-0000-000000000000/libother.so

如何让 lldb 找到 libother.so 的未剥离版本?
我尝试了 image addtarget symbols add 但没有成功。

最佳答案

这个线程中的答案似乎是针对 MacOSX 的。我使用的是 Linux,所以这些答案不是很有帮助。一段时间后我弄明白了,这是一个非常简单的解决方案。在执行“进程附加”之前,您应该执行以下命令:

settings set target.exec-search-paths /path/to/directory/with/unstripped/library/on/host

使用此设置,lldb 可以毫无问题地找到库的正确版本。

顺便说一句,最新版本的 Android Studio 对外部库没有任何问题(事实上,相同的技术用于设置所有库的正确路径,包括“内部”和“外部”,至少如果你是使用 Gradle 构建)。但如果您使用独立的 lldb,这会非常方便。

为了避免在每次调试 session 开始后键入它,您可以将此命令保存到文件(例如 lldb.cmd),然后像这样启动 lldb:

./lldb -S lldb.cmd

关于android - LLDB:添加符号文件?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32506103/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com