首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >python调试代码

python调试代码

作者头像
py3study
发布2020-01-13 15:30:04
8580
发布2020-01-13 15:30:04
举报
文章被收录于专栏:python3python3

我在看一些开源的python项目时,需要知道各个类各个函数之间的调用关系才能看懂代码,因此我写了个方法来跟踪代码的调用过程

导入  系统  
从  时间  导入  ctime  
is_log = True 
 
def log_msg (msg,self = None ,debug_file_name = '/tmp/trace.log'):   
        如果  is_log == False:  
                返回 
        尝试:  
                引发  异常  
        除了:  
                f = sys.exc_info()[ 2 ] .tb_frame.f_back  
                fp =打开(debug_file_name,  'a')  
                如果 self 为None:     
                    fp.write('[' + ctime()+ '] <' + f.f_code.co_name + '>' + str(f.f_lineno)+ ':')  
                其他:  
                    fp.write('[' + ctime()+ '] <' + self .__ class __.__ name __ + '。' + f.f_code.co_name + '>' + str(f.f_lineno)+ ':')  
                fp.write(str(msg)+ '\ n')  
                fp.close() 

大家可以用这个调试方法进行跟踪调试

用法如下:

原型是:log_msg(msg,self=None,debug_file_name='/tmp/swift.log')

第一个参数是输出信息,

第二个参数是所在类,可省略,在类里使用的话填self即可。

第三个参数是输出的日志文件,默认为/tmp/swift.log

from swift.common.debuglog import log_msg

log_msg('start')

log_msg('start',self)

log_msg('start',self,'/tmp/abc.log')

输出内容:包括类名,函数名,行数,时间,输出信息

[Thu Jul 7 17:46:15 2011]<__init__>52:start

[Thu Jul 7 17:51:54 2011]<__init__>52:start

[Thu Jul 7 17:52:24 2011]<Swauth.__init__>52:start

[Thu Jul 7 17:57:18 2011]<Swauth.__init__>52:start

本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
原始发表:2019-08-13 ,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档