OC NSLog打印log所在的文件和行数

        开发时在调试过程中我们会打印很多信息用于调试。当打印较多时,我们不知道某个打印的出处,给定位问题带来不便。如果打印信息能带有该打印的文件和行数信息,会很大程度上帮助我们快速的定位问题。

方法:在全局头文件中定义log

代码:

#ifdef DEBUG 

#define NSLog( s, ... ) NSLog( @"<%p %@:(%d)> %@", \

self, \

[[NSString stringWithUTF8String:__FILE__] lastPathComponent], \

__LINE__, \

[NSString stringWithFormat:(s), ##__VA_ARGS__] )

#else

#define NSLog(...)

#endif

详解:

#ifdef DEBUG // 如果在debug模式下

#else // 不在debug模式下

#endif

这是成对出现的,含义及作用和 if...else 基本一样。

 NSLog( @"<%p %@:(%d)> %@", \  

self, \

[[NSString stringWithUTF8String:__FILE__] lastPathComponent], \

__LINE__, \

[NSString stringWithFormat:(s), ##__VA_ARGS__] )

这句代码中的反斜杠表示换行;

%p 表示取内存地址;

__FILE__ 表示文件所在全路径,lastPathComponent 取最后一个部分,也就是打印log的文件的名字;

__LINE__ 表示log所在文件的行数

## 粘合符号,是宏连接符;__VA_ARGS__是可变参数宏,就是你真正要打印的内容,##粘合了前面的信息(内存地址、文件名和行数)。


打印内容

以上。

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容