Che-Theia IDE允许用户在devfile中定义自定义命令,然后在工作区中使用这些命令。下面是devfile的命令部分的示例。
commands:
- name: theia:build
actions:
- type: exec
component: che-dev
command: >
yarn
workdir: /projects/theia
- name: run
actions:
- type: vscode-task
referenceContent: |
{
"version": "2.0.0",
"tasks":
[
{
"label": "theia:watch",
"type": "shell",
"options": {"cwd": "/projects/theia"},
"command": "yarn",
"args": ["watch"]
}
]
}
- name: debug
actions:
- type: vscode-launch
referenceContent: |
{
"version": "0.2.0",
"configurations": [
{
"type": "node",
"request": "attach",
"name": "Attach by Process ID",
"processId": "${command:PickProcess}"
}
]
}
Che commands
- theia:build
- exec类型意味着使用Che运行程序执行命令。用户可以指定执行命令的容器中的组件。
- command字段包含用于执行的命令行。
- workdir是执行命令的工作目录。
Visual Studio Code (VS Code) tasks
- run
- 类型是vscode-task。
- 对于这种类型的命令,ReferenceContent字段必须包含具有VS代码格式的任务配置的内容。
- 有关VS代码任务的详细信息,请参阅VisualStudio用户指南页面中的“任务”部分。
VS Code launch configurations
- debug
- 类型是vscode-launch。
- 它包含VS代码格式的启动配置。
- 有关VS代码启动配置的详细信息,请参阅VisualStudio文档页中的调试部分。
有关可用任务和启动配置的列表,请参见将devfile中的配置导出到的/工作区/.theia目录中的tasks.json和launch.json配置文件。
Che-THEIA任务类型
devfile中有两种类型的任务:VS代码格式的任务和Che命令。启动工作区时,会将devfile中的任务复制到配置文件中。然后,根据任务的类型,该任务可用于运行:
CHE命令:从“配置任务”部分的“终端→运行任务”菜单,或从VS代码格式的“我的工作区”面板任务:从“运行任务”菜单中运行插件提供的任务定义,选择“终端→运行任务”菜单选项。这些任务被放置在“检测任务”部分中。
Running and debugging
什么是 Debug Adapter Protocol
将新语言的调试器添加到IDE或编辑器不仅是一项重大的工作,而且还令人沮丧的是,由于每个工具都使用不同的API来实现相同的特性,这种努力不能轻易地在多个开发工具上分摊。DebugAdapterProtocol(DAP)的思想是抽象开发工具的调试支持如何与调试器或运行时通信到协议中。假设现有的调试器或运行时很快就采用此协议是不现实的,因此我们宁愿假设中介组件-所谓的Debug Adapter-将现有的调试器或运行时调整为Debug Adapter协议。Debug Adapter协议使得为开发工具实现通用调试器成为可能,该工具可以通过Debug Adapters与不同的调试器通信。而且,可以在多个开发工具中重用Debug适配器,这大大减少了在不同工具中支持新调试器的工作量。调试适配器协议是调试器提供程序和工具供应商的双赢!
Che-Theia支持调试适配器协议DAP。此协议为开发工具如何与调试器通信定义了一种通用方法。这意味着Che-Theia可以与所有的实现一起工作。
先决条件
- 运行中的EclipseChe实例。要安装EclipseChe的实例,请参阅Che‘快速启动’。
Procedure
-
调试应用程序的过程:单击“调试→添加配置”以向项目添加调试或启动配置。
-
从弹出菜单中,为要调试的应用程序选择适当的配置。
-
通过修改或添加属性来更新配置。
-
可以通过单击编辑器边界来切换断点
-
打开断点的上下文菜单以添加条件。
-
启动debugging, 点击 View → Debug.
-
在Debug视图中,选择配置并按F5来调试应用程序。或者,通过按Ctrl F5启动应用程序而不进行调试。