LLDB远程调试Android:LLDB命令速查参考手册Handbook
[TOC]
远程调试Android Device
Android端启动lldb server
在此之前将lldb server push到设备,如/data/loca/tmp
1 | lldb-server platform \ |
后台运行:
1 | lldb-server platform \ |
Host端连接lldb server
在此之前必须先通过adb连接上Android
1 | $ lldb # 启动lldb |
Host端附加remote Android进程
- 附加进程(PID)
1 | (lldb) process attach -p 1 |
技巧:用好tab,所有命令和参数都能使用tab很轻松的补全;用好命令和参数的简写。
LLDB Cheat Sheet
LLDB命令格式
命令 + 子命令 + 命令选项 + 命令参数
1 | <command> [<subcommand> [<subcommand>...]] <action> [-options [optionvalue]] [argument [argument...]] |
breakpoint调试断点
指定文件和行号设置断点:
1
2breakpoint set --file abort.c --line 12
breakpoint set -f syscall.S -l 12指定函数名称设置断点:
1
2breakpoint set --name abort
breakpoint set -n assert指定函数名规则匹配:
1
breakpoint set --func-regex abort
指定地址:
1
2breakpoint set --address 0xf2dbd03e
breakpoint set -a 0xf2dbd03e指定库
1
breakpoint set --shlib liblog.so --name _log
查看已经设置的断点,注意看输出信息包含断点是否成功命中、是否enable、进程中有多少个位置命中断点:
1
(lldb) breakpoint list
禁用、启用、删除断点:
1
2
3
4(lldb) breakpoint disable 1 # 对断点1进行操作
(lldb) breakpoint enable 1
(lldb) breakpoint delete 1
(lldb) breakpoint delete all # 删除所有断点
thread线程操作/backtrace/bt
1 | thread list |
可以通过backtrace
或bt
直接打印堆栈。
frame栈帧操作
1 | frame info |
image镜像操作
列出进程加载的库
1 | image list |
查找指定的地址信息
1 | image lookup --type |
通过函数名或符号名查找对应的地址
1 | image lookup -r -n <FUNC_REGEX> |
dump
1 | image dump sections |
watchpoint调试断点
针对变量、内存地址进行设置:
1 | watchpoint set variable valName # 代码中的变量名 |
在此基础上添加条件(Read、Write):
1 | watchpoint set expression -w read -- 0x16aabbcc # 内存地址 注意-- |
条件断点:
1 | watchpoint modify -c '*(int *)0x10aabbcc == 1' |
1 | watchpoint list |
流程控制
1 | r # run |
memory内存操作
memory read [起始地址 结束地址]/寄存器 -outfile 输出路径(内存操作)
1 | memory read $pc |
Memory操作比较复杂,建议直接查看官方手册或Cheat Sheet。
disassemble:显示汇编代码
1 | disassemble -b |
register寄存器操作
读写寄存器:
1 | register read |
expression/print
打印指定变量或表达式。
简写po
,等同于expression -O
。
print根据变量名打印值。
display变量观察列表
- display:类似IDE提供的watch list。每次单步执行后都会打印出指定的表达式的值。
1
2
3display expr
display list
undisplay n
help
1 | (lldb) help |
参考
本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来自 PeaceMaker!
评论
DisqusWaline