python怎么实现trace功能

python怎么实现类似nodejs的trace功能,
能够获取到当前的调用调用堆栈.
我新建了3个文件,
#a1.py
import a2
def Fun1():
a2.Fun2()
Fun1()

#a2.py
import a3
def Fun2():
a3.Fun3()

#a3.py
import traceback
def Fun3():
try:
assert(False)
except Exception,e:
print(11,traceback.format_exc())

执行出现如下结果
E:\MyCode\Python>a1.py
(11, 'Traceback (most recent call last):\n File "E:\\MyCode\\Python\\a3.py", li
ne 4, in Fun3\n assert(False)\nAssertionError\n')
还是无法实现类似nodejs的那种trace功能,是哪里写错了吗?

茅侃侃
浏览 616回答 3
3回答

白衣非少年

使用语句traceback.extract_stack()给一个使用这个语句的实例://用try..except捕获异常,然后traceback.print_exc()打印#!/usr/bin/pythonimport sysimport tracebackimport test1a=10b=0try:print test1.division(a,b)except:print 'invoking division failed.'traceback.print_exc()sys.exit(1)执行test2.py失败抛出异常。$python test2.pyexecution python-2.5.1/python (enodeb/linux)b eq 0invoking division failed.Traceback (most recent call last):File "test2.py", line 10, in <module>test1.division(a,b)File "/home/fesu/test1.py", line 6, in divisionsys.exit(1)SystemExit: 1

喵喔喔

用traceback:except Exception,e:self.logger.error("encounter error in poll %s:"%(traceback.format_exc()))

Qyouu

使用如下例:1 from goto import *2 from3 @patch4 def f2():5 goto(10)6 print 'should not see this'7 label(10)8 for i in range(1,99999):9 print i10 if i == 5:11 goto('out')12 label('out')1314 f2()用法是:1. from goto import *。注意暂时不支持import goto,不是不能实现,是暂时没时间写。2.对需要使用goto的函数,前面加个@patch3.用label(x)和goto(x)的形式写label和goto。x可以是数字或字符串。goto模块的代码如下:goto.py
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Python