- 浏览: 538009 次
- 性别:
- 来自: 北京
文章分类
最新评论
-
landerson:
明显就有要求的嘛
ANDROID轻量级JSON序列化和反序列化[转] -
jimode2013:
很不错,就是需要这个方法
多个UIViewController使用addSubView,第二个 UIViewController 不响应旋转[转] -
w11h22j33:
...
[转]NSMutableArray中的自动释放对象让我郁闷了一整天 -
w11h22j33:
UILabel* label = [[UILabel a ...
Iphone开发 -
w11h22j33:
http://mobile.51cto.com/iphone- ...
获得通讯录中联系人的所有属性[转]
XCode 内置GDB,我们可以在命令行中使用 GDB 命令来调试我们的程序。下面将介绍一些常用的命令以及调试技巧。
po 命令:为 print object 的缩写,显示对象的文本描述(显示从对象的 description 消息获得的字符串信息)。
比如:
上图中,我使用 po 命令显示一个 NSDictionary 的内容。注意在左侧我们可以看到 dict 的一些信息:3 key/value pairs,显示该 dict 包含的数据量,而展开的信息显示 isa 层次体系(即class 和 metaclass结构关系)。我们可以右击左侧的 dict,选中“Print Description of "dict"”,则可以在控制台输出 dict 的详细信息:
- Printing description of dict:
- <CFBasicHash 0x1001149e0 [0x7fff7e27ff40]>{type = immutable dict, count = 3,
- entries =>
- 0 : <CFString 0x100002458 [0x7fff7e27ff40]>{contents = "first"} = <CFString 0x100002438 [0x7fff7e27ff40]>{contents = "one"}
- 1 : <CFString 0x100002498 [0x7fff7e27ff40]>{contents = "second"} = <CFString 0x100002478 [0x7fff7e27ff40]>{contents = "two"}
- 2 : <CFString 0x1000024d8 [0x7fff7e27ff40]>{contents = "third"} = <CFString 0x1000024b8 [0x7fff7e27ff40]>{contents = "three"}
- }
- (gdb)
print 命令:有点类似于格式化输出,可以输出对象的不同信息:
如:
- (gdb) print (char *)[[dict description] cStringUsingEncoding:4]
- $1 = 0x1001159c0 "{\n first = one;\n second = two;\n third = three;\n}"
- (gdb) print (int)[dict retainCount]
- $2 = 1
- (gdb)
注:4是 NSUTF8StringEncoding 的值。
info 命令:我们可以查看内存地址所在信息
比如 "info symbol 内存地址" 可以获取内存地址所在的 symbol 相关信息:
- (gdb) info symbol 0x00000001000017f7
- main + 343 in section LC_SEGMENT.__TEXT.__text of /Users/LuoZhaohui/Library/Developer/Xcode/DerivedData/RunTimeSystem-anzdlhiwvlbizpfureuvenvmatnp/Build/Products/Debug/RunTimeSystem
比如 "info line *内存地址" 可以获取内存地址所在的代码行相关信息:
- (gdb) info line *0x00000001000017f7
- Line 62 of "/Users/LuoZhaohui/Documents/Study/RunTimeSystem/RunTimeSystem/main.m" starts at address 0x1000017f7 <main+343> and ends at 0x10000180a <main+362>.
show 命令:显示 GDB 相关的信息。如:show version 显示GDB版本信息
- (gdb) show version
- GNU gdb 6.3.50-20050815 (Apple version gdb-1708) (Mon Aug 8 20:32:45 UTC 2011)
- Copyright 2004 Free Software Foundation, Inc.
- GDB is free software, covered by the GNU General Public License, and you are
- welcome to change it and/or distribute copies of it under certain conditions.
- Type "show copying" to see the conditions.
- There is absolutely no warranty for GDB. Type "show warranty" for details.
- This GDB was configured as "x86_64-apple-darwin".
help 命令:如果忘记某条命令的语法了,可以使用 help 命令名 来获取帮助信息。如:help info 显示 info 命令的用法。
- (gdb) help info
- Generic command for showing things about the program being debugged.
- List of info subcommands:
- info address -- Describe where symbol SYM is stored
- info all-registers -- List of all registers and their contents
- info args -- Argument variables of current stack frame
- info auxv -- Display the inferior's auxiliary vector
- info breakpoints -- Status of user-settable breakpoints
- info catch -- Exceptions that can be caught in the current stack frame
- info checkpoints -- Help
- info classes -- All Objective-C classes
- ......
- Type "help info" followed by info subcommand name for full documentation.
- Command name abbreviations are allowed if unambiguous.
- (gdb)
在系统抛出异常处设置断点
有时候我们的程序不知道跑到哪个地方就 crash 了,而 crash 又很难重现。保守的做法是在系统抛出异常之前设置断点,具体来说是在 objc_exception_throw处设置断点。设置步骤为:首先在 XCode 按 CMD + 6,进入断点管理窗口;然后点击右下方的 +,增加新的 Symbolic Breakpoint,在 Symbol 一栏输入:objc_exception_throw,然后点击 done,完成。 这样在 Debug 模式下,如果程序即将抛出异常,就能在抛出异常处中断了。比如在前面的代码中,我让 [firstObjctcrashTest]; 抛出异常。在 objc_exception_throw 处设置断点之后,程序就能在该代码处中断了,我们从而知道代码在什么地方出问题了。
发表评论
-
iOS App性能优化
2014-01-03 11:23 1694http://www.hrchen.com/2013/05/ ... -
iOS多线程编程Part 3/3 - GCD
2014-01-03 11:21 1649http://www.hrchen.com/2013/07/ ... -
iOS多线程编程Part 2/3 - NSOperation
2014-01-03 11:20 4544http://www.hrchen.com/2013/06/ ... -
iOS多线程编程Part 1/3 - NSThread & Run Loop
2014-01-03 11:17 7105http://www.hrchen.com/2013/06/ ... -
iOS移动网络环境调优那些事[转]
2014-01-02 17:10 2700http://xiangwangfeng.com/201 ... -
生成APNS Service证书的步骤[转]
2013-05-23 09:19 5678要进行推送服务的第一件事就是获取推送证书。它用来对你通过SS ... -
xcode 环境,多工程联编设置【转】
2013-02-28 21:59 8964http://blog.csdn.net/vienna_zj ... -
干掉你程序中的僵尸代码【转】
2012-12-22 11:05 966随着万圣节越来越流行,我感觉有必要跟大家讨论一下一个 ... -
一个文本框搞定信用卡相关信息的输入[转]
2012-12-22 11:03 1140http://beforweb.com/node/134 ... -
【转】深度技术分析“为什么ios比android流畅”
2012-09-23 19:41 1439原文 Andorid更新了一个版本又一个版本,硬 ... -
Iphone开发
2012-09-17 22:46 12071. NSClassFromString 这个方法 ... -
HowTo: Install iPhone SDK 2.0 – 3.1 for XCode 3.2[转]
2012-09-06 09:00 1223原文链接 So… you’ve installe ... -
Xcode 中设置部分文件ARC支持[转]
2012-08-03 10:57 1736ARC是什么 ARC是iOS 5推出的新功 ... -
xcode4 设置调试错误信息小结【转】
2012-07-19 14:37 1811方案1:NSZombieEnabled 先选中工程, ... -
Finding iPhone Memory Leaks: A “Leaks” Tool Tutorial【转】
2012-07-19 14:36 1266Finding iPhone Memory Lea ... -
[IPhone]如何使用Leak检查内存泄漏[转]
2012-07-19 14:34 1236简介 在IPhone程式开发中,记忆体泄漏(内存泄漏)是 ... -
获得通讯录中联系人的所有属性[转]
2012-06-21 14:04 1616获得通讯录中联系人的所有属性 ,看代码: ABAdd ... -
多个UIViewController使用addSubView,第二个 UIViewController 不响应旋转[转]
2012-06-20 23:51 16423------------------------------- ... -
shouldAutorotateToInterfaceOrientation 不触发或者不执行的问题[转]
2012-06-20 22:58 1462今天遇到一个很郁闷 ... -
UIViewController生命周期-学习笔记[转]
2012-06-20 22:57 1136UIViewController生命周 ...
相关推荐
6. **调试技巧**:运用Xcode的调试器进行代码调试,包括断点、变量观察、步进执行和内存检查。 7. **测试与性能分析**:了解单元测试、集成测试的实施,以及使用Instruments进行性能分析,识别并优化性能瓶颈。 8....
除此之外,Xcode还支持Cocoa Touch(iOS)和Cocoa(macOS)框架,这些框架提供了大量的预定义组件和服务,使得开发者可以快速构建功能丰富的应用。你还将学习到如何使用App Store Connect来提交应用,进行版本管理,...
9. **测试与调试**:Cocoa开发包括Xcode内置的测试框架和调试工具,帮助开发者确保代码的质量和稳定性。书中可能涵盖如何编写单元测试、集成测试以及使用Xcode的调试功能。 10. **发布与分发**:最后,你将学习如何...
- **调试技巧**:分享了一些调试技巧,帮助开发者快速定位和解决问题。 #### 在Cocoa中绘图 本章介绍了如何使用Cocoa框架来进行基本的绘图操作。 - **绘图基础**:解释了如何使用Cocoa API来绘制线条、形状等基本...
本书将分享一些实用的调试技巧,并指导如何优化应用程序的性能。 9. 高级编程技巧:随着对基础的掌握,本书还会介绍一些高级编程技巧,例如多线程编程、自定义类和继承等,帮助开发者在Cocoa环境中更高效地编写代码...
6. 排除问题和调试技巧:学习如何识别和解决问题,以及使用Xcode的调试工具。 本教程的章节结构如下: 1. 教程概述和设计模式:简述你要创建的应用,并介绍将采用的设计模式。 2. 创建你的工程:详细说明如何从零...
本书介绍了如何使用Xcode进行项目管理、代码编辑、调试等功能。 - **Interface Builder**:一个强大的用户界面设计工具,允许开发者通过拖放操作创建GUI元素,并与代码关联。本书详细讲解了如何使用Interface ...
8. **测试与调试**:书中会涵盖Xcode的测试工具,如Unit Tests和Integration Tests,以及如何使用Xcode的调试器进行问题定位。 9. **国际化与本地化**:Cocoa支持多语言应用,书中会讲解如何实现应用程序的国际化和...
- [调试]XCode的一些调试技巧 - [版本管理]Mac下配置Git服务器 - [翻译]苹果Cocoa编码规范 以上参考资料提供了详细的讲解和示例,对于进一步深入学习和理解Objective-C和Cocoa框架非常有帮助。
- **Xcode开发环境**:介绍如何使用Xcode进行Objective-C开发,包括项目创建、编译和调试技巧。 - **Cocoa框架入门**:概述Cocoa框架的基本结构和组成部分,以及如何在项目中引入这些框架。 2. **核心编程技术** ...
11. **测试与调试技巧**:提供一系列实用的测试和调试方法,帮助开发者找出并修复应用中的错误或性能瓶颈。 12. **发布流程**:最后,本书还会涉及如何准备应用以供发布到App Store的过程,包括满足Apple的审核标准...
"cocoa教材2-26"可能指的是书中的第26章,这一章可能涵盖了更高级的主题,如高级动画技术、自定义视图控制器转场或是特定的API使用技巧。 通过阅读和学习这本《iPhone开发:Cocoa教程中文PDF》,你将具备开发高...
- **调试工具**:包括断点调试、性能分析等功能,帮助开发者快速定位问题。 #### 六、案例研究与实践技巧 - **实际项目**:本书通过具体的实例介绍了如何使用 Cocoa 创建实际应用程序的过程。 - **最佳实践**:提供...
这本书可能涵盖了使用Cocoa框架进行应用开发的各个方面,包括但不限于用户界面设计、编程实践、性能优化、调试技巧等。而对版权的强调也意味着读者在参考书中的内容时,应保持对知识产权的尊重。