xcode gdb/lldb调试命令
2015-04-23 22:30
344 查看
常见错误:lldb error: property not found on object of type的解决
场景描述:
断点位置:CGRect frame = view.frame;
当我在控制台:使用lldb命令会出现这么几种情况:
1,我输入:po frame可以正常得到对象
2,我输入:po view.frame则会报以下错误
3,我输入:p (CGRect)[view frame]才能正确得到想要的结果
其实现在 在lldb调试中
详细参考地址
附上常用命令:
这里重点强调一个命令:
expr :可在运行时修改变量的值!(多么牛逼的作用)
你以前怎么验证是不是某个变量的值导致整段程序不能正常工作?修改代码中的变量的值,然后cmd+r重新启动app?现在你不需要这么做了,只需要设置一个断点,当程序在这进入调试模式后,使用expr命令即可在运行时修改变量的值。
假如有一个loginWithUsername:方法,需要两个参数:username,password。
首先设置好断点,如下图所示:
运行app,进入断点模式后,在(lldb)后输入
控制台会返回以下信息
现在跳出断点,执行断点之后的两条输出语句,控制台会有以下输出
看到看吧,我们在运行时修改了变量的值,事情还可以变的更简单一些,我们可以编辑断点,让它自动填充需要的修改的变量的值,并且可以选择在此断点处不进入断点模式,仅仅修改指定变量的值,然后自动执行后续代码。
右击断点选择“Edit Breakpoint…”(或者按住cmd+option,单击断点),然后如下图所示设置断点
注意选中了最后一行(“Automatically continue after evaluating”)的选择框,这就保证运行到这个断点的时,填充变量的值,然后继续运行,并不在此处断点进入调试模式。
运行app,你会得到和上述手动设置变量的值一样的输出。
接下来单击断点,使其处于禁用状态,现在箭头的颜色应该是浅蓝色的,重新运行app,你会发现username和password的值没有在运行时被改变了。
参考链接
好了这是我常用的一些,如果大家还有什么使用技巧可以留言补充!
场景描述:
断点位置:CGRect frame = view.frame;
当我在控制台:使用lldb命令会出现这么几种情况:
1,我输入:po frame可以正常得到对象
(lldb) po frame (origin = (x = 0, y = 0), size = (width = 200, height = 100)) (origin = (x = 0, y = 0), size = (width = 200, height = 100))
2,我输入:po view.frame则会报以下错误
(lldb) po view.frame error: property 'frame' not found on object of type 'UIView *' error: 1 errors parsing expression
3,我输入:p (CGRect)[view frame]才能正确得到想要的结果
print (CGRect)[view frame] (CGRect) $1 = (origin = (x = 0, y = 0), size = (width = 200, height = 100))
其实现在 在lldb调试中
详细参考地址
附上常用命令:
命令 解释 break NUM 在指定的行上设置断点。 bt 显示所有的调用栈帧。该命令可用来显示函数的调用顺序。 clear 删除设置在特定源文件、特定行上的断点。其用法为:clear FILENAME:NUM。 continue 继续执行正在调试的程序。该命令用在程序由于处理信号或断点而导致停止运行时。 display EXPR 每次程序停止后显示表达式的值。表达式由程序定义的变量组成。 file FILE 装载指定的可执行文件进行调试。 help NAME 显示指定命令的帮助信息。 info break 显示当前断点清单,包括到达断点处的次数等。 info files 显示被调试文件的详细信息。 info func 显示所有的函数名称。 info local 显示当函数中的局部变量信息。 info prog 显示被调试程序的执行状态。 info var 显示所有的全局和静态变量名称。 kill 终止正被调试的程序。 list 显示源代码段。 make 在不退出 gdb 的情况下运行 make 工具。 next 在不单步执行进入其他函数的情况下,向前执行一行源代码。 print EXPR 显示表达式 EXPR 的值。 print-object 打印一个对象 print (int) name 打印一个类型 print-object [artist description] 调用一个函数 set artist = @"test" 设置变量值 whatis 查看变理的数据类型
这里重点强调一个命令:
expr :可在运行时修改变量的值!(多么牛逼的作用)
你以前怎么验证是不是某个变量的值导致整段程序不能正常工作?修改代码中的变量的值,然后cmd+r重新启动app?现在你不需要这么做了,只需要设置一个断点,当程序在这进入调试模式后,使用expr命令即可在运行时修改变量的值。
假如有一个loginWithUsername:方法,需要两个参数:username,password。
首先设置好断点,如下图所示:
运行app,进入断点模式后,在(lldb)后输入
expr username = @"username" expr password = @"badpassword"
控制台会返回以下信息
(NSString *) $0 = 0x3d3504c4 @"username" (NSString *) $1 = 0x1d18ef60 @"badpassword"
现在跳出断点,执行断点之后的两条输出语句,控制台会有以下输出
(0x1c59aae0) A line for the breakpoint (0x1c59aae0) Username and Password after: username:badpassword
看到看吧,我们在运行时修改了变量的值,事情还可以变的更简单一些,我们可以编辑断点,让它自动填充需要的修改的变量的值,并且可以选择在此断点处不进入断点模式,仅仅修改指定变量的值,然后自动执行后续代码。
右击断点选择“Edit Breakpoint…”(或者按住cmd+option,单击断点),然后如下图所示设置断点
注意选中了最后一行(“Automatically continue after evaluating”)的选择框,这就保证运行到这个断点的时,填充变量的值,然后继续运行,并不在此处断点进入调试模式。
运行app,你会得到和上述手动设置变量的值一样的输出。
接下来单击断点,使其处于禁用状态,现在箭头的颜色应该是浅蓝色的,重新运行app,你会发现username和password的值没有在运行时被改变了。
参考链接
好了这是我常用的一些,如果大家还有什么使用技巧可以留言补充!
相关文章推荐
- xcode gdb/lldb调试命令
- xcode gdb/lldb调试命令
- xcode gdb/lldb调试命令
- xcode gdb/lldb调试命令
- XCode gdb/lldb 调试命令
- 实用LLDB命令 Xcode调试
- 关于 Xcode 调试工具 GDB and LLDB
- xcode lldb gdb调试
- Xcode的控制台调试命令 LLVM lldb
- Xcode下的GDB调试命令
- Xcode下 gdb 调试命令
- Xcode调试技巧(一) lldb命令
- 让新版XCode不用lldb而是gdb调试(2012/12/14)
- Xcode下 gdb 调试命令
- xcode中gdb调试命令
- xcode的gdb调试命令(转载)
- Xcode下GDB调试命令
- IOS调试lldb命令常用,po, Xcode控制台调试
- lldb 和 gdb调试命令汇总
- lldb(gdb)常用的调试命令