如何解决在 Visual Studio 2019 for ARM linux 目标中集成交叉编译、部署到目标和远程调试工作流的正确方法是什么?
我为 ARM/Linux 目标开发用户空间 C++ 应用程序,并使用 Windows 的 ARM 工具链来构建我的应用程序。 我已经成功配置了一个基于 makefile 的构建过程来在 msys2 下构建我的目标,我想将它集成到 Visual Studio 2019 并在我的项目中使用以下工作流:
- 通过使用我现有的 makefile 运行 mingw2 shell,从 Visual Studio 工具栏/上下文菜单调用构建、重建等。
- 将构建结果(我的应用程序)部署到我的远程机器 - ARM/Linux 目标(可能在后台使用 ssh、rsync 或类似工具)
- 在目标机器上使用我的应用程序远程调用 gdbserver 并在 Visual Studio 中启动远程调试会话(或在 Visual Studio 中远程调试我的目标上的应用程序的其他选项)
- 一键完成第 1、2、3 步的选项。
我已经可以单独完成上述一些任务,但我不确定我使用的是最佳方式。 对于构建过程,我在tasks.vs.json中添加了以下任务:
"tasks": [
{
"taskLabel": "build","appliesTo": "/","contextType": "build","type": "launch","command": "${env.MSYSROOT}/usr/bin/bash.exe","args": [
"--login","-c","\"sh build.sh\""
],"env": {
"PATH": "${env.MSYSROOT}/usr/bin","CHERE_INVOKING": "1","MSYSTEM": "MINGW64"
}
},
其中 build.sh
是在 mingw2 shell 中调用构建过程的脚本。
对于远程调试,我设置了以下launch.vs.json:
{
"version": "0.2.1","defaults": {},"configurations": [
{
"type": "cppdbg","name": "mytarget.elf","project": "TargetDir/mytarget.elf","projectTarget": "","cwd": "${workspaceRoot}","program": "${workspaceRoot}/TargetDir/mytarget.elf","MIMode": "gdb","externalConsole": true,"inheritEnvironments": [
"gcc_arm"
],"miDebuggerPath": "${env.MSYSROOT}/link-to-my-arm-toolchain/arm-linux-gnueabihf-gdb.exe","setupCommands": [
{
"text": "-environment-cd ${workspaceRoot}/TargetDir"
},{
"text": "-enable-pretty-printing","ignoreFailures": true
}
],"showDisplayString": true,"miDebuggerServerAddress": "targetIP:9999","remoteMachine": "targetIP","launchCompleteCommand": "None","filterStderr": true,"filterStdout": true
}
]
}
但显然只有当 gdbserver 已经在附加到我的应用程序的目标上运行并监听端口 9999 时它才有效
对于正确实现 1 - 4 个部分的任何提示,我会很高兴
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。