我在 Android Studio 中调试我的 Android 应用程序,它找不到本地代码的执行点,结果变量也无法显示:
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.");
}
调试器类型设置为
Native
.显示线程和调用堆栈。
这曾经在几个月前在同一个项目中工作。
使用了共享库的发布版本,但似乎不是原因。
我在调用栈中尝试了很多不同函数的变量,不仅仅是
lru
在屏幕截图中。所有模块的构建变体都是
debug
(否则应用程序根本无法调试)
谢谢喵~
最佳答案
在CSDN博客上搜索解决:
- 找到包含 c/c++ 代码的模块,打开它的
iml
Project
上的文件控制板: - 找到这个标签:
<facet type="native-android-gradle" name="Native-Android-Gradle">
- 在标签下找到
<option name="SELECTED_BUILD_VARIANT" value="release" />
- 更改
release
至debug
.如果它已经是debug
那么它似乎不是您问题的原因。 - 保存并关闭文件,然后进行 Gradle 同步。
- 现在应该修好了。如果没有,干净的构建可能会或可能不会有帮助。
CSDN博客原答案链接:https://blog.csdn.net/wangyun522/article/details/78820569
它不是英文的,您可能不想查看。
关于安卓NDK : cannot find execution point,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54033165/