从cod中的一个点跟踪所有语句

2024-09-30 01:37:53 发布

您现在位置:Python中文网/ 问答频道 /正文

我试图在一个复杂的Python应用程序(OpenERP)中跟踪调用和代码流。更复杂的是,OpenERP有自己的继承系统,与普通Python继承并行。在

我想做的是有一个完整的代码清单,包括模块/函数名。在

我已经尝试过Eclipse调试器,并且我了解pdb的工作方式大致相同,但是单步执行过程耗时太长。在

我也尝试过用trace启动应用程序,但是在我要跟踪的点之前,得到了太多不必要的跟踪。我确实尝试过排除模块和目录,但没有多大帮助。在

python -m trace -t --ignore-dir=/home/sean/unifield/utp729b/unifield-server --ignore-dir=/home/sean/unifield/utp729b/unifield-web --ignore-module=SocketServer,socket,threading,tiny_socket,__init__,trace,netsvc,posixpath,zipfile,config,genericpath,orm openerp-server.py --db_host=localhost --db_port=5432 --db_user=openerp --db_password=xxxx --addons-path=/home/sean/unifield/utp729b/unifield-addons,/home/sean/unifield/utp729b/sync_module_prod,/home/sean/unifield/utp729b/unifield-wm > /home/sean/trace.log

我想做的是在代码中设置一个断点,但不是单步执行代码,而是开始记录到一个文件。在

我也尝试过使用decorator,示例是http://eli.thegreenplace.net/2012/08/22/easy-tracing-of-nested-function-calls-in-python/和{a2},但它们不能满足我的需要。在

编辑

我现在已经尝试使用Python跟踪模块,在Eclipse的VM Arguements框中添加以下行:-m trace-t--trace

这开始产生我想要的,一行一行的跟踪,但是当OpenERP完全启动时,它就停止工作了。请参阅下面的(冗长的)控制台输出摘录。在

^{pr2}$

编辑2

请看一个更健壮的解决方案,但它总是运行而不是某个时间点,这里:Finding full pathname in a Python trace


Tags: 模块代码应用程序homedbserverdirtrace
2条回答

我不知道如何像您所希望的那样设置跟踪;我所能提供的是,大多数与数据存储和检索相关的有趣调用都是通过osv.pyfields.py和{}目录中的.../openerp/osv/。在

如果您只想跟踪正在进行的确切调用,只需使用 log-level。使用 log-level=debug_rpc将为您提供正在执行的函数的确切名称和参数。在

相关问题 更多 >

    热门问题