首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

XCode基本使用及调试技巧

编辑区:用于编写代码的区域。 调试区:用于输出和显示调试信息的区域。 实用区:用于显示属性和提供xib类库的区域。 工具栏:可以选择运行的设备等。...调试区最上面一条是调试命令,包括断点开关、继续执行、单步执行、单步不如、单步步过等命令;左边的是watch窗口,负责变量信息的显示;右边的是日志窗口,接收和显示程序日志。...三、常用命令 1、 p命令 Xcode里可以使用p命令查看基本数据类型的值,使用po命令查看oc对象。...另外对于多线程问题合理的使用线程断点和条件断点也是很有帮助的。 五、UI调试 1、控件信息: 查看控件信息无外乎还是使用p和po命令。...如果日志窗口没有输出异常信息,可以切到抛异常的那一帧,然后po $r0或者po $eax即可看到异常信息。 ?

6.5K71

Swift进阶-LLDB调试

程序猿最好的利器就是开发工具,iOS开发者最基本,最关键的一点就是熟练使用Xcode,而LLDB则是Xcode中至关重要的一环。...显示任何返回值与LLDB的默认格式 continue 继续执行当前进程中的所有线程 detach 从当前目标进程分离 di 拆卸当前目标中指定的指令,默认为当前线程的当前功能和栈帧 dis 拆卸当前目标中指定的指令...显示任何返回值与LLDB的默认格式 parray 评估当前线程上的表达式。显示任何返回值与LLDB的默认格式 po 评估当前线程上的表达式。...实际上,po指令就是 e -O -- 的别名 expr指令: expression的简写 call指令: 调用方法的意思 例如: func sum(_ a: Int, _ b: Int) -> Int...{ return a + b } sum(5, 4) p指令结果: (lldb) p a (Int) $R0 = 5 po指令结果: (lldb) po a 5 e指令结果:

87930
  • 您找到你想要的搜索结果了吗?
    是的
    没有找到

    Xcode 调试技巧 --常用命令和断点

    Xcode 中的调试技巧与我们的日常开发息息相关,而这些调试技巧在我们解决Bug时,常常有事半功倍的作用,经常会用到的有各种断点 和 命令。...p 和 po 使用范例 当然,这些打印功能,除了使用命令外,我们也可以使用左侧区域,点击变量右键---> print Description of “xxx”: ?...(lldb) p i (NSInteger) $16 = 1 (lldb) expression i = 5 (NSInteger) $17 = 5 (lldb) po i 5 4.call 命令...断点 Xcode 中的断点也是很有学问的,有普通断点、条件断点、符号断点、异常断点等很多种。 1.普通断点 打一个普通断点,只需要找到对应的行,在代码左侧(行号上)点击一下即可。...Watch 断点 关于 Xcode 调试技巧中的 断点和命令就先这么多了,其他有用到的以后再补充。

    3.2K40

    iOS逆向工程之Hopper+LLDB调试第三方App

    LLDB是Low Level Debugger的简称,在iOS开发的调试中LLDB是经常使用的,LLDB是Xcode内置的动态调试工具。...1、获取usbmuxd usbmuxd虽然目前最新的版本是1.1.0,但是1.1.0版本和1.0.9版本仅支持Linux系统,也就是说我们的Mac还是得下载v1.0.8的版本,下载地址(usbmuxd-v1.0.8...3.输出寄存器的值(p, po) 在iOS开发中,我们在使用LLDB调试时,经常会用到po命令来输出某个变量或者常量的值。在使用LLDB调试WeChat时,我们也可以使用某些命令来输出寄存器中的值。...也就是说“handleAuthResponse:”负责处理登录业务逻辑的网络响应,并且在这个函数的前边有一个比较(cmp r0, r1), 根据r0和r1的比较结果来进行跳转。 ?...接下来我们先将r0和r1中的值进行打印,$r0 = 8, $r1 = 351。

    2.3K90

    iOS代码调试之LLDB命令

    ),具有REPL (Read-Eval-Print Loop,交互式解释器)、C++和Python插件,位于Xcode窗口底部控制台中,也可以在terminal中使用。...在LLDB模式下,根据需要输入相关的LLDB调试命令既可进行代码调试,下面小编将给大家介绍几款常用的LLDB命令。 1.打印 打印是代码调试中最常用的命令,相关的命令有:p和po。...p 和 po 的区别在于使用 po 只会输出对应的值,而 p 则会返回值的类型以及命令结果的引用名。 用法如下: ?...4)frame variable查看帧变量 frame variable命令显示当前帧的变量,默认输出当前帧所有参数和所有局部变量,如下图所示: ?...5.流程控制 使用xcode运行程序到达断点时会就会停止运行,调试条上会出现四个可以用来控制程序的执行流程的按钮,功能分别是 “继续”和“暂停”、“下一步”、“进入”、“跳出”。 ?

    1.8K20

    如何解决Xcode中的SIGABRT错误

    在继续之前,让我们讨论SIGABRT的一些误解和常见陷阱: SIGABRT错误通常与AppDelegate类声明无关,即使它在Xcode中突出显示了该行。...检查堆栈跟踪 在许多情况下,Xcode不会向您显示SIGABRT崩溃的任何有用的错误消息。发生这种情况时,了解一些调试命令很有用,例如bt。 Xcode具有称为LLDB的集成调试环境。...3] = "Trillian" } 要打印复杂的对象,请使用po。...有些异常是由应用程序的错误或无效状态引起的,因此异常断点对于查找和修复这些错误很有用。...现在,您可以使用调试器检查值,单步执行代码并使用LLDB命令。如果可能,Xcode将带您到引起异常的代码行。 请记住,异常并不一定会使您的应用程序崩溃!

    6.1K20

    扒虫篇-Debug几个实用的方法

    (3)异常断点Exception BreakPoint 在设置异常断点的情况下 当程序crash时 Xcode会帮我们定位到crash产生的位置。 ? 设置异常断点步骤: ?...三.LLDB命令 LLDB的Xcode默认的调试器, 我们通过执行LLDB命令使调试过程更加的灵活。并且可以通过指令立刻看到一些我们需要修改完代码再次运行才能看到的效果或者结果,超级实用。...LLDB常用命令如下: 1, p (print)用于输出基本类型, 如 p (int)[[[self view] subviews] count] 输出子视图个数。...4, call      call即是调用的意思。其实上述的po和p也有调用的功能。因此一般只在不需要显示输出,或是方法无返回值时使用call。..., po 命令:为 print object 的缩写,显示对象的文本描述(显示从对象的 description 消息获得的字符串信息)。

    1.6K10

    汇编寄存器的规则

    操作码后面的内容是源标签和目标标签。也就是说,这些是操作码所作用的对象。在上面的示例中,有几个寄存器,显示为 rbx 、 rsp 、 rdi 和 rbp 。前面的 % 告诉您这是一个寄存器。...# 将理论付诸实践 在本节中,您将使用本章资源包中提供的名为 Registers 的项目。 通过 Xcode 打开该项目,然后运行。 这是一个非常简单的应用程序,仅显示 64 位寄存器里面的内容。...需要注意的是,该应用程序不会实时的显示寄存器的值; 它只能在特定的函数调用期间显示寄存器的值。...(lldb) po [$rdi setBackgroundColor:[NSColor redColor]] (lldb) continue 之后就可以看到效果 # Swift 和寄存器 在 Swift...关闭 Xcode 和 Registers 项目。 打开终端窗口,然后启动 iPhone X Simulator。

    2.6K50

    LLDB实战之导出Mac微信备份聊天记录的SQLite密码(SQLCipher加密)

    涉及到的LLDB命令 br: 设置断点 memory read: 读取内存原始值 po: 打印变量,也可以执行函数并且获得返回值 bt: 打印当前调用栈 thread step over/in/out:...于是查看SQLCipher的API,看到用的是sqlite3_key()和sqlite3_key_v2()这2个函数,在源码里搜索,找到调用,一共有两处,在WCTDatabase+Database.mm...,其中$arg1为调用者本身,$arg2为方法名,后面的参数表示传递的实际参数,因此是从$arg3开始的,可以打印整个寄存器和$arg1,$arg2出来看看 (lldb) register read General...keySize, int pageSize)的时候接收的,断点打在setCipher上 (lldb) br set -n setCipher (lldb) c //继续执行 触发到sqlite3_key...的断点, 获取key和pageSize (lldb) memory read $arg2 0x600003f8fa90: 64 64 30 36 33 35 65 63 65 62 35 37 39

    6.3K31

    XCode调试器LLDB

    现在就让我们开始与调试器共舞一曲华尔兹,看看最后能达到怎样的高度。 LLDB LLDB 是一个有着 REPL 的特性和 C++ ,Python 插件的开源调试器。...LLDB 绑定在 Xcode 内部,存在于主窗口底部的控制台中。调试器允许你在程序运行的特定时暂停它,你可以查看变量的值,执行自定的指令,并且按照你所认为合适的步骤来操作程序的进展。...的缩写),我们可以使用它来进行简化: (lldb) po $8 ( foo, bar ) (lldb) po @"lunar" lunar...就像你可以在 C 语言中用 int a = 0 来声明一个变量一样,你也可以在 LLDB 中做同样的事情。不过为了能使用声明的变量,变量必须以美元符开头。...(lldb) e int $a = 2 (lldb) p $a * 19 38 (lldb) e NSArray *$array = @[ @"Saturday", @"Sunday", @"Monday

    1.4K30

    XCode调试器LLDB

    现在就让我们开始与调试器共舞一曲华尔兹,看看最后能达到怎样的高度。 LLDB LLDB 是一个有着 REPL 的特性和 C++ ,Python 插件的开源调试器。...LLDB 绑定在 Xcode 内部,存在于主窗口底部的控制台中。调试器允许你在程序运行的特定时暂停它,你可以查看变量的值,执行自定的指令,并且按照你所认为合适的步骤来操作程序的进展。...的缩写),我们可以使用它来进行简化: (lldb) po $8 ( foo, bar ) (lldb) po @"lunar" lunar...就像你可以在 C 语言中用 int a = 0 来声明一个变量一样,你也可以在 LLDB 中做同样的事情。不过为了能使用声明的变量,变量必须以美元符开头。...(lldb) e int $a = 2 (lldb) p $a * 19 38 (lldb) e NSArray *$array = @[ @"Saturday", @"Sunday", @"Monday

    1.3K60

    lldb 入坑指北(1) - 给Xcode批量添加启用&禁用断点功能

    前言 为了避免浪费你的时间,在阅读本文前,请先思考以下问题: 你是否经常使用 Xcode 的断点功能? Xcode 的断点功能好用吗?...阅读本文需要以下技能: 对 Python 有基本的了解 对 Xcode 的断点功能有基本的了解(相关的文档可以参考 Xcode 断点文档[2]) 通过本文,希望大家可以了解以下内容: 了解 lldb 的...如下图所示,位于主窗口的底部,名为Conseole的窗口就是用于和 lldb 交互的区域。 ? x 断点 首先,我们先通过以下步骤对 lldb 进行初步的了解。...po self 是指把 self 当做一个对象进行打印,类似的还有 p self 等命令。 ps. 通过help命令,可以打印所有的可用命令。pss. 通过help po命令,可以打印该命令的用法。...internal_dict 包含了当前脚本会话的变量和方法。 HandleCommand 是一个实例方法,通过它,我们可以在 Python 脚本里面,调用 lldb 的方法。

    1.1K10

    逆向开发从零到整(LLDB)

    前言 LLDB是我们平时调试中使用最多的工具之一,p或者po是使用最多的指令。除了p和po之外,还有什么指令可以使用呢?今天再次来提升一下对LLDB的使用吧。...一、LLDB LLDB是个开源的内置于XCode的具有REPL(read-eval-print-loop)特征的Debugger,其可以安装C++或者Python插件。...target stop-hook命令就是让你可以在每次stop的时候去执行一些命令 target stop-hook只对breakpoint和watchpoint的程序stop生效,直接点击Xcode上的...见谅见谅 七、expression 指令 expression命令是执行一个表达式,并将表达式返回的结果输出,是LLDB调试命令中最重要的命令,也是我们常用的p 和 po 命令的 鼻祖。...八、frame 参数检查 frame frame 官方解释 frame 框架的意思,但它应解释成(帧)它能显示堆栈信息, 我们在控制台上输入命令bt,可以打印出来所有的frame。

    1K20

    iOS开发·UIWindow与视图层级调整技巧(makeKeyWindow,resignKeyWindow,makeKeyAndVisible,keyWindow,windowLevel,UIWind

    误区:关于keyWindow的混淆易错点 设置keyWindow与否并不 影响视图层级显示,仅来接收键盘及其它非触摸事件。...对于先后分别用makeKeyAndVisible方法和hidden的setter方法,还是先后分别用hidden的setter方法和makeKeyAndVisible方法,结局同样以最后改变显示状态的UIWindow...(lldb) po self.window.windowLevel 2000 同理,打印代表UIWindowLevelStatusBar层级的数据值 (lldb) po self.window.windowLevel...1000 同理,打印代表UIWindowLevelNormal层级的数据值 (lldb) po self.window.windowLevel 0 小结: windowLevel数值越大的显示在窗口栈的越上面...Xcode查看窗口栈 四. UIWindow常见操作方法总结 1.

    8K10

    XCode LLDB调试小技巧基础篇提高篇汇编篇

    导语: 记录平时用到的XCode LLDB调试小技巧 工欲善其事必先利其器,介绍一些LLDB调试的命令和小技巧~ 基础篇 1.print命令 p 输出基本类型,例如double,int po 输出对象类型...,例如NSObject 当然po也是可以输出基本类型的 p命令默认是按10进制输出的,如果想输出非十进制可以用以下方法 二进制 (lldb) p/t 10 (int) $2 = 0b00000000000000000000000000001010...八进制 (lldb) p/o 10 (int) $3 = 012 十六进制 (lldb) p/x 10 (int) $4 = 0x0000000a 更加详细的格式控制可以点击这里查看 2.expression...和free记录,从中我们可以得到一些有用信息帮助我们定位问题,比如MRC下赋值的时候没有retain导致用的时候野指针了。...上面我们在查找野指针的时候po $rdi,也就是查看第一个寄存器也就是Self的值。

    4.8K80
    领券