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。仅用于调试,不要将其呈现给终端用户或用于在程序中执行任何逻辑 |
相关文章
- 暂无相关文章
用户评论