Debug Chromium in Android Studio#

0. Context#

1. debug#

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

1.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目录中找到。

1.2 安装LLDB。#

  • apt install lldb
  • 启动lldb: lldb
  • 列出lldb支持平台:platform list
  • 选择LLDB使用平台:platform select remote-android
  • 连接lldb-server: platform connect unix-abstract-connect:///data/local/tmp/debug.sock
  • 列举手机进程: platform process list
  • ATTACH PID: attach 16767 #PID=16767 就是要调试的进程PID
  • 查看: platform status

1.3 在LLDB中,设置源码路径:因为调试时源码路径与编译时源码路径可能不相同,因此需要设置。否则LLDB将无法设置断点和找到源代码。#

  • settings set target.source-map /home/huangguanyuan/chromium_android/src /home/huangguanyuan/chromium_android/src
  • settings show
  • settings list

1.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

1.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

1.6 安装lldb-server#

$ adb push lldb-server /data/local/tmp/
$ adb shell
$ cd /data/local/tmp
$ chmod 755 lldb-server
$ ./lldb-server p --server --listen unix-abstract:///data/local/tmp/debug.sock




$ lldb-<version>
$ platform list  # 查看lldb可以连接的平台
$ platform select remote-android
$ platform status # 查看平台状态
$ platform connect unix-abstract-connect:///data/local/tmp/debug.sock


(lldb) file out/target/product/darwin/symbols/system/bin/logd # 指定将要调试的二进制文件,该文件需要是symbol文件。
(lldb) breakpoint set -f LogBuffer.cpp -l 710
(lldb) run

$ adb logcat -c

(lldb) file  out/target/product/darwin/symbols/system/bin/logd # 指定将要调试的二进制文件,该文件需要是symbol文件。
(lldb) platform process list # 查看一直远端的进程, 找到目标进程pid, 或者名称
(lldb) attach 9053

b = breakpoint 设置断点
c = continue 继续运行
n = next 下一行
s = step 单步进入
f = finish 跳出
p [var] 打印变量值
var 显示所有局部变量
bt 打印调用栈
up 在调用栈中向上移一帧 older
down 在调用栈中下移一帧 newer
register 查看寄存器 memory 查看内存

© 2025 Powered By Hugo,模板:Hugo-book .