Sami Vaisanen schrieb:
> Hello group,
>  
> I'm writing a C++ based application that embeds the python engine. Now I
> have a problem regarding exception/error information. Is there a way to
> get the exception message and possibly the traceback into a string for
> example? I've been eyeballing the PyErr_ module and it seems fairly
> limited. In other words PyErr_Print() calls the right functions for
> getting the exception information but unfortunately it is hardwired to
> print this data directly into sys.stderr, and for an embedded application
> this is completely inappropriate. 
>  
> I have seen solutions that propose writing a custom Python class with
> write method and using that to grab the output from sys.stderr and then
> saving the data for example into a variable for later access, but unless
> Im mistaken this solution (not only that it is extremely ugly) is not
> thread safe. Even if a thread in my application is holding GIL, the lock
> can be released by extensions/the interpreter and thus opens up a race
> condition regarding that grabber object. 

You should call 'import traceback; traceback.format_exc()' from your C code;
it returns a string (a 'PyObject *' that contains a string).

Thomas

-- 
http://mail.python.org/mailman/listinfo/python-list

Reply via email to