美文网首页
LLDB断点调试

LLDB断点调试

作者: 乔克蜀黍 | 来源:发表于2018-05-22 21:55 被阅读23次

LLDB(Low Lever Debug)是一个轻量级的调试工具.

断点
  • 通过指令breakpoint set -n test1可以为c函数设置断点,set 是字命令;-n是选项是 name的缩写;text1是函数名。设置完断点会输出如下的断点信息
Breakpoint 2: where = LLDB--01`test1 + 8 at ViewController.m:19, 
address = 0x0000000100372634

即:当前设置了两个断点,断点函数名称是test1,在当前文件的第19行,内存地址为0x0000000100372634。

  • 通过命令breakpoint set -n "-[ViewController xxx:]"可以为oc方法设置断点,xxx为方法名称;
    我们通过一条命令设置多个断点,像这样breakpoint set -n "-[ViewController saveGame:]" -n "-[ViewController pauseGame:]" -n "-[ViewController continueGame:]"同时给三个方法设置了断点。
    如果我们想为工程中所有方法名相同的方法设置断点可以使用breakpoint set --selector 方法名,例如给工程中所有使用- (void)touchesBegan:(NSSet<UITouch *> *)touches withEvent:(UIEvent *)event方法处设置断点的命令为breakpoint set --selector touchesBegan:withEvent:;
    也可以使用breakpoint set --file 文件名 --selector 方法名在某个文件中根据方法名来设置断点;
    还可以使用breakpoint set -r 遍历关键字来为工程中方法名中包含关键字的方法加断点,例如:breakpoint set -r wyf:给整个项目中所有满足wyf:这个字符的所有方法加断点。

  • 通过命令breakpoint list可以查看设置的断点,例如:上面三个断点的断点列表为:

    断点列表.png
  • 通过命令breakpoint disable x可以禁用某一组或某一条断点,x指某一组断点或某一组的某一条断点,例如breakpoint disable 1 breakpoint disable 1.1分别是禁用第一组的所有断点和禁用第一组的第一条断点。
    同样的命令breakpoint enable x可以启用某一组或某一条断点。

  • 命令breakpoint delete x可以删除某一组的断点,这里需要注意的是断点不可以删除某一条,例如执行breakpoint delete 1.1并不会删除第一组的第一个断点,而是会禁用这一条断点;相当于执行了breakpoint disable 1.1,如果不指定组号则可以删除所有断点。

  • 命令expression(简写为p),expression可以在你hook的环境中动态的注入代码,例如在ViewController的touchBegain的方法加断点hook住当前的控制器通过命令p self.view.backgroundColor = [UIColor redColor]给当前控制器设置颜色;(LLDB换行:control+回车)。

  • 内存断点,除了给方法加断点外,还可以给程序中的某一个属性加断点,例如:watchpoint set variable p1->_name其中p1是对象,_name是p1的属性,当_name发生改变是,程序就会触发断点。这个有点类似KVO。

  • 断点添加操作,break command add x,当断点一触发就会执行添加的代码,x是断点组号;break command list:查看断点添加的列表,break command delete:删除断点添加代码。
    target stop-hook add -o "xxx",每次stop的时候都会调用,这个命令只对 breakpoint和watchpoint有效。同样的有target stop-hook delete:删除

  • image lookup -a xxx查看断点堆栈信息详情,xxx为内存地址。

相关文章

  • iOS 调试

    iOS调试 - NSLog iOS调试 - 断点 iOS调试 - LLDB iOS调试 - EXC_BAD_ACC...

  • 各种调试技巧

    断点调试并配合LLDB常用调试命令LLDB命令详见:http://www.jianshu.com/p/d14a25...

  • 知识点-LLDB调试命令

    lldb是我们平时在打断点时候,打印面板出现的。 lldb是Xcode自带的调试工具,下面是常用的lldb调试命令...

  • LLDB命令调试与断点调试

    [LLDB命令调试与断点调试] https://my.oschina.net/notting/blog/11529...

  • iOS开发技能之lldb常用命令

    lldb命令调试 首先我们创建一个简单工程来调试这些命令。打断点,下方就可以进行lldb调试。 p & po po...

  • LLDB断点调试

    LLDB(Low Lever Debug)是一个轻量级的调试工具. 断点 通过指令breakpoint set -...

  • LLDB 断点调试

    断点 1.添加断点 1.给test1函数添加断点(C函数)set 是子命令, -n 是选项,是--name 的缩写...

  • 常用调试命令

    LLDB常用命令 LLDB是LLVM下的调试器 p 输出基本类型 po 输出objc对象 expr 断点调试时,在...

  • iOS LLDB调试

    LLDB是XCode内置调试工具 我们加了断点,然后在运行到断点处就停了下来,接下来我们看到lldb这里了吗?我们...

  • LLDB调试(二)

    前言: lldb断点类型: 软件断点:正在调试的二进制文件中的断点,在调试器应使用一种迫使 CPU发出软件中断(又...

网友评论

      本文标题:LLDB断点调试

      本文链接:https://www.haomeiwen.com/subject/igiodftx.html