为了账号安全,请及时绑定邮箱和手机立即绑定

Cpython 中的 dprintf

Cpython 中的 dprintf

心有法竹 2021-10-10 16:20:34
我想查看dprintfCpython打印的日志,比如这个,但是这里只有一个参数dprintf,如何查看这些日志?非常感谢你的帮助。
查看完整描述

2 回答

?
守候你守候我

TA贡献1802条经验 获得超10个赞

如果您有 Python 的发布版本,则dprintfs 将被剥离,并且这些语句不会记录日志。不可能看到它们的输出。


dprintf是一个实际上只在thread.c. 定义是


#ifdef Py_DEBUG

static int thread_debug = 0;

#define dprintf(args)   (void)((thread_debug & 1) && printf args)

#define d2printf(args)  ((thread_debug & 8) && printf args)

#else

#define dprintf(args)

#define d2printf(args)

#endif

即如果 Py_DEBUG设置了and thread_debug & 1,则使用printf,将日志打印到标准输出。为此,您需要一个 Python 的调试版本。如果您有调试版本,则thread_debug可以使用环境变量控制 的值PYTHONTHREADDEBUG:


void

PyThread_init_thread(void)

{

#ifdef Py_DEBUG

    char *p = Py_GETENV("PYTHONTHREADDEBUG");


    if (p) {

        if (*p)

            thread_debug = atoi(p);

        else

            thread_debug = 1;

    }

#endif /* Py_DEBUG */

    if (initialized)

        return;

    initialized = 1;

    dprintf(("PyThread_init_thread called\n"));

    PyThread__init_thread();

}

即对于设置为 值的变量,该变量必须存在1,如果设置为例如 9,这将同时启用dprintf和d2printf。


查看完整回答
反对 回复 2021-10-10
  • 2 回答
  • 0 关注
  • 230 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
微信客服

购课补贴
联系客服咨询优惠详情

帮助反馈 APP下载

慕课网APP
您的移动学习伙伴

公众号

扫描二维码
关注慕课网微信公众号