Skip to main content

调试Azure IoT Edge模块

分类:  Azure物联网 标签:  #Azure #IoT Edge # 发布于: 2023-06-14 22:32:42

我们前面已经学习过了,如何配置开发工具和环境,也详细的描述了开发一个Azure IoT Edge模块的一般步骤,和项目模板的详细设计,但是如何对我们的Azure IoT Edge模块进行调试呢?

Azure IoT Edge模块的运行是需要环境的,没有环境是无法运行的。因此一定要按照之前的文章来设定,关于之前的文章:

我们这一节来学习如何调试Azure IoT Edge的模块代码, 调试Azure IoT Edge模块我们推荐两种方式:

  • 对单个的模块进行调试
  • 使用attach的模式调试多个模块

对单个模块进行调试

对单个模块进行调试比较简单,只需要在开发机本地就可以完成了,请使用如下的步骤进行调试。

  1. vs code里使用命令Ctrl + Shift + P启动Azure IoT Edge: Start IoT Edge Hub Simulator for Single module, 如下图:


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


  3. 最后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 codeTerminal, 进入到模块的目录,例如: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 + PAzure IoT Edge: stop iot edge hub simulator

至此完成attach模式的调试。