2023年3月30日更
之前对vs code以及groops编译流程了解不够深入,现在介绍一种更加适用的groops调试方法。
windows环境下VS code调试GROOPS
1.安装MSYS并配置环境,官网https://www.msys2.org/
打开Mingw64,安装groops需求的包:
工具箱更新、cmake、expat以及线性运算库blas
pacman -S mingw-w64-x86_64-toolchain mingw-w64-x86_64-cmake expat mingw64/mingw-w64-x86_64-openblas
大气库netcdf
pacman -S mingw-w64-x86_64-netcdf
压缩文件库tar
pacman -S tar make
大气相关的erfa库
mkdir -p /c/groops/lib && cd /c/groops/lib
wget https://github.com/liberfa/erfa/releases/download/v1.7.0/erfa-1.7.0.tar.gz
tar -xvf erfa-1.7.0.tar.gz
cd erfa-1.7.0
./configure
make
make install
若还需要编译groopsMPI(并行版本),则需要安装MPI:
官网下载MPI:https://learn.microsoft.com/en-us/message-passing-interface/microsoft-mpi ,将MPI的bin文件添加至系统环境变量。
随后打开mingw64,输入:
pacman -S mingw-w64-x86_64-msmpi
2.安装C++ extention扩展包、Cmake工具箱
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-ek1aiEnu-1680224872951)(https://s3-us-west-2.amazonaws.com/secure.notion-static.com/e0113963-cad1-4082-a11b-fc676aa61066/Untitled.png)]
3.点击左下角CMake,选择要构建的类型debug,这一步将在source目录下生成包含makefile的build文件。
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-eY2yTNp1-1680224872952)(https://s3-us-west-2.amazonaws.com/secure.notion-static.com/600b9044-ea55-4c54-b199-3d3569d5f1b3/Untitled.png)]
4.回到groops.cpp,终端→配置默认生成任务→选择g++
此步将会生成一个tasks.json文件,该文件将告诉IDE用什么编译工具生成exe:
"version": "2.0.0",
"tasks": [
{
"type": "cppbuild",
"label": "C/C++: g++.exe 生成活动文件",
"command": "E:\\MSYS2\\mingw64\\bin\\g++.exe",
"args": [
"-fdiagnostics-color=always",
"-g",
"${file}",
"-o",
"${fileDirname}\\${fileBasenameNoExtension}.exe"
],
"options": {
"cwd": "${fileDirname}"
},
"problemMatcher": [
"$gcc"
],
"group": {
"kind": "build",
"isDefault": true
},
"detail": "编译器: E:\\MSYS2\\mingw64\\bin\\g++.exe"
}
]
点击构建,会在当前工作目录的build文件夹下生成可执行程序。
5.运行→添加配置→GDB/GLL
这一步生成launch.json,作用为设置GDB调试器的参数,包括命令行参数,执行程序等:
// 使用 IntelliSense 了解相关属性。
// 悬停以查看现有属性的描述。
// 欲了解更多信息,请访问: https://go.microsoft.com/fwlink/?linkid=830387
"version": "0.2.0",
"configurations": [
{
"name": "(gdb) 启动",
"type": "cppdbg",
"request": "launch",
"program": "${workspaceFolder}/build/groops.exe",
"args": ["F:/GNSS/PPP/04Network.xml"],
"stopAtEntry": false,
//"cwd": "${fileDirname}",
"cwd": "F:/GNSS/PPP",
"environment": [],
"externalConsole": false,
"MIMode": "gdb",
"miDebuggerPath": "E:/MSYS2/mingw64/bin/gdb.exe",
"setupCommands": [
{
"description": "为 gdb 启用整齐打印",
"text": "-enable-pretty-printing",
"ignoreFailures": true
},
{
"description": "将反汇编风格设置为 Intel",
"text": "-gdb-set disassembly-flavor intel",
"ignoreFailures": true
}
]
}
]
6.设置断点,启动调试。