使用python C/API中tracefunc遇到的问题

web_wxw 2014-05-01 06:10:25
我目前要写一个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()就没问题,希望大家帮忙说一下怎么改才行啊!!

...全文
72 回复 打赏 收藏 转发到动态 举报
写回复
用AI写文章
回复
切换为时间正序
请发表友善的回复…
发表回复

5,530

社区成员

发帖
与我相关
我的任务
社区描述
C/C++ 模式及实现
社区管理员
  • 模式及实现社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧