一、目的:
在windows下开发调试arm程序,并且可以直接F5进入调试
二、思路:
这个实现方式比较落后,有好的方式欢迎留言;
1、windows下vscode ssh链接ubuntu
2、开发板与ubuntu挂载共享目录;
3、vscode 配置pipeTransport ,程序编译后生成到共享目录即可F5进入调试。
三、工具:
windows :安装vscode配置Remote-ssh相关工具
ubuntu:交叉编译工具链、ssh、cmake
开发板:ssh、gdb
windows、ubuntu、开发板都处于同一网段。
四、步骤:
1、windows下配置vscode ssh链接ubuntu
参考:vscode远程连接及调试_vscode远程调试-优快云博客
2、配置launch.json、settings.json、tasks.json、CMakeLists.txt
launch.json:
{
"version": "0.2.0",
"configurations": [
{
"name": "g++ build and debug active file",
"type": "cppdbg",
"request": "launch",
"cwd": "/nfs/", // 程序路径
"program": "XXXX", // 需要调试的程序
"args": [],
"stopAtEntry": true, // 设为true时程序将暂停在程序入口处
"environment": [],
"externalConsole": false,
"MIMode": "gdb",
"setupCommands": [
{
"description": "gdb",
"text": "-enable-pretty-printing",
"ignoreFailures": true
}
],
"preLaunchTask": "project",
"pipeTransport": {
"pipeProgram": "/usr/bin/ssh",
"pipeArgs": ["root@XXX.XXX.XXX.XXX"], //嵌入式设备IP
"debuggerPath": "/usr/bin/gdb" //嵌入式设备中的gdb
},
}
]
}
settings.json:
{
"files.associations": {
"map": "cpp",
"optional": "cpp",
"system_error": "cpp",
"fstream": "cpp",
"iostream": "cpp",
"deque": "cpp",
"string": "cpp",
"vector": "cpp",
"*.tcc": "cpp",
"iosfwd": "cpp",
"sstream": "cpp",
"unordered_map": "cpp"
},
"cmake.sourceDirectory": "XXXX" //代码目录
}
tasks.json:
{
"version": "2.0.0",
"options": {
"cwd": "XXXX" //生成目录
},
"tasks": [
{
"label": "cmake",
"type": "shell",
"command": "cmake",
"args": [
".."
]
},
{
"label": "make",
"group":{
"kind":"build",
"isDefault":true
},
"dependsOn": ["cmake"],
"command": "make",
"args":[
]
},
{
"label":"project",
"dependsOn":[
"make"
]
}
]
}
CMakeLists.txt
cmake_minimum_required(VERSION 3.10.0)
#项目信息
project(XXXXX LANGUAGES C CXX VERSION 1.0)
#设置目标系统名字
set(CMAKE_SYSTEM_NAME aarch64)
#设置目标处理器架构
set(CMAKE_SYSTEM_PROCESSOR ARM)
#交叉编译环境
set(TOOLCHAINT_DIR /opt/fsl-imx-wayland/5.4-zeus/sysroots)
set(CMAKE_SYSROOT ${TOOLCHAINT_DIR}/aarch64-poky-linux)
# 指定交叉编译器
set(CMAKE_C_COMPILER ${TOOLCHAINT_DIR}/x86_64-pokysdk-linux/usr/bin/aarch64-poky-linux/aarch64-poky-linux-gcc)
set(CMAKE_CXX_COMPILER ${TOOLCHAINT_DIR}/x86_64-pokysdk-linux/usr/bin/aarch64-poky-linux/aarch64-poky-linux-g++)
set(CMAKE_C_FLAGS "-mcpu=cortex-a53+crc+crypto -fstack-protector-strong -D_FORTIFY_SOURCE=2 -Wformat -Wformat-security -Werror=format-security")
set(CMAKE_CXX_FLAGS "-mcpu=cortex-a53+crc+crypto -fstack-protector-strong -D_FORTIFY_SOURCE=2 -Wformat -Wformat-security -Werror=format-security")
set(CMAKE_FIND_ROOT_PATH_MODE_PROGRAM NEVER)
set(CMAKE_FIND_ROOT_PATH_MODE_LIBRARY ONLY)
set(CMAKE_FIND_ROOT_PATH_MODE_INCLUDE ONLY)
#语言标准
set(CMAKE_C_STANDARD 11)
set(CMAKE_CXX_STANDARD 17)
INCLUDE_DIRECTORIES(./include)
INCLUDE_DIRECTORIES(${CMAKE_SYSROOT})
AUX_SOURCE_DIRECTORY(./src DIR_SRCS)
ADD_EXECUTABLE(DevInter ${DIR_SRCS})
SET(EXECUTABLE_OUTPUT_PATH XXXX)//输出路径
五、调试
vscode 中编译完毕后,直接按F5就可进入调试。
参考:
vscode远程连接及调试_vscode远程调试-优快云博客
Ubuntu中用VSCode交叉编译程序放到从机上运行_澄澈i的博客-优快云博客
vscode远程连接及调试_vscode远程调试-优快云博客
Pipe transport for remote communication in C++ projects (visualstudio.com)