Xcode调试代码
来源:互联网 发布:time machine 恢复 mac 编辑:程序博客网 时间:2024/06/13 06:35
Xcode调试代码
在使用Xcode的开发的过程中,难免遇到代码各种崩溃的问题,这里除了介绍的几种方法来调试以外,之前自己在开发中遇到问题,在StackOverflow上找到了答案
前几种方法可参照
英语原文:http://crushbeercrushcode.org/2012/11/four-tips-for-debugging-in-xcode-like-a-bro/
中文翻译:http://blog.csdn.net/joywii/article/details/19641931
下面是我遇上的问题
* Terminating app due to uncaught exception ‘NSInvalidArgumentException’, reason: ‘* setObjectForKey: object cannot be nil (key: title)’
* First throw call stack:
(0x18545e084 0x195a440e4 0x1853497b8 0x1000ce3b4 0x1000d41d4 0x189c14e68 0x189bfdfc0 0x189c14804 0x189c14490 0x189c0d9e4 0x189be11d4 0x189e7f98c 0x189bdf73c 0x185416324 0x1854155c8 0x185413678 0x185341664 0x18e4835a4 0x189c464f8 0x100134f00 0x1960b2a08)
libc++abi.dylib: terminating with uncaught exception of type NSException
看到这个问题的第一反应就是,肯定那个字典被设置了nil,再一细看就会发现,崩溃信息还打印出了key:@”title”. 第一反应就是全局搜索了一下,发现相同的太多了,也没有相关的上下文,怎么办?
于是我使用lldb下的 bt 来查看
(lldb) bt* thread #1: tid = 0x558b, 0x00000001961cb270 libsystem_kernel.dylib`__pthread_kill + 8, queue = 'com.apple.main-thread', stop reason = signal SIGABRT frame #0: 0x00000001961cb270 libsystem_kernel.dylib`__pthread_kill + 8 frame #1: 0x0000000196269228 libsystem_pthread.dylib`pthread_kill + 112 frame #2: 0x0000000196142b18 libsystem_c.dylib`abort + 112 frame #3: 0x0000000195229418 libc++abi.dylib`abort_message + 116 frame #4: 0x0000000195248b8c libc++abi.dylib`default_terminate_handler() + 304 frame #5: 0x0000000195a443c0 libobjc.A.dylib`_objc_terminate() + 128 frame #6: 0x0000000195245bb4 libc++abi.dylib`std::__terminate(void (*)()) + 16 frame #7: 0x000000019524573c libc++abi.dylib`__cxa_rethrow + 144 frame #8: 0x0000000195a44294 libobjc.A.dylib`objc_exception_rethrow + 44 frame #9: 0x0000000185341714 CoreFoundation`CFRunLoopRunSpecific + 572 frame #10: 0x000000018e4835a4 GraphicsServices`GSEventRunModal + 168 frame #11: 0x0000000189c464f8 UIKit`UIApplicationMain + 1488 * frame #12: 0x0000000100134f00 XXApplication`main(argc=1, argv=0x000000016fd5fa58) + 124 at main.m:16 frame #13: 0x00000001960b2a08 libdyld.dylib`start +
但是这还是没有什么东西啊,继续向下看,不是还有那么多地址信息么。怎么去解析这些地址信息读出来? 在stackOverflow上找了这个
image lookup -a xxxx
然后直接在lldb试了试,咦,相关信息出来了。
(lldb) image lookup -a 0x1853497b8 Address: CoreFoundation[0x0000000181b917b8] (CoreFoundation.__TEXT.__text + 64232) Summary: CoreFoundation`-[__NSDictionaryM setObject:forKey:] + 972(lldb) image lookup -a 0x1000ce3b4 Address: XXApplication[0x000000010002e3b4] (XXApplication.__TEXT.__text + 167516) Summary: XXApplication`-[kPlayerWrapperViewController setMessageToDevicePlayer] + 208 at kPlayerWrapperViewController.m:485
然后果断定位到代码行,发现原来是同事在此处操作的时候,没有判断数据的存在性导致的,至此,问题原因找到了。
- Xcode调试代码
- Xcode 6.3 代码调试
- Iphone xcode 代码错误调试
- Xcode调试
- xcode 调试
- xcode 调试
- XCODE调试
- xcode 调试
- XCode调试
- xcode调试
- Xcode调试
- xcode调试
- xcode 调试
- Xcode调试断点不能停在代码区终极解决方案
- Xcode开发调试技巧,以及常用的出错提示代码
- Xcode调试断点不能停在代码区终极解决方案
- Xcode断点调试不进入代码区的解决办法
- Xcode 断点调试 一直不停在代码区
- MPMovieplayerviewcontroller播放结束后自动消失的解决方案
- HTTP 错误 404.13 - Not Found 请求筛选模块被配置为拒绝超过请求内容长度的请求。
- DatePicker与TimePicker的使用
- 人工智能之搜索策略-A*算法入门
- JS正则表达式使用详细分析
- Xcode调试代码
- 屏幕适配的方法
- UIWebView和网页交互的研究初探
- 分类模型的精确率(precision)与召回率(recall)(Python)
- leetcode 119:Pascal's Triangle II
- 指南、图书搜索第一版优化
- Activity Task Final Analysis
- iOS 最新版 CocoaPods 的安装流程
- Data Binding(数据绑定)用户指南