python怎么实现trace功能
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了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功能,是哪里写错了吗?
给一个使用这个语句的实例:
//用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 参考技术B 用traceback:
except Exception,e:
self.logger.error("encounter error in poll %s:"%(traceback.format_exc()))追问
按照您的意思,我新建了3个文件,分别是a1.py,a2.py,a3.py,
源码在问题补充里,还是无法实现nodejs的trace功能?
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
Visual Studio 在调试模式下禁用 TRACE
【中文标题】Visual Studio 在调试模式下禁用 TRACE【英文标题】:Visual Studio disable TRACE in debug mode 【发布时间】:2009-08-06 22:40:11 【问题描述】:对于我在 Visual Studio 2005 中开发的 C++ 项目,我想在调试模式下运行代码时禁用 TRACE 输出选项。我已经在互联网上搜索了如何实现这一点,但没有运气。这甚至很容易实现吗?如果是这样,怎么做?提前致谢。
更新#1:
#define USETRACE 0
#if !USETRACE && DEBUG
#undef TRACE
#define TRACE(x)
#endif
我在调试模式下尝试了上面的代码,靠近 stdafx.h 的最顶部,但 TRACE 仍在输出到调试输出。如果能提供关于我的实现有什么问题的建议以便我修复它,那就太好了。谢谢。
【问题讨论】:
根据此信息更新了我的答案。 更新后的建议也不太奏效。 这是 MFC 应用、ATL 应用还是其他框架? @Stephen Nutt:这是一个 MFC 应用程序。 查看 _CrtSetReportHook 和 _CrtSetReportHook2 msdn.microsoft.com/en-us/library/0yysf5e6%28VS.80%29.aspx 【参考方案1】:原来有一种更简单的方法可以做到这一点,将全局变量 afxTraceEnabled 设置为 false
afxTraceEnabled = false;
参考
http://msdn.microsoft.com/en-us/library/aa235240(VS.60).aspx【讨论】:
在这种情况下,我在宏中添加了 undef 行。但是,TRACE 语句仍不正常工作(打印到调试输出窗口)。我将这些行放在预编译的头文件(stdafx.h)中。将指令放在预编译的头文件中是否有任何明显不合适的地方?谢谢。 @stanigator,没有。我经常将诸如此类的宏放在 stdafx.h 的顶部,以确保它在全球范围内应用。 @JaredPar:我已经更新了我最初尝试做的事情。干杯。【参考方案2】:前几次用了困难的方法,这就是我最终要做的:
#if USETRACE
#define PRINT TRACE
#else
#define PRINT
#endif
【讨论】:
以上是关于python怎么实现trace功能的主要内容,如果未能解决你的问题,请参考以下文章
PythonHttp Post请求四种请求体的Python实现
ImportError:来自“tensorflow.python.profiler”的“trace”