相关疑难解决方法(0)

为了在Android中调试本机代码,我缺少哪些步骤?

编辑:这仍然没有得到解决.我怀疑基于评论,我使用旧的NDK(10d)可能是一个问题所以我升级到15c并处理所有问题,以便用clang和新的c ++库编译我的东西.不幸的是ndk-gdb在15c中被破坏了,我试图破解python使其工作并没有让我任何地方.然后我使用了Android Studio 3.0预览版,我回到了以前的位置 - 我可以看到堆栈信息,但所有代码都是在lldb中汇编的.工作必须继续 - 我回来使用logcat进行调试:(

我从墙上的无数次点击中看到了额头受伤的前额.

我会尽量简明扼要,同时提供所有相关信息.如果有任何我没有提供的相关信息,请告诉我.

概要:

我正在维护一个Android应用程序作为我工作的一部分.我不得不求助于记录调试本机代码,因为虽然我可以设置断点并点击它们,但我无法查看源或变量信息.

我花了很多时间和谷歌搜索试图了解我错过了什么,但仍然没有运气.

我的构建环境是使用Android NDK r10D的OSX,以及用于构建APK的gradle 3.2.

我正在尝试使用AndroidStudio 3.0 beta 6来安装和调试APK.

我的Android.manifest包含在标记中:

android:debuggable="true"

本地代码:

这是使用-v编译其中一个本机c ++文件以获取详细信息的示例输出:

~/src/libraries/cBase$ make android
Building obj/Binary.ao
Using built-in specs.
COLLECT_GCC=arm-linux-androideabi-g++
Target: arm-linux-androideabi
Configured with: /s/ndk-toolchain/src/build/../gcc/gcc-4.8/configure --prefix=/tmp/ndk-User/build/toolchain/prefix --target=arm-linux-androideabi --host=x86_64-apple-darwin --build=x86_64-apple-darwin --with-gnu-as --with-gnu-ld --enable-languages=c,c++ --with-gmp=/tmp/ndk-User/build/toolchain/temp-install --with-mpfr=/tmp/ndk-User/build/toolchain/temp-install --with-mpc=/tmp/ndk-User/build/toolchain/temp-install --with-cloog=/tmp/ndk-User/build/toolchain/temp-install --with-isl=/tmp/ndk-User/build/toolchain/temp-install --with-ppl=/tmp/ndk-User/build/toolchain/temp-install --disable-ppl-version-check --disable-cloog-version-check --disable-isl-version-check --enable-cloog-backend=isl --with-host-libstdcxx='-static-libgcc -lstdc++ -lm' --disable-libssp --enable-threads --disable-nls --disable-libmudflap --disable-libgomp --disable-libstdc__-v3 --disable-sjlj-exceptions --disable-shared --disable-tls --disable-libitm --with-float=soft --with-fpu=vfp …
Run Code Online (Sandbox Code Playgroud)

android android-ndk android-debug android-studio android-gradle-plugin

7
推荐指数
0
解决办法
895
查看次数

在Android Studio中对外部剥离的共享库进行本机调试

我已经剥离和未剥离的共享库.如何在使用LLDB在Android Studio中剥离调试时加载符号?

我可以成功调试位于"jniLibs"文件夹中的完整未剥离的.so.但它太大了,部署时间太长.

在Debug配置中指定symbols目录不适用于standart和experemental插件.

c++ debugging java-native-interface android-studio

4
推荐指数
1
解决办法
1430
查看次数

LLDB 调试器无法识别在远程机器上编译的可执行符号

我正在 Xcode/clang 环境中的一台计算机上构建我的项目,我想在另一个站上的 lldb 调试器下运行它,而无需复制源代码、可执行文件和符号文件。

我已经复制了所有 dSYM 目录,以便 lldb 调试器可以识别我需要的符号并呈现真正的函数(目前我得到了像___lldb_unnamed_function532backtrace 命令一样的函数名称)

我尝试使用命令

settings set target.source_map /source_dir /target_dir
Run Code Online (Sandbox Code Playgroud)

wheretarget_dir代表我放置所有dSYM目录source_dir的路径,代表所有dSYM目录的原始父目录的路径。

不幸的是,除非源代码驻留在/target_dir.

我哪里做错了?

好的,所以我发现当我将 dSYM 目录复制到可执行文件的相同位置时,lldb 设法破译符号。有没有办法“告诉”lldb 到另一个位置?

c debugging macos clang lldb

0
推荐指数
1
解决办法
2881
查看次数