专栏首页along的开发之旅Ubuntu18.04上使用LLDB调试Chromium Android C++代码

Ubuntu18.04上使用LLDB调试Chromium Android C++代码

关于lldb/gdb调试命令区别和清单, 见 https://lldb.llvm.org/use/map.html

Ubuntu18.04上使用LLDB调试Chromium Android C++代码。

Chromium Android源代码庞大且复杂。 在调试器LLDB下能帮助我们更好的理解代码流程。 介绍使用LLDB调试器调试android上chromium的C++代码。

[1] 编译Chromium时,记得修改编译选项:-g -O0, 使得编译器做更少的优化,便于调试。 使用attach方式调试(因此进程在启动过程中暂时不能调试)。 查看进程PID:adb shell ps -A | grep chrome 启动lldb-server:adb shell /system/bin/lldb-server platform --server --listen unix-abstract:///data/local/tmp/debug.sock 确保手机目录/system/bin/存在lldb-server。lldb-server可以从Android SDK目录中找到。

[2] ubuntu18.04 安装LLDB。 apt install lldb 2.1启动lldb: lldb 2.2列出lldb支持平台:platform list 2.3选择LLDB使用平台:platform select remote-android 2.4连接lldb-server: platform connect unix-abstract-connect:///data/local/tmp/debug.sock 2.5列举手机进程: platform process list 2.6ATTACH PID: attach 16767 #PID=16767 就是要调试的进程PID 2.7查看: platform status

[3] 在LLDB中,设置源码路径:因为调试时源码路径与编译时源码路径可能不相同,因此需要设置。否则LLDB将无法设置断点和找到源代码。 settings set target.source-map /home/huangguanyuan/chromium_android/src /home/huangguanyuan/chromium_android/src settings show settings list

[4] 在LLDB中,加载符号表。 target symbols add /home/u1804/chromium_android/src/out/default64d/lib.unstripped/libnet.cr.so target symbols add /home/u1804/chromium_android/src/out/default64d/lib.unstripped/libchrome.cr.so target symbols add /home/u1804/chromium_android/src/out/default64d/lib.unstripped/libcontent.cr.so target symbols add /home/u1804/chromium_android/src/out/default64d/lib.unstripped/libbase.cr.so

[5] 在LLDB中,查找符号、设置断点、查看断点、启用/禁用断点、查看call stack、单步调试、查看变量。 详细请参考:http://lldb.llvm.org/lldb-gdb.html image lookup --name TCPSocketPosix::ReadIfReady breakpoint set -f tcp_socket_posix.cc -l 413 breakpoint disable 5 breakpoint enable 5 bt c n print frame variable

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

我来说两句

0 条评论
登录 后参与评论

相关文章

  • xargs的使用

    前段时间查自己的代码行数时, 用了”find . -name “*.cs” | xargs wc -l“, 但是对xargs在这里的作用有点不了解, 因为网上资...

    望天
  • Siemens NX 9.0和 UG 4.0 同时安装

    主要是解决能还是不能的问题,答案是确定的,能。Siemens NX 9.0的licence Server可以管理UG 4.0的licence。

    望天
  • Permission Denial: not allowed to send broadcast in android

    因为最近项目里Intent用到了广播”android.intent.action.MEDIA_MOUNTED”, 结果被提示权限不足, 查了下原因, 是因为从4...

    望天
  • 为啥你身边没有40+的程序员

    周末在家摆弄了一下微信小程序的tensorflow js,想把模型的本地存储弄起来,结果发现微信小程序裁掉了很多js对象,没完全弄好。今天又出差,要完善这个功能...

    云水木石
  • React基础篇 - 02.JSX 简介

    JSX 简介 请观察下面的变量声明: const element = <h1>Hello, world!</h1>; 这种看起来可能有些奇怪的标签语法既不是字符...

    静默虚空
  • 从版本1到版本5如何编写牛逼的Makefile

    最普通的版本:直接写即可,简单解释一下:当我们编译上述文件的时候,会通过gcc -o main main.c add.c sub.c。

    公众号guangcity
  • React.js 实战之 JSX 简介在 JSX 中使用表达式JSX 本身其实也是一种表达式JSX 属性JSX 嵌套JSX 防注入攻击JSX 代表 ObjectsJSX 的怪异之处

    这种看起来可能有些奇怪的标签语法既不是字符串也不是 HTML 它被称为 JSX, 一种 JavaScript 的语法扩展 推荐在 React 中使用 JSX...

    JavaEdge
  • 这是目前为止5G最完整的PPT

    这份PPT共100页,是王喜文博士给地方政府和企业家讲座的完整内容,其中对于5G、人工智能、智能制造等未来科技的讲解非常透彻,非常有助于加强对5G和人工智能的学...

    Nealyang
  • 面部识别技术帮助警察监控和跟踪嫌疑人

    2018年11月30日,据卡迪夫大学警察科学研究所研究员在美国政府计算机网站(GCN)报道称,自2010年起,由于警察总人数的减少以及犯罪率的上升,使得监控和跟...

    人工智能快报
  • CDP-DC的安装部署

    CDP DC7.1是Cloudera与Hortonworks合并后,第一个融合CDH和HDP所有组件的on-premise并且可用于生产环境的版本,CDP Da...

    大数据杂货铺

扫码关注云+社区

领取腾讯云代金券