iOS Developer

LLDB 使用

2018-05-03  本文已影响43人  Caolongs

LLDB 使用

LLDB(Low Lever Debug)命令结构

<command> [<subcommand> [<subcommand>...]] <action> [-options [option-value]] [argument [argument...]]

其中:

  1. <command>(命令)和<subcommand>(子命令):LLDB调试命令的名称。命令和子命令按层级结构来排列:一个命令对象为跟随其的子命令对象创建一个上下文,子命令又为其子命令创建一个上下文,依此类推。
  2. <action>:我们想在前面的命令序列的上下文中执行的一些操作。
  3. <options>:行为修改器(action modifiers)。通常带有一些值。
  4. <argument>:根据使用的命令的上下文来表示各种不同的东西。

设置断点

$ breakpoint set -n [方法字符串]

例如:
$ breakpoint set -n "viewDidLoad"

`其中 -n 是 --name缩写`
$ breakpoint list
$ breakpoint disable [编号]
$ breakpoint enable [编号]
$ breakpoint delete 【编号】
$ breakpoint set —-selector [方法]

例如:
$ breakpoint set --selector dealloc
$ breakpoint set —file [文件] —-selector [方法]
$ breakpoint set -r [方法字符串]

例如:
$ breakpoint set -r "testFunc"

流程控制

$ c continue
$ n next
$ s 
$ ni
$ si

expresion

执行代码,例如当你需要改变一些东西,但是因为某种原因不能编译

$ expresion [代码]

例:

$ expression self.view.backgroundColor = [UIColor redColor];

换行ctrl+enter

调用栈 bt

Show the current thread's call stack.

$ bt
$ up
$ down
$ frame select [bt 显示的frame 编号]

watchpoint

内存断点,断点对象属性,类似kvo

根据变量名称

$ watchpoint set variable  [self->name]

根据内存地址

$ watchpoint set expresion  [内存地址]

breakpoint command

$ break command add [编号]

例如:

(lldb) breakpoint command add 5.1
Enter your debugger command(s).  Type 'DONE' to end.
> 
$ break command list [编号]
$ break command delete [编号]

target stop-hook

每次stop的时候去执行一些命令,只对breakpoint,watchpoint有效

//每次stop执行frame variable
$ target stop-hook add -o "frame variable" 

$ target stop-hook list

$ target stop-hook delete

frame

$ frame variable
$ frame info

thread

$ thread return

.lldbinit 文件配置

目录 /Users/caolongjian/.lldbinit
lldb每次启动都会调用,用于导入配置文件

其他常用

$ image lookup -a [地址0x]
$ image lookup -t [类 Person]
$ image list

help

获取帮助信息
help <command-name>help <command-name> <option>

$ help
$ help breakpoint

[TOC]

上一篇 下一篇

猜你喜欢

热点阅读