对于测试示例,我有这个测试C ++类,我使用boost导出到Python。(来自boost网站)
#include <boost/python.hpp>
using namespace boost::python;
struct WorldC
{
void set(std::string msg) { this->msg = msg; }
std::string greet() { return msg; }
std::string msg;
};
BOOST_PYTHON_MODULE(hello)
{
class_<WorldC>("WorldP")
.def("greet", &WorldC::greet)
.def("set", &WorldC::set)
;
}
我按g++ -g -shared -o hello.so -fPIC hello.cpp -lboost_python -lpython2.7 -I/usr/local/include/python2.7
编译了这段代码并测试好了。测试脚本pp1.py
是这样的:
import hello
a = hello.WorldP()
a.set('ahahahah') # <-- line 3
print a.greet()
print('print1')
b = hello.WorldP()
b.set('bhbhbhbh')
print b.greet()
print('print2')
print('program done')
此代码在交互模式和脚本中运行正常。
ckim@stph45:~/python/hello] python pp1.py
ahahahah
print1
bhbhbhbh
print2
program done
我使用DDD进行可视化调试。当我发出命令ddd -pydb pp1.py
时,我可以进行Python代码调试。当我在调试器内部时,我可以给出next
命令并查看结果。但是当调试器例如在第3行中时,当我给出step
命令时,它只是传递不进入c ++代码的行。我怎样才能做到这一点?
(我尝试使用gdb,但它是相同的 - 不进入c ++代码。)