如何在VS Code开发Slicer插件的过程中进行调试?

本文详细介绍了如何在VSCode中调试Slicer插件。首先,需要在VSCode中安装Python插件,然后在Slicer中安装DebuggingTools插件。接着,设置断点并启动VSCode的远程调试,通过Slicer中的Pythondebugger模块连接VSCode的5678端口。一旦连接成功,即可进行调试操作。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

本文由Markdown语法编辑器编辑完成。

1. 前言

在开发slicer插件的过程中,经常需要了解程序运行过程中的中间值。一般有两种方法,第一种比较原始的方法是,在需要输出变量值的时候,用print()或logging.info()函数;第二种则是在程序中增加断点,通过断点调试,来逐行或逐个函数的debug.

如果只是很少的代码量,用print显示是最快的。但是当项目的代码量较大,且调用逻辑比较复杂时,我们就必须借助于Debug工具来调试。

2. 如何在VS Code中调试

在Slicer的论坛中,介绍了在Pycharm, VS Code和Eclipse中,如何调试的方法。见链接:
https://github.com/SlicerRt/SlicerDebuggingTools

由于本人使用的是VS Code, 因此这里介绍亲身经验。如何在VS Code中调试插件。

以下基本是根据上面链接中的步骤进行测试。

2.1 安装VS Code,并且在VS Code中安装Python插件

在这里插入图片描述在VS Code中安装了Python的插件后,在左侧的插件列表中,应该可以看到Python的标识。
在这里插入图片描述

2.2 Slicer中安装Debugger的插件

Slicer本身就是一个开发平台,它支持全球的开发者为它贡献插件。在它的插件库中,可以找到DebuggingTools的插件。
点击下方的Install后,便可以安装该插件。安装该插件后,在Manage Extensions栏目中,便可以看到已经安装好的Debug插件。
在这里插入图片描述关闭插件管理窗口。点击Ctrl+F, 打开模块查找器。如果能够搜索到Python debugger的module,说明这个插件已经安装成功,可以继续进行后续的操作。
在这里插入图片描述

2.3 在VS Code中开始调试

调试的前提,是我们已经开发了一个slicer的插件。如何开发slicer的插件,可以参考之前的一篇博客:《3d Slicer开发者入门》的文章。在ppt的最后,专门讲解了如何给slicer开发插件的方法。

2.3.1 在VS Code中开启远程调试,并连接到slicer

用vs code打开插件的源码所在的本地目录,并且打开这个插件入口的.py文件。
选择vs code的调试菜单,
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

2.3.2 slicer连接调试IDE

启动Slicer后,搜索Python debugger, 进入该模块后,右侧会显示: Connect to VisualStudio Code debugger. 点击该按钮后,则Slicer开始去连接Visual Studio Code的5678端口。

在这里插入图片描述
这时需要打开Visual Studio Code的Run and Debug, 点击左侧的绿色三角形,则会建立两者之间的连接。
在这里插入图片描述

此时,再进入之前的插件,运行到断点所在的代码行时,便可以进行调试了。

### 3D Slicer 插件开发教程 #### 插件开发环境设置 为了成功创建和编译3D Slicer扩展,开发者需先配置合适的开发环境。这包括安装CMake、Git以及其他必要的依赖项[^1]。 对于Windows用户而言,建议使用Visual Studio作为IDE;而对于Linux或macOS用户,则可以考虑采用命令行工具链加上任何偏好的编辑器组合。确保已安装最新版本的Python解释器及其pip包管理工具,因为许多现代Slicer模块都依赖于这些组件来进行脚本编写和支持功能。 #### 创建新项目结构 通过克隆官方GitHub仓库中的模板库来启动一个新的插件工程是一个不错的选择。此方法不仅提供了标准化文件夹布局还附带了一些实用的例子代码片段供学习参考: ```bash git clone https://github.com/Slicer/SlicerRT.git MyNewExtension cd MyNewExtension ``` 上述命令会复制一份名为`MyNewExtension`的新目录到本地磁盘位置,在这里可以根据个人喜好重命名并开始定制化工作流程[^2]。 #### 编写核心逻辑与界面设计 利用VTK(Visualization Toolkit)、ITK(Insight Segmentation and Registration Toolkit)等开源软件库能够极大地简化医学影像处理算法的设计过程。同时Qt框架下的部件类允许构建直观易用的人机交互界面。熟悉掌握这两套API接口是高效完成高质量医疗应用的关键所在[^3]。 当涉及到具体业务场景时,比如实现特定类型的滤波器或是定义新的分割方式,则往往需要深入理解领域专业知识并与临床实际相结合才能取得理想效果。 #### 测试验证阶段 在提交最终版之前务必经过严格的单元测试环节以确认各项特性均能正常运作无误。借助CTest配合CDash平台可自动化这一繁琐的过程从而节省大量宝贵时间精力。此外还需注意跨平台兼容性的考量——即保证无论是在哪种操作系统之上都能获得一致的表现品质[^4]。 #### 发布共享成果 一旦完成了所有前期准备工作之后就可以着手准备打包发布事宜了。按照官方指南指示填写必要元数据信息并将压缩后的源码上传至指定服务器空间等待审核批准即可让更多同行受益于此贡献。 ```python import slicer def register_module(): module_dir = os.path.dirname(__file__) icon_path = os.path.join(module_dir, 'Resources', 'Icons', 'my_icon.png') sampleLogic = SampleLogic() widget = SampleWidget(sampleLogic) slicer.modules.mynewextension = slicer.qSlicerScriptedLoadableModule( moduleName='MyNewExtension', icon=icon_path, category='Examples', hidden=False, logic_cls=lambda *args, **kwargs: sampleLogic, widget_cls=lambda parent=None: widget.setParent(parent), ) ``` 这段简单的Python脚本展示了如何向3D Slicer注册自定义加载型模块,并关联相应的图标资源路径以及UI控件实例对象。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

inter_peng

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值