使用python C/API中tracefunc遇到的问题
我目前要写一个Python调试器 用C++写 想先仿照着把Python中的Bdb类实现
我写了一个Bdb类 里面定义了traceDispatch这个函数 想把他当作追踪函数 定义如下:
int traceDispatch(PyObject* obj,PyFrameObject* frame,int event,PyObject* arg);
在settrace的时候 我掉用API中的PyEval_SetTrace(traceFunc,PyObject*):
PyEval_SetTrace(traceDispatch,NULL);
Qt报错:
/home/wangxinwei/program/MyNewBdb /bdb.cpp:454:
error: cannot convert 'Bdb::traceDispatch' from type 'int (Bdb::)(PyObject*, PyFrameObject*, int, PyObject*) {aka int (Bdb::)(_object*, _frame*, int, _object*)}' to type 'Py_tracefunc {aka int (*)(_object*, _frame*, int, _object*)}'
我试过不在类中定义一个追踪函数(就是在main()函数中单独过定义一个函数) ,和tracedispatch()的原型一样 这时候PyEvalSetTrace()就没问题,希望大家帮忙说一下怎么改才行啊!!