在 Android Studio 中调试时如何设置 LLDB 源映射?

She*_*ikh 5 android android-ndk lldb android-studio

我正在尝试在Android Studio 2.3 Canary 2 中使用本机调试;Gradle 插件是“ gradle:2.3.0-alpha2 ”。我从https://github.com/googlesamples/android-ndk 获取了“hello-libs”样本。此示例使用 CMake 作为外部本机构建系统。好的,/hello-libs/distribution/ 中有预构建的库(libgmath.a 和 libgperf.so)。库包含调试信息,它们不会被剥离。我尝试使用命令将 lldb 调试器指向我的 PC 上的源代码来本地调试这些预构建的库:

settings set target.source-map
Run Code Online (Sandbox Code Playgroud)

所以,我用

objdump -Wl 
Run Code Online (Sandbox Code Playgroud)

获取用于构建这些库的源文件的路径。Objdump 给了我下一个目录:

  1. /Users/gfan/proj/android-mk/work-branch/hello-libs/gen-libs/src/main/cpp/gperf/src
  2. /Users/gfan/proj/android-mk/work-branch/hello-libs/gen-libs/src/main/cpp/gmath/src

好的,在调试配置中,我在“LLDB 启动命令”中添加了两个命令

  1. 设置设置 target.source-map /Users/gfan/proj/android-mk/work-branch/hello-libs/gen-libs/src/main/cpp/gperf/src e:\WORKSPACE\hello-libs\gen- libs\src\main\cpp\gperf\src\
  2. 设置设置 target.source-map /Users/gfan/proj/android-mk/work-branch/hello-libs/gen-libs/src/main/cpp/gmath/src e:\WORKSPACE\hello-libs\gen- libs\src\main\cpp\gmath\src\

在选项卡“符号目录”中,我设置了在以下位置搜索调试符号的路径:

  1. E:\WORKSPACE\hello-libs\app.externalNativeBuild\cmake\debug\armeabi-v7a\CMakeFiles\hello-libs.dir
  2. E:\WORKSPACE\hello-libs\app\build\intermediates\cmake\debug\obj\armeabi-v7a
  3. E:\WORKSPACE\hello-libs\distribution\gmath\lib\armeabi-v7a
  4. E:\WORKSPACE\hello-libs\distribution\gperf\lib\armeabi-v7a

我在 ndk.abiFilters 中只使用了“ armeabi-v7a ”。

Android Studio 中的所有调试配置对我来说真的不是很明显。所以,我的问题是:

  • 如何正确设置lldb 源映射以在本地机器上调试带有源的预构建库?
  • 顺便说一句,谁知道如何在调试配置中使用“主机工作目录:”?在https://developer.android.com/studio/run/rundebugconfig.html上只有一行关于它,听起来“指定 LLDB 工作目录”。我应该如何指定它?