调试ART虚拟机

栏目: 服务器 · 发布时间: 5年前

内容简介:之后将如果出现如下错误:

编译

mmm art/runtime 单独编译art模块即可。

之后将 ANDROID_PRODUCT_OUTsystem/lib/libart.so system/lib64/libart.so system/lib/libartd.so system/lib64/libartd.so 分别推送到手机对应的位置,来更新手机中的 art 虚拟机模块。

如果出现如下错误:

'/system/lib/libart.so': remote couldn't create file: Read-only file system

说明无权限。使用如下脚本关闭权限验证:

adb root &> /dev/null && sleep 0.3
adb wait-for-device &> /dev/null && sleep 0.3
adb remount &> /dev/null && sleep 0.3
adb disable-verity && sleep 0.3

看到下面字样即可。

Verity already disabled on /system

AndroidStudio

Android Studio 2.3开始支持 lldb 来调试 Native代码。

设置

打开 Edit configuration ,在 Debugger 中将 Debug type 设定为 Native。表示当前调试类型为 Native。如下:

调试ART虚拟机

同时可以在 Symbol Directories 添加符号表文件夹。

aosp 编译成功之后的符号表都存在于:

out/target/product/${device}/symbols

可以按照顺序将 aosp 或者其他符号表目录存放与此。在运行时 AndroidStudio(lldb) 会自动按照目录顺序搜到为止。

运行

点击 debug 运行之后,可以看到如下输出:

$ adb shell cat /data/local/tmp/lldb-server | run-as com.qihoo360.replugin.sample.host sh -c 'cat > /data/data/com.qihoo360.replugin.sample.host/lldb/bin/lldb-server && chmod 700 /data/data/com.qihoo360.replugin.sample.host/lldb/bin/lldb-server'

$ adb shell cat /data/local/tmp/start_lldb_server.sh | run-as com.qihoo360.replugin.sample.host sh -c 'cat > /data/data/com.qihoo360.replugin.sample.host/lldb/bin/start_lldb_server.sh && chmod 700 /data/data/com.qihoo360.replugin.sample.host/lldb/bin/start_lldb_server.sh'

Starting LLDB server: /data/data/com.qihoo360.replugin.sample.host/lldb/bin/start_lldb_server.sh /data/data/com.qihoo360.replugin.sample.host/lldb unix-abstract /com.qihoo360.replugin.sample.host-0 platform-1557307585973.sock "lldb process:gdb-remote packets"
Debugger attached to process 2607
Signal: SIGSTOP (signal SIGSTOP)

App启动完了之后就完成了 Debug 的第一步了。

断点

因为没有设置任何断点,并且只有符号表会有点无所适从。

这时可以尝试 pause program 如下:

调试ART虚拟机

此时会弹出本地的源码,接下来就能在源代码中添加断点了。

效果如下:

调试ART虚拟机

远程编译

正常来说,能在本地编译并且断点是很顺滑的事情。但是,很多时候可能需要使用别人编译出来的结果,或者你想在一台服务器上面进行编译。

但是问题在于我们的符号表记录了编译时的源码路径,而这个路径在另外电脑可能不存在。这时候就需要路径映射了。

如下方式可以查看符号表中的源码路径:

image lookup -vn CollectGarbageInternal

可以得到如下结果:

调试ART虚拟机

找到原始路径之后映射成本地路径即可。

settings set target.source-map <original> <local>

参考

By@hyongbai 共2123个字

本文链接


以上就是本文的全部内容,希望本文的内容对大家的学习或者工作能带来一定的帮助,也希望大家多多支持 码农网

查看所有标签

猜你喜欢:

本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们

Inside Larry's and Sergey's Brain

Inside Larry's and Sergey's Brain

Richard Brandt / Portfolio / 17 Sep 2009 / USD 24.95

You’ve used their products. You’ve heard about their skyrocketing wealth and “don’t be evil” business motto. But how much do you really know about Google’s founders, Larry Page and Sergey Brin? Inside......一起来看看 《Inside Larry's and Sergey's Brain》 这本书的介绍吧!

图片转BASE64编码
图片转BASE64编码

在线图片转Base64编码工具

Base64 编码/解码
Base64 编码/解码

Base64 编码/解码

HSV CMYK 转换工具
HSV CMYK 转换工具

HSV CMYK互换工具