【问题标题】:Not able to step into native code - Android无法进入本机代码 - Android
【发布时间】:2016-11-26 05:58:19
【问题描述】:

我一直在尝试在 Android Studio 上调试本机代码。 我的调试器在简单的 hello world jni 代码上运行良好。 但是,当我尝试对与共享 libcrypto.so 和 libccmssl.so 链接的代码执行相同操作时,我无法进入本机代码。

现在我不确定上述观察是否重要。但我不确定下一步该去哪里探索。在加载库时,我正在关注(附加图像)SIGILL,之后,按继续,代码运行,调用本机函数并返回值,但调试器不会进入本机代码。

任何我应该看的指针将不胜感激,谢谢

【问题讨论】:

    标签: android-ndk openssl java-native-interface android-studio-2.2


    【解决方案1】:

    一周以来,我一直在尝试让一个外部 c++ 项目与 android studio 一起工作,并试图缩小原因 --> “为什么我无法进入本机代码”

    对我来说,问题是在 LOCAL_CPPFLAGS 中存在“-gstabs+”标志 我删除了它 --> 构建 --> 和耶

    以下是标志说明: https://gcc.gnu.org/onlinedocs/gcc-3.3.6/gcc/Debugging-Options.html

    -gstabs+ 使用只有 GNU 调试器 (GDB) 才能理解的 GNU 扩展生成 stabs 格式的调试信息(如果支持)。 使用这些扩展很可能导致其他调试器崩溃或拒绝读取程序。

    注意:我在问题中发布的上述 SIGILL 图像仍然存在,但这并不是导致调试器不执行它的原因。

    【讨论】:

    • SIGILL 来自 OpenSSL,试图通过使用它们来发现 CPU 特性。它发生在 ARM 上,但您可以安全地跳过它。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-11-04
    • 2018-01-07
    • 1970-01-01
    相关资源
    最近更新 更多