打印变量

  1. 打印数字

    (lldb) p/d 16
    16
  2. 16 进制格式

    (lldb) p/x 16
    0x10
  3. 2 进制格式

    (lldb) p/t 16
    0b00000000000000000000000000010000
    (lldb) p/t (char)16
    0b00010000

声明变量

(lldb) e int $a = 2
(lldb) p $a * 19
38
(lldb) e NSArray *$array = @[ @"Saturday", @"Sunday", @"Monday" ]
(lldb) p [$array count]
2

流程控制

  1. continue
    continuec
  2. step over,执行一行代码
    nextn
  3. step into
    steps
  4. step out
    thread step-outfinish
  5. 从当前函数返回
    thread return

管理断点

  1. 查看所有断点

    (lldb) br list
    Current breakpoints:
    1: file = '/testStringIndex/testStringIndex/ViewController.m', line = 73, exact_match = 0, locations = 1, resolved = 1, hit count = 1 1.1: where = testStringIndex`-[ViewController configureSections] + 261 at ViewController.m:73, address = 0x000000010de75515, resolved, hit count = 1 2: file = '/testStringIndex/testStringIndex/ViewController.m', line = 31, exact_match = 0, locations = 1, resolved = 1, hit count = 1 2.1: where = testStringIndex`-[ViewController viewDidLoad] + 701 at ViewController.m:31, address = 0x000000010de74f3d, resolved, hit count = 1
  2. disable 断点

    (lldb) br disable 2.1
    1 breakpoints disabled.
  3. 删除断点

    (lldb) br delete 1.1
    0 breakpoints deleted; 1 breakpoint locations disabled.

打断点

  1. 指定文件指定行数打断点

    (lldb) br set  -f ViewController.m -l 76
    Breakpoint 2: where = testStringIndex`-[ViewController configureSections] + 451 at ViewController.m:77, address = 0x000000010eff15d3
    (lldb) b ViewController.m:79
    Breakpoint 3: where = testStringIndex`-[ViewController configureSections] + 526 at ViewController.m:79, address = 0x000000010eff161e
  2. 在符号(C语言函数)上打断点

    (lldb) b isEven
    Breakpoint 3: where = DebuggerDance`isEven + 16 at main.m:4, address = 0x000000010a3f6d00
    (lldb) br s -F isEven
    Breakpoint 4: where = DebuggerDance`isEven + 16 at main.m:4, address = 0x000000010a3f6d00
  3. 在 OC 函数上打断点

    (lldb) breakpoint set -F "-[NSArray objectAtIndex:]"
    
    Breakpoint 4: where = CoreFoundation`-[NSArray objectAtIndex:], address = 0x000000010fbb7570
    Breakpoint 5: where = CoreFoundation`-[NSArray objectAtIndex:], address = 0x000000010fbb7570
    (lldb) b -[NSArray objectAtIndex:] Breakpoint 6: where = CoreFoundation`-[NSArray objectAtIndex:], address = 0x000000010fbb7570
    Breakpoint 7: where = CoreFoundation`-[NSArray objectAtIndex:], address = 0x000000010fbb7570
    (lldb) breakpoint set -F "+[NSSet setWithObject:]" Breakpoint 8: where = CoreFoundation`+[NSSet setWithObject:], address = 0x000000010fadd5d0
    Breakpoint 9: where = CoreFoundation`+[NSSet setWithObject:], address = 0x000000010fadd5d0
    (lldb) b +[NSSet setWithObject:] Breakpoint 10: where = CoreFoundation`+[NSSet setWithObject:], address = 0x000000010fadd5d0
    Breakpoint 11: where = CoreFoundation`+[NSSet setWithObject:], address = 0x000000010fadd5d0

更新界面

Chisel 中有一个命令,叫做 caflush,来渲染。

(lldb) e (void)[$myView setBackgroundColor:[UIColor blueColor]]
(lldb) e (void)[CATransaction flush] //渲染

Chisel 的命令

  1. 非重写方法的符号断点

    (lldb) bmessage -[MyViewController viewDidAppear:]
    Setting a breakpoint at -[UIViewController viewDidAppear:] with condition (void*)object_getClass((id)$rdi) == 0x000000010e2f4d28
    Breakpoint 1: where = UIKit`-[UIViewController viewDidAppear:], address = 0x000000010e11533c

    MyViewController 并没有实现这个方法。

    (lldb) help bmessage
    For more information run 'help bmessage' Expects 'raw' input (see 'help
    raw-input'.)

    Syntax: bmessage
    Set a breakpoint for a selector on a class, even if the class itself doesn't
    override that selector. It walks the hierarchy until it finds a class that does
    implement the selector and sets a conditional breakpoint there.

    Arguments:
    ; Type: string; Expression to set a breakpoint on, e.g. "-[MyView
    setFrame:]", "+[MyView awesomeClassMethod]" or "-[0xabcd1234 setFrame:]"

  2. 打印内部变量

    (lldb) pinternals self
    (ViewController) $14 = {
    _allStrings = 0x000060800005cec0 @"15 elements"
    _tableView = 0x00007fd27901fe00
    _sectionsArray = nil
    _collation = nil
    }
  3. 打印继承关系

    (lldb) pclass self
    ViewController
    | UIViewController
    | | UIResponder
    | | | NSObject

其他

  1. 当前行数和源码

    (lldb) frame info
    frame #0: 0x000000010704e515 testStringIndex`-[ViewController configureSections](self=0x00007fb3c8006160, _cmd="configureSections") at ViewController.m:73
  2. 查看内存

    (lldb) x/4c $str
    0x7fd04a900040: monk

LLDB 和Chisel 使用例子的更多相关文章

  1. iOS开发——测试篇&breakpoints、lldb 和 chisel 的详解

    breakpoints.lldb 和 chisel 的详解 Breakpoints BreakPoint分类 breakpoint也是有分类的,我这里的文章内大致按使用的方式分为了 Normal Br ...

  2. breakpoints、lldb 和 chisel 的使用

    http://www.cocoachina.com/ios/20150803/12805.html Breakpoints BreakPoint分类 breakpoint也是有分类的,我这里的文章内大 ...

  3. (转)Xcode调试技巧

    转自http://www.apkbus.com/android-140340-1-1.html 这篇文章给大家带来的是一些Xcode实用技巧,比如: • 摆脱NSlog打印输出,使用断点日志. • 摆 ...

  4. 关于Xcode调试的帖子,感觉不错,转来看看

    http://www.raywenderlich.com/10209/my-app-crashed-now-what-part-1 http://www.raywenderlich.com/10505 ...

  5. 调试工具Chisel-LLDB插件

    Chisel-LLDB命令插件 相信每个人或多或少都在用LLDB来调试,比如po一个对象.LLDB的是非常强大的,且有内建的,完整的 Python 支持.今天我们主要介绍一个 facebook 开源的 ...

  6. Chisel-LLDB命令插件,让调试更Easy

    http://blog.cnbluebox.com/blog/2015/03/05/chisel/ LLDB 是一个有着 REPL 的特性和 C++ ,Python 插件的开源调试器.LLDB 绑定在 ...

  7. 说说XcodeLLDB调试的那些事儿

    使用场景之一,接收他人的项目,快速理清其层次结构,可以打标识符断点,如下图 每一个VC,都加了个在viewDidLoad方法处的断点,这样运行程序时,逐步断点,便可以理清层次, 但是,需要手动不断的继 ...

  8. breakpoints && lldb  && chisel 的使用

    Breakpoints BreakPoint分类 breakpoint也是有分类的.我这里的文章内大致按使用的方式分为了 Normal Breakpoint,Exception Breakpoint, ...

  9. [转] 与调试器共舞 - LLDB 的华尔兹

    你是否曾经苦恼于理解你的代码,而去尝试打印一个变量的值? NSLog(@"%@", whatIsInsideThisThing); 或者跳过一个函数调用来简化程序的行为? NSNu ...

随机推荐

  1. js中with 用法

    with 语句用于设置代码在特定对象中的作用域. 它的语法: with (expression) statement例如: var sMessage = "hello"; with ...

  2. [Selenium]Turn Page By Scroll Bar

    Description: Need to turn page by operating scroll bar and find out the element in the current page. ...

  3. Greeplum 系列(八) 数据维护

    Greeplum 系列(八) 数据维护 一.事务管理 begin(start transaction) # 开始事务 savepoint # 保存事务回滚点 rollback # 回滚事务 end(c ...

  4. linux 关键发行版及其关系图

  5. chrome url protocol 提示配置文件路径

    %localappdata%\Google\Chrome\User Data\Default\Preferences 搜索对应的协议名,例如:{"x-github-client": ...

  6. xcconfig

    [xcconfig] 1.When you can use a .xcconfig file? Use .xcconfig files if you find yourself changing th ...

  7. asp.net 4高级程序设计( 第4版)文摘

    第一部分 核心概念 第1章 asp.net 简介 第2章 visual studio 第3章 Web窗体 3.2 web窗体处理阶段 页面框架初始化(page.init),用户代码初始化(page.l ...

  8. 23 DesignPatterns学习笔记:C++语言实现 --- 2.1 Bridge

    23 DesignPatterns学习笔记:C++语言实现 --- 2.1 Bridge 2016-07-22 (www.cnblogs.com/icmzn) 模式理解  

  9. postman的使用方法详解!最全面的教程

      文章来源:http://www.cnplugins.com/tool/specify-postman-methods.html     一 简介 Postman 是一款功能超级强大的用于发送 HT ...

  10. Github的注册经历

    姓名 韦军 学号 1413042023 班级 网络141 兴趣爱好 读书 上网 在注册Github时,先去网上下载了一个Github的app,打开一看全是英文,还是看懂了一些,点击开始注册,在注册时还 ...