栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Java

Android Studio art

Java 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

Android Studio art

调试一个NDK项目,希望从java层把文件路径传给native层,再从native层打开文件 。发现在Native层C代码设置断点用Android7.0的虚拟机调试正常,而用Android10的虚拟调试断点会失效,而重启电脑后,断点又正常。

已经做的配置如下:

1、RUN——edit configurations——app——debugger: debug type 选择Auto,官网显示,对于native的调试,auto 和dual都是可以的。https://developer.android.google.cn/studio/debug

2、参照官网说明,检查设备是否支持run-as 和ptrace,正常。

3、对虚拟机进行WipeData和Code boot都尝试过。

 再仔细查看调试信息,发现有报错信息:

art_sigsegv_fault 0x00000000e8ae4a00
art::FaultManager::HandleFault(int, siginfo*, void*) 0x00000000e8ae4fa4
art::art_fault_handler(int, siginfo*, void*) (.llvm.5767799722020299202) 0x00000000e8ae4ccb
___lldb_unnamed_symbol25$$app_process32 0x0000000058cc3fe1
___lldb_unnamed_symbol2$$libc.so 0x00000000e9ed8180
art::Thread::DecodeJObject(_jobject*) const 0x00000000e8e8adc0
 0x00000000ea01005d
 0x0000000058cc2000
....

 再搜索发现在stackoverflow上有人遇到过同样的问题,说是由jstring引起的。https://stackoverflow.com/questions/69329755/android-studio-art-sigsegv-fault-when-debugging-native-methods-that-receive-a-js#

于是退而求其次,因为java层没有const char *的类型,采用的方法是:在JNI函数中直接用const char *方式写入文件路径,不再从Java层向native传路径,不算很丝滑,至少能解决断点可用的问题。

至于,为什么Android7的虚拟机就没有这个问题,为什么重启电脑会暂时解决问题,暂时没有答案,欢迎小伙伴们一直探讨。

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/878043.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号