(original) (raw)

Here is a working prototype for CPython to record all function call/return using LTTng-UST, a fast tracer.

https://github.com/giraldeau/python-profile-ust

However, there are few issues and questions:

- I was not able to get PyTrace\_EXCEPTION using "raise" or other error conditions. How can we trigger this event in Python code (PyTrace\_C\_EXCEPTION works)?

- How could be the best way to get the full name of an object (such as package, module, class and function). Maybe it's too Java-ish, and it is better to record file/lineno instead?

- On the C-API side: I did a horrible and silly function show\_type() to run every Py\*\_Check() to determine the type of a PyObject \*. What would be the sane way to do that?

Your comments are very valuable. Thanks!

Francis