iOS 调试 之 打印
参考:http://m.blog.csdn.net/blog/HookyStudent/42964317
参考:http://m.blog.csdn.net/blog/laencho/25190639
1. 打印信息
1.1. 信息宏
NSLog(@"%s:%d obj=%@", __func__, __LINE__, obj);
类名: NSString *class = [NSString stringWithUTF8String:object_getClassName(self)];
函数名:__func__
所在行号:__LINE__
当前文件路径:__FILE__
打印当前函数或方法:__PRETTY_FUNCTION__
以上打印内容都是C字符串,所以需要转化,例如:
[NSString stringWithFormat:@"%s", __func__]
1.2. 打印宏
#ifdef DEBUG
# define DebugLog(fmt, ...) NSLog((@"\n[文件名:%s]\n""[函数名:%s]\n""[行号:%d] \n" fmt), __FILE__, __FUNCTION__, __LINE__, ##__VA_ARGS__);
#else
# define DebugLog(...);
#endif
2. 打印运行时信息
NSStringFromSelector(SEL) 获取selector的名字
NSStringFromSelector(_cmd) 获取当前方法名
NSStringFromClass([object class]) 获取object的类名
NSThread callStackSymbols] 获取当前线程的栈,是一个NSArray,包含堆栈中所有函数名。
3. 打印到文件
- (void)redirectNSlogToDocumentFolder
{
NSArray *paths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES);
NSString *documentDirectory = [paths objectAtIndex:0];
NSString *fileName = [NSString stringWithFormat:@"dr.log"];// 注意不是NSData!
NSString *logFilePath = [documentDirectory stringByAppendingPathComponent:fileName];
// 先删除已经存在的文件
NSFileManager *defaultManager = [NSFileManager defaultManager];
[defaultManager removeItemAtPath:logFilePath error:nil]; // 将log输入到文件
freopen([logFilePath cStringUsingEncoding:NSASCIIStringEncoding], "a+", stdout);
freopen([logFilePath cStringUsingEncoding:NSASCIIStringEncoding], "a+", stderr);
}
iOS 调试 之 打印的更多相关文章
- iOS调试
iOS高效调试 写代码难免出现bug.储备些调试技能绝对能够提高你的工作效率,让bug无所遁形.下面就和大家分享一些我在工作中常用的iOS调试小技能. 1. 打印 最简单,基础的调试方法就是打印日志了 ...
- [ios-必看] IOS调试技巧:当程序崩溃的时候怎么办 iphone IOS
from:http://article.ityran.com/archives/1143 有这样一种情形:当我们正在快乐的致力于我们的app时,并且什么看都是无比顺利,但是突然,坑爹啊,它崩溃了.(悲 ...
- iOS 调试心得
修复 bug 占用我们日常开发的大部分时间,熟练的使用调试工具可以给我们节约大部分的时间. LLDB 的常用命令 expression expresion 是一个非常常用的命令,我们可以通过这个命令来 ...
- iOS 调试 crash breakpoint EXC_BAD_ACCESS SIGABRT
原文地址:iOS 调试 crash breakpoint EXC_BAD_ACCESS SIGABRT作者:流年若离殇 在调试程序的时候,总是碰到crash的bug,而且一追踪就是一些汇编的代码,让人 ...
- paip. 调试技术打印堆栈 uapi print stack java php python 总结.
paip. 调试技术打印堆栈 uapi print stack java php python 总结. 作者Attilax 艾龙, EMAIL:1466519819@qq.com 来源:attil ...
- Xamarin.iOS调试提示需要iOS SDK
Xamarin.iOS调试提示需要iOS SDK 错误信息:The version of Xamarin.iOS requires th iOS 9.3 SDK (shipped with Xco ...
- 提高Android和iOS调试编译速度
http://www.cnblogs.com/findumars/p/7841252.html 提高Android和iOS调试编译速度 如果您使用Delphi开发App,就会遇到:Android和 ...
- IOS调试技巧:当程序崩溃的时候怎么办 xcode调试
转自:http://www.ityran.com/archives/1143 ------------------------------------------------ 欢迎回到当程序崩溃的时候 ...
- 【转】 C# DEBUG 调试信息打印及输出详解
[转] C# DEBUG 调试信息打印及输出详解 1.debug只在[debug模式下才执行](运行按钮后面的下拉框可选) 2.debug提供了许多调试指令,如断言 System.D ...
随机推荐
- 解读QML之二
QML文档 QML文档是用QML语法组成的字符串.一个文档定义了一个QML对象类型.文档以”.qml”最为后缀,可以保存在本地和网络上,可以使用代码生成.一 个在文档中定义的对象类型的实例,也可以使用 ...
- Processes and Threads
http://www.cnblogs.com/xitang/archive/2011/09/24/2189460.html Processes and Threads 译者署名: 呆呆大虾 译者微博: ...
- android 画图之setXfermode .
setXfermode 设置两张图片相交时的模式 我们知道 在正常的情况下,在已有的图像上绘图将会在其上面添加一层新的形状. 如果新的Paint是完全不透明的,那么它将完全遮挡住下面的Paint: 而 ...
- NSTimer相关方法
- (void)fire; //立即触发定时器 - (NSDate *)fireDate;//开始时间 - (void)setFireDate:(NSDate *)date;//设置fireData, ...
- 文件夹添加 IIS 应用程序池用户权限
http://serverfault.com/questions/81165/how-to-assign-permissions-to-applicationpoolidentity-account ...
- android数据库sqlite增加删改查
http://hi-beijing.iteye.com/blog/1322040 http://www.cnblogs.com/wenjiang/archive/2013/05/28/3100860. ...
- Django之路: 模版篇
一.Django 模版 上章是介绍简单的把django.http.HttpResponse的内容显示到网页上,下面就介绍以下如何使用渲染模版的方法来显示内容.本节代码是基于Django 1.8,但 ...
- php dependency innjection
You’ve probably heard of the acronym SOLID by now, which is an object oriented programming paradigm ...
- pip install -r requirements.txt 安装mysqldb失败 解决方案
在pip.log中出现sh: 1: mysql_config: not found等一坨报错,因为没有安装另一个包: 只要原因是没有安装:libmysqlclient-dev sudo apt-get ...
- [Java]局域网五子棋
提示: 下面给的代码有问题哦,可以自己去调试 可用版下载 请点击这里 密码:x6ve(退出程序,端口并没有被关闭,可自行修改代码实现) img