欢迎访问移动开发之家(rcyd.net),关注移动开发教程。移动开发之家  移动开发问答|  每日更新
页面位置 : > > > 内容正文

Objective-C打印调试信息,objective-c打印调试

来源: 开发者 投稿于  被查看 46112 次 评论:260

Objective-C打印调试信息,objective-c打印调试


Objective-C调试之打印调用方法或代码所在的行号

很多开发者会有这样的疑问,在iOS开发或者MacOS开发中, 如何将上下文信息(例如当前调用方法或代码所在的行号)添加到我的打印语句中?本文小试牛刀,提供相关的信息。

我们知道,C预处理器提供了许多标准宏,可以提供有关当前文件、行号或函数的信息。另外,Objective-C有_cmd隐式参数,它给出了当前方法的选择器,以及将选择器和类转换为字符串的函数。因此我们可以在NSLog语句中使用这些方法来在调试或错误处理期间提供有用的上下文。

示例1:记录当前方法和行号的示例。将其粘贴到您的项目中,然后查看它打印的内容!

NSMutableArray *someObject = [NSMutableArray array];
NSLog(@"%s:%d someObject=%@", __func__, __LINE__, someObject);
[someObject addObject:@"foo"];
NSLog(@"%s:%d someObject=%@", __func__, __LINE__, someObject);

下表列出了最常用的宏和表达式,这些宏和表达式在日志记录语句中可能很有用。

表1:预定义的宏和C/C++/Objective-C调试函数

格式说明符 描述
__func__ %s 当前函数签名。
__LINE__ %d 在源代码中的所在行号
__FILE__ %s 所在源代码文件的全路径
__PRETTY_FUNCTION__ %s 类似__func__,但包含c++代码中的详细类型信息

表2:OBjective-C中的调试函数

函数名 格式说明符 描述
NSStringFromSelector(_cmd) %@ 当前选择器的名字
NSStringFromClass([self class]) %@ 当前对象所在的类名
[[NSString stringWithUTF8String:__FILE__] lastPathComponent] %@ 源代码的文件名
[NSThread callStackSymbols] %@ 用于跟踪当前堆栈的程序员可读字符串构成的NSArray。仅用于调试,不要将其呈现给终端用户或用于在程序中执行任何逻辑

相关文章

    暂无相关文章

用户评论