我试图在一个复杂的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
我不知道如何像您所希望的那样设置跟踪;我所能提供的是,大多数与数据存储和检索相关的有趣调用都是通过}目录中的
osv.py
、fields.py
和{.../openerp/osv/
。在如果您只想跟踪正在进行的确切调用,只需使用
log-level
。使用log-level=debug_rpc
将为您提供正在执行的函数的确切名称和参数。在相关问题 更多 >
编程相关推荐