调试Azure IoT Edge模块
分类: Azure物联网 ◆ 标签: #Azure #IoT Edge # ◆ 发布于: 2023-06-14 22:32:42
我们前面已经学习过了,如何配置开发工具和环境,也详细的描述了开发一个Azure IoT Edge模块的一般步骤,和项目模板的详细设计,但是如何对我们的Azure IoT Edge模块进行调试呢?
Azure IoT Edge模块的运行是需要环境的,没有环境是无法运行的。因此一定要按照之前的文章来设定,关于之前的文章:
- https://www.azuredeveloper.cn/article/how-to-setup-a-enviroment-for-azure-iot-edge-module-develop
- https://www.azuredeveloper.cn/article/setup-tools-best-pratice-for-azure-iot-edge-module-develop
- https://www.azuredeveloper.cn/article/how-to-develop-azure-iot-edge-module
我们这一节来学习如何调试Azure IoT Edge的模块代码, 调试Azure IoT Edge模块我们推荐两种方式:
- 对单个的模块进行调试
- 使用
attach的模式调试多个模块
对单个模块进行调试
对单个模块进行调试比较简单,只需要在开发机本地就可以完成了,请使用如下的步骤进行调试。
- 在
vs code里使用命令Ctrl + Shift + P启动Azure IoT Edge: Start IoT Edge Hub Simulator for Single module, 如下图:

- 在出现的窗口里输入你需要输入的
input名字,可以输入多个,以逗号分隔开,如下图:

- 最后
Azure IoT Edge Hub Simulator设置成功了,如下图:

针对单个模块的模拟器设置成功后,我们可以在vs code的docker插件打开来看一下,这个时候docker运行的容器,如下图:

从这个图中可以看到,模拟器有两个docker容器启动了,一个是input镜像的容器,这是一个用户测试的工具,这个容器实例会监听本地端口53000端口,该端口用于像edgeHub模拟器发生测试模块所需要的Input, 例如使用curl:
curl --header "Content-Type: application/json" --request POST --data '{"inputName": "inputFromSensor","data":"hello world"}' http://localhost:53000/api/v1/messages
从这里可以看到inputName指定了我们需要的input, 后面的数据就是我们需要的。当然你可以使用postman来给发送消息。
然后我们打开VS code的Terminal, 进入到模块的目录,例如:Demo2Solution\modules\Sample3Module, 在该目录下运行dotnet build, 然后打开您的代码文件在需要调试的地方放置断点,然后按Ctrl + Shift + E或者直接在左侧的菜单栏上选择调试窗口,同时在窗口处选择本地调试配置文件,如下图所示:

如此就可以按照单步调试的规则进行单个模块调试了。
另外需要注意的是,调试完成之后一定要使用Ctrl + Shift + P, 然后Azure IoT Edge: stop IoT Edge Hub Simulator停止模拟器。
使用模拟器远程attach进行调试
这个调试的办法首先需要一个Azure IoT Hub, 并且在该IoT Hub里已经创建了一个Azure IoT Edge设备的Identity, 然后使用如下的步骤:
1.使用vs code在本地设置模拟器指向该Azure IoT Edge的Identity, 如下图:

2.设置成功之后,在您的源文件里添加断点。
3.在vs code里选择deployment.debug.template.json, 在该文件上右键单击Build and Run IoT Edge solution in Simulator, 你会看到termianl的显示结果:

4.同时您可以从docker的界面中可以看到如下的docker设置:

5.打开vs code的debug面板,选择远程调试的配置文件,选择start debug, 在出现的进程里面选择dotnet SampleModule.dll的进程。从调试面板的左侧里即可以观察到相应的进程。
6.按Shift + F5停止调试,然后运行Ctrl + shift + P, Azure IoT Edge: stop iot edge hub simulator
至此完成attach模式的调试。