retrieve traceback in embedded python of Python3.0?

Gabriel Genellina gagsl-py2 at yahoo.com.ar
Sat Mar 7 08:22:33 EST 2009


En Sat, 07 Mar 2009 01:43:05 -0200, BigHand <heweiwei at gmail.com> escribió:
> On Mar 7, 11:40 am, BigHand <hewei... at gmail.com> wrote:
>> Guys:
>> I have a embedded python in MFC app. to execute a py script of a.py,
>> the is only one line in a.py, it "a()" , normally ,excute this script
>> file ,you will get a
>>  "the exception type is<class 'NameError'> "
>> "The exception value is name 'a' is not defined "
>>
>> Python3.0 with VS2005.
>> here is the brief code:
>> Py_Initialize();
>> PyObject *m, *d, *v;
>> m = PyImport_AddModule("__main__");
>> d = PyModule_GetDict(m);
>> v = PyRun_File(fp, pStr, Py_file_input, d, d);       //~~~the py
>> script is a.py
>> PyObject *exc_type = NULL, *exc_value = NULL, *exc_tb = NULL;
>> PyErr_Fetch(&exc_type, &exc_value, &exc_tb);  //~~~after fetch , the
>> exc_type, exc_value, exc_tb are not "NULL"
>> PyObject * modTB = PyImport_ImportModule("traceback");
>> PyObject* pyUStr = PyUnicode_FromString("format_exception");
>> PyObject* listTB = PyObject_CallMethodObjArgs(modTB,  pyUStr,
>> exc_type, exc_value, exc_tb, NULL);
>>
>> in the PyObject_CallMethodObjArgs(modTB,  pyUStr, exc_type, exc_value,
>> exc_tb, NULL), I get modTB, pyUStr, exc_type, exc_value, exc_tb are
>> not NULL, but the listTB is always NULL, I can retrieve the list...
>>
>> any body could enlight me?
>
> it's "I can't retrieve the traceback list."

PyErr_Print or PyTraceback_Print aren't suitable for you? Those functions
are much easier to use from C code, while the traceback module is intended
to be used in Python code.

-- 
Gabriel Genellina




More information about the Python-list mailing list