visual-studio-code - 在边缘模拟器中运行的 Azure Edge 模块的 vscode 调试配置?
问题描述
在我的开发盒 (Windows) 上,我有一个 Visual Studio Code IoT Edge 工作区,其中包含我正在开发的 C++ IoT Edge 模块。我的开发盒运行 Windows,带有 Docker Desktop。
我在本地 IoT Edge 模拟器 (edgeHubDev) 中调试此模块时遇到问题。
我可以毫无问题地针对物理边缘设备构建、部署和调试,因此包含我的模块的容器已正确设置以进行调试。我可以设置并获取要命中的断点。
但是,当我“在模拟器中构建和运行解决方案”时,我无法获得断点。开始调试确实允许我选择模块进程,所以 VSCode 实际上是在与模块容器对话,它出现了。
这是我正在使用的调试配置(launch.json):
{
"name": "edge simulator module",
"type": "cppdbg",
"request": "attach",
"program": "module",
"processId": "${command:pickRemoteProcess}",
"pipeTransport": {
"pipeCwd": "${workspaceFolder}",
"pipeProgram": "docker",
"pipeArgs": [
"exec",
"-i",
"module",
"sh",
"-c"
],
"debuggerPath": "/usr/bin/gdb"
},
"sourceFileMap": {
"/app": "${workspaceFolder}/modules/module"
},
"linux": {
"MIMode": "gdb",
"setupCommands": [
{
"description": "Enable pretty-printing for gdb",
"text": "-enable-pretty-printing",
"ignoreFailures": true
}
]
},
"osx": {
"MIMode": "lldb"
},
"windows": {
"MIMode": "gdb",
"setupCommands": [
{
"description": "Enable pretty-printing for gdb",
"text": "-enable-pretty-printing",
"ignoreFailures": true
}
]
}
},
VSCode 确实看到该模块正在运行,因为我得到了调试输出窗口,当我终止 edgeHubDev 时该窗口消失了。
在容器运行时,我可以对映像运行 docker 命令(ps -ef,ls),因此我知道模块进程正在运行。
当断点在“真正的”边缘设备中正常工作时,为什么断点不会命中的任何想法?
解决方案
首先确保您使用的是模块的调试版本,以便它安装将用于调试的材料。
如果还是不能调试,可以分享你的完整样例工程,让我们看看。
也看看vscode cpptools repo,也许有一些调试 C++ 项目的相关问题。
推荐阅读
- amazon-web-services - 通过控制台创建的“事物”的 aws iot mqtt 客户端 ID
- c++ - 在 VSCode 的输出视图中断开 CMake/Build 输出的行
- node.js - Cookie 发送到 localhost 但不发送到 https 域
- angular - Angular Material - 自定义列过滤器和默认过滤器不能一起工作
- c# - 如何使用 ASP.Net MVC 显示文件的文件名和下载链接?
- mongodb - 在 MongoDB 查询中仅对几个字段进行分组和保留
- python - 'NoneType' 对象不可下标 - 我该如何解决这个错误
- python - Discord.Py:CommandOnCooldown 提高 CommandOnCooldown(bucket, retry_after)
- list - 如何从颤动的列表映射堆栈中恢复已删除的数据项
- java - Java UDP 使用线程发送/接收数据包