C++调用Python并用Winpdb调试
来源:互联网 发布:安装360软件管家 编辑:程序博客网 时间:2024/06/05 08:24
最近在学习用C++ 调用Python, 发现用起来还挺方便的,就是在调试的方面遇到了些问题.
大部分Python IDE都提供了调试功能,比如Eric4, PythonWin, IDLE等, 不是这些IDE都不能调试C++中调用的Python脚本.
我目前的项目框架是使用MFC写的,它是一个关于摄像头测试的程序,由于经常改动所以我在程序里面加入了Python的脚本支持.
本来UI方面想用PyQt写的,但是考虑到这个项目保密性我就还是用MFC实现的.
对于Python的Embedded Debugging, 我开始在网上找了很多资料,最终选择了Winpdb的方案.
Winpdb可以实现Embedded Debugging,还可以实现网络Debugging,使用起来还是比较方便的.
具体使用方法如下:
1. 下载并安装winpdb
我目前使用的winpdb版本是winpdb-1.4.8.zip, 官方下载地址:http://winpdb.org/download/
下载完成后解压, 让后进入命令行并CD到解压目录 ,输入python.exe setup.py install 进行安装.
2. 包含winpdb库
在Python代码中输入import rpdb2
3. 调试文件
在代码要开始调试的地方加入rpdb2.start_embedded_debugger(密码)就可以开始调试了
4. 调试代码文本
由于测试程序和Python脚本要共享一些变量,所以我的测试程序要有调试代码文本的功能, 具体操作如下:
1) MFC中定义脚本文件名
CStringstrScriptFile;strScriptFile.Format(_T("g_ScriptFile=r'%s'"), m_strScriptPath);PyRun_SimpleString(strScriptFile);
2) 定义sourceProvider函数
fScript = g_ScriptFiledef sourceProviderMySelf(filename): source = "" file_object = open(fScript) try: source = file_object.read() finally: file_object.close( ) return source
3)在在代码要开始调试的地方加入一下代码:
rpdb2.start_embedded_debugger(密码, True, False, 超时时间(秒*60), sourceProviderMySelf)
5. 代码编写完成后, 当我们在MFC执行代码时程序会停到我们设置断点的位置, 这是我们就可以在WinPdb中调试了, 如下图:
- C++调用Python并用Winpdb调试
- 使用winpdb进行python调试
- winpdb调试python3
- gdb core 调试 - python调用c库
- C++&Pascal——用DEV C++/free pascal制作dll,并用C++/Pascal调用
- 在VS2015中用C++创建DLL并用C#调用且同时实现对DLL的调试
- 在VS2015中用C++创建DLL并用C++调用且同时实现对DLL的调试
- 在VS2015中用C++创建DLL并用C++调用且同时实现对DLL的调试
- 在VS2015中用C++创建DLL并用C#调用且同时实现对DLL的调试
- 用python开发window dll,并用在web中调用dll
- 利用zabbix生成awstats日志分析图表并用Python调用zabbix API批量添加item
- BCB(C++)调用Python
- C中调用PYTHON
- C调用python
- C调用python
- Python 调用 C函数
- python调用c
- Python 调用C
- jeecg 3.2使用体验
- 部分Dojo常用函数简介
- windows无法访问您的文件
- WM_PAINT消息详解
- Activity的启动模式
- C++调用Python并用Winpdb调试
- Could not acquire hardware tool communications resources: ICD3PlatformTool SN#
- Hopfield神经网络入门学习与matlab仿真
- Oracle 11gR2 RAC 常用维护操作 说明
- 慎用ArrayList的contains方法,使用HashSet的contains方法代替
- Wireless tools for Linux介绍
- matlab R2013a中将GUI编译成exe
- bd_t
- 为什么要选择Python语言实现机器学习算法