安卓NDK : cannot find execution point

标签 android android-studio android-ndk lldb

我在 Android Studio 中调试我的 Android 应用程序,它找不到本地代码的执行点,结果变量也无法显示:
img1 World::flush看起来像这样:

void World::flush() {
    LOGE_LS("Flushing cached chunks...");
    for (chunk_lru_li *i = lru, *j; i != nullptr; i = j) {
        if (i->item->flag == CHUNK_LI_DIRTY) {
            LOGE_LS("Saving chunk (%d,%d).", i->item->key.x_div16, i->item->key.z_div16);
            i->item->val->save();
            LOGE_LS("Saved chunk.");
        }
        j = i->next;
        delete i->item->val;
        delete i->item;
        delete i;
    }
    lru = nullptr;
    mru = nullptr;
    num_chunks = 0;
    memset(chunks, 0, sizeof(chunks));
    LOGE_LS("Flusing done.");
}
  1. 调试器类型设置为 Native .

  2. 显示线程和调用堆栈。

  3. 这曾经在几个月前在同一个项目中工作。

  4. 使用了共享库的发布版本,但似乎不是原因。

  5. 我在调用栈中尝试了很多不同函数的变量,不仅仅是lru在屏幕截图中。

  6. 所有模块的构建变体都是debug (否则应用程序根本无法调试)

谢谢喵~

最佳答案

在CSDN博客上搜索解决:

  1. 找到包含 c/c++ 代码的模块,打开它的 iml Project 上的文件控制板: enter image description here
  2. 找到这个标签:<facet type="native-android-gradle" name="Native-Android-Gradle"> enter image description here
  3. 在标签下找到<option name="SELECTED_BUILD_VARIANT" value="release" />
  4. 更改releasedebug .如果它已经是 debug那么它似乎不是问题的原因。
  5. 保存并关闭文件,然后进行 Gradle 同步。
  6. 现在应该修好了。如果没有,干净的构建可能会或可能不会有帮助。

CSDN博客原答案链接:https://blog.csdn.net/wangyun522/article/details/78820569
不是英文的,您可能不想查看。

关于安卓NDK : cannot find execution point,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54033165/

相关文章:

安卓原生权限和保护级别

java - onLocationChange() 未被调用...使用 FuseLocationApi ...检查了所有解决方案并尝试了所有...但仍然没有任何效果

java - WindowManagerBadTokenException 无法添加窗口

java - 如何在android中绘制从Firebase数据库检索的数据

java - 为什么Android中的java源代码有三个目录/文件夹?

java - 无法在 RecyclerView 中显示项目

android-ndk - 链接到驻留在 AAR 依赖库包中的 .so

android - 如何使用 firebase 云功能在特定日期删除 firebase DB 数据

android - 如何返回上一个 Activity ? Kotlin(使用操作栏外的按钮)

android - 如何使用 Android Studio + Gradle + NDK 构建外部 C++ 库?