首页 > 解决方案 > android NDK:找不到执行点

问题描述

我在 Android Studio 中调试我的 Android 应用程序,它未能找到本机代码的执行点,因此,变量也无法显示:看起来像这样:
图像1 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(否则应用程序根本无法调试)

谢谢喵~

标签: androidandroid-studioandroid-ndklldb

解决方案


通过在CSDN博客上搜索解决:

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

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


推荐阅读