• IOS调试lldb命令常用,po,


    lldb命令常用(备忘)

    假如你准备在模拟器里面运行这个,你可以在“(lldb)”提示的后面输入下面的:

    (lldb) po $eax

    LLDB在xcode4.3或者之后的版本里面是默认的调试器。假如你正在使用老一点版本的xcode的话,你又GDB调试器。他们有一些基本的相同的命令,因此假如你的xcode使用的是“(gdb)”提示,而不是“(lldb)”提示的话,你也能够更随一起做,而没有问题。

    “po”命令是“print object”(打印对象)的简写。“$eax”是cup的一个寄存器。在一个异常的情况下,这个寄存器将会包含一个异常对象的指针。注意:$eax只会在模拟器里面工作,假如你在设备上调试,你将需要使用”$r0″寄存器。

    例如,假如你输入:

    (lldb) po [$eax class]

    你将会看像这样的东西:

    (id) $2 = 0x01446e84 NSException

    这些数字不重要,但是很明显的是你正在处理的NSException对象在这里。

    你可以对这个对象调用任何方法。例如:

    (lldb) po [$eax name]

    这个将会输出这个异常的名字,在这里是NSInvalidArgumentException,并且:

    (lldb) po [$eax reason]

    这个将会输出错误消息:

    (unsigned int) $4 = 114784400 Receiver () has no segue with identifier 'ModalSegue'

    注意:当你仅仅使用了“po $eax”,这个命令将会对这个对象调用“description”方法和打印出来,在这个情况下,你也会得到错误的消息。

    实用LLDB命令

    命令名 用法 说明

     
    expr expr 表达式 可以在调试时动态执行指定表达式,并将结果打印出来,很有用的命令。
    po po 表达式 与expr类似,打印对象,会调用对象description方法。是print-object的简写
    print print (type) 表达式 也是打印命令,需要指定类型。
    bt bt [all] 打印调用堆栈,是thread backtrace的简写,加all可打印所有thread的堆栈。
    br l br l breakpoint list的简写
    process continue l process continue 简写:c
    thread step-in l thread step-in l 简写:s
    thread step-inst l thread step-inst l 简写:si
    thread step-over l thread step-over l 简写:n
    thread step-over-inst l thread step-over-inst l 简写:ni
    thread step-out l thread step-out l 简写:f
    thread list thread list 简写:th l
    Blog都是随笔,只当做笔记,不会有详细介绍,测试请慎重。。。
  • 相关阅读:
    Android
    Android
    Android
    Android
    Android
    【工作中学习】CreateProcessAsUser失败,错误码:1314
    【Angular JS】网站使用社会化评论插件,以及过程中碰到的坑
    【Angular JS】正确调用JQuery与Angular JS脚本
    【工作】Proxy Server的优化
    AWS ELB Sticky Session有问题?别忘了AWSELB cookie
  • 原文地址:https://www.cnblogs.com/JerryBaxia/p/4797429.html
Copyright © 2020-2023  润新知