vspythonqt混合_vs2017混合调试py/c++

vs2017混合调试py/c++

python卡死了怎么办?

一般的python程序卡死,可以用pycharm debug。但是有时候是python和c/c++库混合开发,比如pyqt或者boost python程序卡死,就非常难查。以前都是二分法注释代码查找问题,异常低效。

于是我尝试了vs2017的新功能:python & c++ 混合调试 Debug Python and C++ together

vs2017 python

vs一直被称为宇宙最强IDE,貌似python支持是vs2017新加的功能。相比pycharm之类的python编辑器,vs2017最大的优势就是在python和native c/c++代码的混合调试。包括:

python / c++ 调用栈合并显示

python / c++ 都可以断点

python / c++ 代码之间step

python / c++ 对象都可以watch

由于python的性能瓶颈,很多时候混合开发需要同时调试,这正是我们需要的!

环境搭建

下面以Sunshine(一个PyQt5程序)为例

安装vs2017 python支持

导入Sunshine项目,会在主目录生成Sunshine.sln,以后都可以双击打开了

New Project->Python->From Existing Python Code

安装python的pdb文件,3.6直接用python installer安装,参考这里

配置pdb文件,主要是qt5的。qt5.9之后提供了pdb文件下载,5.11.2的在这里(PyQt最新版5.11.3,用的是Qt5.11.2,别问我为什么知道)

选择Sunshine.py F5启动!

启动会比较慢,从输出窗口可以看出vs再加载各个py文件的symbol。。。(额,毕竟是试验性的功能)

让我们试试吧

卡死时候暂停

假设我们现在的Sunshine卡死了,这时候点击vs上的暂停按钮,就能立马停住。

回想起Pycharm停不住的恐惧!毕竟vs是native的暂停,宇宙第一!

强大的混合调试

这时候就能使用强大的混合调试功能了,包括但不限于:

同时查看python/c++ callstack

callstack双击跳转到源码

切换线程

查看locals

混合的单步调试

以前python调到Qt里面去之后,就不知道发生了什么,现在可以从python step到c++中。

双击callstack中的c++ frame,vs会提示你打开。当然,这需要你本地下载了qt的c++代码。

然后你就可以在c++中打断点,做各种基本操作了

换成Attach模式

vs Debug启动python项目真的超级慢(感觉是有bug),而且我们经常是使用过程中进程卡死,这时候就需要Attach到卡死的python进程。

Debug->Attach to Process

连上之后所有功能一样使用

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
~/SDK/Hi3519DV500_SDK_V2.0.0.2/smp/a55_linux/source/bsp/tools/pc/image_tool ~/SDK/Hi3519DV500_SDK_V2.0.0.2/smp/a55_linux/source/bsp Traceback (most recent call last): File "/home/lkuser/SDK/Hi3519DV500_SDK_V2.0.0.2/smp/a55_linux/source/bsp/tools/pc/image_tool/oem/oem_quick_build.py", line 9, in <module> oem_main.main(['', 'build', 'oem/quick_build_config.json']) File "/home/lkuser/SDK/Hi3519DV500_SDK_V2.0.0.2/smp/a55_linux/source/bsp/tools/pc/image_tool/oem/oem_main.py", line 115, in main build(cfg_file=argv[2]) File "/home/lkuser/SDK/Hi3519DV500_SDK_V2.0.0.2/smp/a55_linux/source/bsp/tools/pc/image_tool/oem/oem_main.py", line 16, in build from oem_build import OemAreaBuilder, OemImageBuilder File "/home/lkuser/SDK/Hi3519DV500_SDK_V2.0.0.2/smp/a55_linux/source/bsp/tools/pc/image_tool/oem/tool/oem_build.py", line 15, in <module> from common.area_tool import PublicKey, AreaTool File "/home/lkuser/SDK/Hi3519DV500_SDK_V2.0.0.2/smp/a55_linux/source/bsp/tools/pc/image_tool/common/area_tool.py", line 9, in <module> import security as sec File "/home/lkuser/SDK/Hi3519DV500_SDK_V2.0.0.2/smp/a55_linux/source/bsp/tools/pc/image_tool/common/security.py", line 351, in <module> from Crypto.PublicKey import RSA ModuleNotFoundError: No module named 'Crypto' ~/SDK/Hi3519DV500_SDK_V2.0.0.2/smp/a55_linux/source/bsp cp /home/lkuser/SDK/Hi3519DV500_SDK_V2.0.0.2/smp/a55_linux/source/bsp/tools/pc/image_tool/image/oem/boot_image.bin /home/lkuser/SDK/Hi3519DV500_SDK_V2.0.0.2/smp/a55_linux/source/bsp/pub/hi3519dv500_emmc_image_glibc/boot_image.bin; cp: cannot stat '/home/lkuser/SDK/Hi3519DV500_SDK_V2.0.0.2/smp/a55_linux/source/bsp/tools/pc/image_tool/image/oem/boot_image.bin': No such file or directory make: *** [Makefile:505: gslboot_build] Error 1
最新发布
06-06

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值