美文网首页岁月如歌巢湖文海岁月古韵诗成行
iOS-NSLog打印行数/函数方法名/路径及打印数据不全

iOS-NSLog打印行数/函数方法名/路径及打印数据不全

作者: 冻结的转身 | 来源:发表于2019-09-15 20:44 被阅读0次

在我们iOS开发过程中,改BUG的时间甚至超过了写功能代码的时间。如何在程序代码出错时,精准定位到有问题的代码位置呢?首先我们要开启Xcode自带的全局崩溃断点All Exceptions,其次就需要灵活地使用NSLog打印功能。当然,这里不是指简单系统方法NSlog,而是指加入了行数/方法名/路径的复合打印内容。

打印行数

LINE %d 当前源码文件中的行号

打印当前函数方法名

func %s 打印当前函数名

打印当前所在路径

FILE %s 当前源码文件完整路径
我们把上述常用于打印的元素整合在一起写成一个宏定义。

#define NSLog(FORMAT, ...) fprintf(stderr,"[%s:%d行:%s] %s\n",[[[NSString stringWithUTF8String:__FILE__] lastPathComponent] UTF8String], __LINE__, __func__, [[NSString stringWithFormat:FORMAT, ##__VA_ARGS__] UTF8String]);
例如,我们在WebsiteViewController.m文件中的viewDidLoad方法中第48行打印一下当前模拟器的屏幕高度。打印结果分别对应我们上面的NSLog宏定义中的当前源码文件路径WebsiteViewController.m,当前源码文件中的行号48行,当前函数名[WebsiteViewController viewDidLoad]。 打印举例.png

【注意】开发过程中,警察会碰到某一个接口返回的数据量特别庞大的情况,而Xcode本身的打印数据量是有一定限度的。
【解决方案】在我们的.pch文件中添加另一个宏定义,在需要打印大量数据的地方使用MyLog打印数据即可。

#define MyLog(FORMAT, ...) fprintf(stderr, "%s:%zd\t%s\n", [[[NSString stringWithUTF8String: __FILE__] lastPathComponent] UTF8String], __LINE__, [[NSString stringWithFormat: FORMAT, ## __VA_ARGS__] UTF8String]);

相关文章

  • iOS-NSLog打印行数/函数方法名/路径及打印数据不全

    在我们iOS开发过程中,改BUG的时间甚至超过了写功能代码的时间。如何在程序代码出错时,精准定位到有问题的代码位置...

  • 0822- iOS常用宏定义

    [123](file://) 宏定义原文链接 全局打印 打印所在方法名与行数 重写NSLog 输出所在方法与行数 ...

  • Swift 打印方法名,地址

    打印方法名 打印地址

  • Swift之#function、#fine、#line

    file:打印当前文件路径 line:打印当前行号,整数 function:打印当前函数或方法 column :所...

  • swift自定义log

    第一步:获取打印文件名,方法名,行数 第二步:全局化 swift中的 全局函数:写在每个文件对应的类外部全局函数大...

  • Excel打印问题大盘点

    怎么让每页数据都打印出标题来?怎么只打印需要的几行数据?怎么让所有数据在一页中打印完……这些常见的Excel打印问...

  • 常用宏

    一、iOS 中常用的宏 设置Dlog可以打印出类名,方法名,行数. #ifdef DEBUG #define DL...

  • IO(打印流练习)

    打印流:该流提供了打印方法,可以将各种数据类型的数据都原样打印。 字节打印流:PrintStream构造函数可以接...

  • Java IO流(PrintWriter)

    打印流:该流提供了打印方法,可以将各种数据类型的数据都原样打印。 字节打印流:PrintStream构造函数可以接...

  • iOS开发 - 完美解决Xcode NSLog打印不全

    完美解决Xcode NSLog打印不全的问题 打印结果

网友评论

    本文标题:iOS-NSLog打印行数/函数方法名/路径及打印数据不全

    本文链接:https://www.haomeiwen.com/subject/gqxoectx.html