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
###完毕###
Ubuntu18.04上使用LLDB调试Chromium Android C++代码。的更多相关文章
- LINUX上使用GDB单步调试Chromium Android C++代码。
###动机###在LINUX使用GDB单步调试Chromium Android C++代码. [1]编译android平台Chromium, 修改GN文件中编译选项:-g -O0 使得编译优化更少,便 ...
- 在ubuntu18.04上安装EOS
在ubuntu18.04上安装EOS 在ubuntu18.04上安装EOS的目的: 把交易所的eos转到eos主网,防止交易所跑路或者交易所被黑客攻击 在不联网的安全环境下,用eos官方的命令行工具, ...
- Windows10上使用windbg调试Chromium Windows。
###目的###Windows10上使用windbg调试Chromium Windows. 安装Windows 10 SDK时, 就包含了windbg.exe."C:\Program Fil ...
- 联想ideapad-330C 在Ubuntu18.04 上安装Realtek 8821CE无线网卡驱动
在新买的联想ideapad-330C笔记本上,安装Ubuntu 18.04后,悲催的发现,没有无线网络,幸好有线还能用,然后网上搜一波,发现不少人遇到这种问题,也有人给出解决方案 参考的链接: Thi ...
- 在Ubuntu18.04上安装Nvidia驱动
拿到了一台新机子,带显卡的那种,当然是各种倒腾了!于是我又一天装了三遍机子来进行各种尝试熟悉配置啥的. 所以首先是在裸机上安装Nvidia驱动. 环境:Ubuntu18.04 刚安装完系统,当然是把软 ...
- Ubuntu18.04上安装NS-3
目录 第一步:处理gcc/g++版本 第二步:安装相关依赖 第三步:正式安装 第四步:测试 我自己前后安装过好几次NS3了,网上其他相关的博客质量都不是很好,因此自己总结了一个ns3的安装过程. 首先 ...
- Ubuntu18.04上安装CUDA_10.1(nvidia-driver)和cuDNN_7.6.5
本文是在Ubuntu18.04.5服务器上安装CUDA_10.1(nvidia-driver455)和cuDNN_7.6.5, Ubuntu 18.04.5 CUDA_10.1 (nvidia-dri ...
- 关于Ubuntu18.04上Python版本管理
时间: 2019-11-11 整理: pangyuaner 标题:树梅派上多版本python及pip安装使用管理指南 地址:https://blog.csdn.net/zbgjhy88/article ...
- Ubuntu18.04上安装Docker CE
建立 REPOSITORY 1.更新索引包 更新 /etc/apt/sources.list 和 /etc/apt/sources.list.d 中列出的源的地址,这样才能获取到最新的软件包 sudo ...
随机推荐
- word break相关问题的解法
https://leetcode.com/problems/word-break/?tab=Description 以及 https://leetcode.com/problems/concatena ...
- cocos2d_android 第一个游戏
依据上一篇文章.创建好cocos2d--android的开发环境 先上效果图 实现该效果的代码: package com.cn.firstgame; import org.cocos2d.layers ...
- 小贝_mysql select5种子句介绍
mysql select5种子句介绍 简要 一.五种字句 二.具体解释五种字句 一.五种字句 where.group by.having.order by.limit 二.具体解释五种字句 2.1.理 ...
- 关于Android真机调測Profiler
u3d中的Profile也是能够直接在链接安卓设备执行游戏下查看的,导出真机链接U3D的Profile看数据,这样能更好的測试详细原因. 大概看了下官方的做法.看了几张帖子顺带把做法记录下来. 參考: ...
- ASMlib操作系统包安装与配置asm disk磁盘
1.加入6块硬盘,每块100g.不管是热加还是冷加.不管是加硬盘,用san存储划lun,或者再加上多路径,都是能够这么做的. 在操作系统层,能识别这种lun.以下的sdb就是一个刚划分的300g的lu ...
- nginx 代理https后,应用redirect https变成http --转
原文地址:http://blog.sina.com.cn/s/blog_56d8ea900101hlhv.html 情况说明nginx配置https,tomcat正常http接受nginx转发.ngi ...
- Hadoop 框架基础(四)
** Hadoop 框架基础(四) 上一节虽然大概了解了一下 mapreduce,徒手抓了海胆,不对,徒手写了 mapreduce 代码,也运行了出来.但是没有做更深入的理解和探讨. 那么…… 本节目 ...
- 基于jquery 的find()函数和children()函数的区别
element.find(selector) 返回匹配element集合中每个元素的后代,参数selector是必须的,可以通过选择器对元素进行过滤,筛选出符合条件的元素.如果想选中所有的后代元素, ...
- 修改host方法
打开路径 C:\Windows\System32\drivers\etc 将hosts文件拷贝出来修改之后放回去覆盖即可 以下是一个例子,想得到ip可以先ping一下那个域名. 左边是ip,右边是域名 ...
- Android中的Junit测试
在开发中Junit测试可以很方便的帮助开者尽可能早的发现并处理问题,而且使用也非常简单,只需要导入Junit测试相关的jar包并创建测试类,就可以对业务功能进行测试,而不用为了测试在代码中添加输出语句 ...