Inkscape 1.0 插件(5) 用VSCODE / Visual studio2019 调试python插件
前面讲过的内容最终都要用self.msg调试, 显然不省事, 习惯用IDE指变量名就看到内容的时代, 这方法太慢了.
经过一番探索, 终于找到了简单方法, 其实就是以前我们调试c++ dll动态库的办法 : 附加到进程 (不知这次面对ink插件为啥迟迟没想到这个办法 , 饶了弯路)
具体做法是:
1. 在插件里写窗体(或者消息框) 让程序停下来等待输入 , 比如我的前一篇 https://blog.****.net/majian/article/details/106851866 用Qt窗体.
2. 用vscode打开插件的源码py文件, 在窗体后的代码位置设个断点. 比如我想看输入的x值, 下图22行设断点:
3. 打开inkscape, 调用插件, 当对话框弹出时, 这时 inkscape已经调用了python进程 , 在"任务管理器"里能看到python进程的id
4. 在窗体里输入一个值, 比如 x=12
5. 回到 vscode界面, 点击右侧界面的"运行" ctrl+shift+D
6. 如果上图出现的不是 "运行和调试" 按钮, 那就说明你已经有 launch.json , 点击 齿轮按钮 "打开launch.json", 找到其路径,删除该文件, 在我电脑里 该文件在 D:\Inkscape\share\inkscape\extensions\.vscode 目录里, 删除后回到vscode界面, 就看到步骤5的界面出现 "运行和调试" 按钮
7. 点击 "运行和调试" 按钮, 选择: Attach using process ID
8. 选择 pythonw.exe ( 我在前面的笔记里已说过修改 python 解释器为 自己安装目录的 pythonw.exe )
9. 好了, 附加成功, 断点也设置好了, 现在回到Inkscape界面, 点击pushbutton 让程序继续往下走, 当运行到断点处时, 就可以看到x的数值为12了.
10. 有时附加进程没有成功, 在vscode里出现"Time Out waiting "的提示, 需要多试几次
11. 更好的方法是用visual studio 2019打开py文件, F9设置断点, 用 主菜单->调试->附加到进程 调试, 每次都能准确停留在断点里. 所以是时候考虑用vs2019写python代码了. 老牌软件在调试方面的功底不容小觑, 你大爷还是你大爷. 下图是在vs2019里调试的截图.