zoukankan      html  css  js  c++  java
  • iOS中日志打印Q&A

    Q:如何打印当前的函数和行号?

    A:我们可以在打印时使用一些预编译宏作为打印参数,来打印当前的函数和行号。如:

    1

    NSLog(@"%s:%d obj=%@", __func__, __LINE__, obj);

    其中__func__和__LINE__都是预编译的宏,编译时会分别替换为当前函数和当前行号。
    下面是一些常用于打印日志的宏。


    说明

    __func__
    打印当前函数或方法,c字符串

    __LINE__
    打印当前行号,整数

    __FILE__
    打印当前文件路径,c字符串

    __PRETTY_FUNCTION__
    打印当前函数或方法(在C++中会包含参数类型),c字符串

    Q:如何打印一个类名,消息名,当前堆栈信息?

    A:你可以使用以下方法在运行时动态获取这些信息。

    代码
    说明

    NSStringFromSelector(SEL)
    获取selector的名字

    NSStringFromSelector(_cmd)
    获取当前方法名

    NSStringFromClass([object class])
    获取object的类名

    [NSThread callStackSymbols]
    获取当前线程的栈,是一个NSArry,包含堆栈中所有函数名。

    Q:如何将日志打印到一个文件

    A:可以使用freopen函数重定向标准输出和标准出错文件。因为printf函数会向标准输出(stdout)打印,而NSLog函数会向标准出错(stderr)打印。重新定向标准输出(stdout)和标准出错(stderr)到一个文件将会使他们打印日志到一个文件中。

    1

    2

    freopen("/tmp/log.txt", "a+", stdout);

    freopen("/tmp/log.txt", "a+", stderr);

    [转自]http://xcodev.com/391.html

  • 相关阅读:
    DAY 57 django12
    韦东山网课https://edu.csdn.net/course/play/207/1117
    关于初始化
    软件——机器学习与Python,Python3的输出与输入
    关于python中数组的问题,序列格式转换
    偏最小二乘法
    数据标准化
    SD卡与tf卡引脚转换
    程序心得
    牛客网 python 求解立方根
  • 原文地址:https://www.cnblogs.com/dukewell/p/2856437.html
Copyright © 2011-2022 走看看