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

python怎么实现trace功能

python怎么实现trace功能

茅侃侃 2022-03-17 11:11:44
python怎么实现类似nodejs的trace功能,能够获取到当前的调用调用堆栈.我新建了3个文件,#a1.pyimport a2def Fun1():a2.Fun2()Fun1()#a2.pyimport a3def Fun2():a3.Fun3()#a3.pyimport tracebackdef 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", line 4, in Fun3\n assert(False)\nAssertionError\n')还是无法实现类似nodejs的那种trace功能,是哪里写错了吗?
查看完整描述

3 回答

?
白衣非少年

TA贡献1155条经验 获得超0个赞

使用语句traceback.extract_stack()

给一个使用这个语句的实例:
//用try..except捕获异常,然后traceback.print_exc()打印
#!/usr/bin/python
import sys
import traceback
import test1

a=10
b=0

try:
print test1.division(a,b)
except:
print 'invoking division failed.'
traceback.print_exc()
sys.exit(1)

执行test2.py失败抛出异常。

$python test2.py
execution python-2.5.1/python (enodeb/linux)
b eq 0
invoking 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 division
sys.exit(1)
SystemExit: 1



查看完整回答
反对 回复 2022-03-22
?
喵喔喔

TA贡献1735条经验 获得超5个赞

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

查看完整回答
反对 回复 2022-03-22
?
Qyouu

TA贡献1786条经验 获得超11个赞

使用如下例:

1 from goto import *
2 from
3 @patch
4 def f2():
5 goto(10)
6 print 'should not see this'
7 label(10)
8 for i in range(1,99999):
9 print i
10 if i == 5:
11 goto('out')
12 label('out')
13
14 f2()

用法是:
1. from goto import *。注意暂时不支持import goto,不是不能实现,是暂时没时间写。
2.对需要使用goto的函数,前面加个@patch
3.用label(x)和goto(x)的形式写label和goto。x可以是数字或字符串。

goto模块的代码如下:
goto.py



查看完整回答
反对 回复 2022-03-22
  • 3 回答
  • 0 关注
  • 614 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信