retrieve traceback in embedded python of Python3.0?
heweiwei at gmail.com
Mon Mar 9 02:23:33 CET 2009
On Mar 7, 9:22 pm, "Gabriel Genellina" <gagsl-... at yahoo.com.ar> wrote:
> En Sat, 07 Mar 2009 01:43:05 -0200, BigHand <hewei... 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
I gave up using the format_exception, and use calling the python
fucntion of print_tb.
More information about the Python-list