跨平台调试的 C/C++ 语言项目

Posted 车斗

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了跨平台调试的 C/C++ 语言项目相关的知识,希望对你有一定的参考价值。

clib

clib C API 是一个可以跨平台调试的 C语言静态库,动态库和调用程序的示例项目。示例项目由下面的命令行自动生成:

$ cd pytools/tools/
$ gen_project.py --project=clib

Author: zhang

Date: 2021-06-30 14:32:59

Refer: https://blog.csdn.net/ubuntu64fan/article/details/106689478

Download: https://github.com/pepstack/pytools/blob/main/clib-20210630.143256.tar.gz

可供跨平台调试的 C/C++ 程序项目

系统要求:

  • Win10 家庭版 (Windows_NT x64 10.0.19042)
  • VS2015 社区版 (C/C++)
  • VSCode on Win10
    Version: 1.57.1
    Date: 2021-06-17T13:28:07.755Z
    Electron: 12.0.7
    Chrome: 89.0.4389.128
    Node.js: 14.16.0
    V8: 8.9.255.25-electron.0
    OS: Windows_NT x64 10.0.19042
    Extensions:
    Remote Development
    C/C++ Extension Pack
  • msys2-x86_64-20210604.exe

在 Windows 上用 Visual Studio 调试代码

用 VS2015 打开项目文件:msvc/clib-ALL-vs2015.sln,然后编译调试即可。

VSCode 整合 mingw 在 Windows 上调试代码

首先安装好 msys2 环境,参考:https://www.msys2.org/ 。或者如下过程:

  • 下载:

      https://github.com/msys2/msys2-installer/releases/download/2021-06-04/msys2-x86_64-20210604.exe
    
  • 安装开发工具链:

      $ pacman -Syu
    
      $ pacman -Su
    
      $ pacman -S --needed base-devel mingw-w64-x86_64-toolchain mingw-w64-i686-toolchain
    

然后根据用户的安装位置目录设置好如下环境变量(路径中不可用有空格、全角字符):

MSYS2_PATH_TYPE=inherit
MSYS64_HOME=C:\\DEVPACK\\msys64
MSYS64_ROOT_BASH=/C/DEVPACK/msys64
WORKSPACE_ROOT_BASH=/C/Users/cheungmine/Workspace/github.com/pytools/gen-projects

添加如下的位置到 Path 环境变量:

Path=...;%MSYS64_HOME%;%MSYS64_HOME%\\usr\\bin;C:\\DEVPACK\\MicrosoftVSCode;C:\\DEVPACK\\MicrosoftVSCode\\bin;

根据代码所在的目录,务必创建一个驱动器链接:"/C" -> “C:”

C:\\>mklink /J "/C" "C:\\"

如果你的代码在 E: 盘,则创建:

C:\\>mklink /J "/E" "E:\\"

注意:关闭防病毒软件以加速编译和调试速度。

接下来就可以用 VSCode 打开项目的目录(.vscode 所在的目录)(或者打开cmd,进入到项目目录,输入:“code .”)。

C:\\Users\\cheungmine>cd C:\\Users\\cheungmine\\Workspace\\github.com\\pytools\\gen-projects\\clib

C:\\Users\\cheungmine>cd C:\\Users\\cheungmine\\Workspace\\github.com\\pytools\\gen-projects\\clib>code .

在 VSCode 窗口,为源程序 app_main.c 设置断点,然后选择:

Run and Debug: (gdb) mingw64 debug

就可以在 Windows 上用 VSCode 调试程序了。

在 Windows 上远程调试 Linux 服务器上的代码

远程 Linux 服务器版本:centos7 + gcc, gdb。

仍然使用 VSCode,将代码复制到 Linux 服务器上,用 VSCode 远程连接到服务器,打开项目目录。按如下选择:

Run and Debug: (gdb) linux64 debug

就可以在 Windows 上用 VSCode 调试 Linux 服务器上的程序了。

此时仍需要输入密码,下面配置免密:

打开 cmd 命令行窗口,生成密钥对:

  C:\\> cd %USERPROFILE%
  C:\\Users\\cheungmine\\>ssh-keygen

然后把 C:\\Users\\cheungmine.ssh\\id_rsa.pub 复制到 Linux 上,我用 msys shell:

$ ssh-copy-id -i /C/Users/cheungmine/.ssh/id_rsa.pub root@node1

然后在 cmd 中测试是否可用免密登录到 node1:

C:\\Users\\cheungmine\\>ssh root@node1

最后打开 VSCode,配置远程文件:C:\\Users\\cheungmine.ssh\\config, 如下:

# Read more about SSH config files: https://linux.die.net/man/5/ssh_config
Host node1
    HostName node1
    User root

此时就可用远程免密登录 Linux 服务器,编译和调试远程项目了。切记不要配置:IdentifyFile !

只构建代码(不调试)

进入项目目录(Makefile 所在的目录)可用直接 make,就编译出完整的项目了。支持的 shell 有:

  • cygwin (Windows)

  • mingw (Windows)

  • bash (Linux)

按 “make help” 显示编译帮助。

以上是关于跨平台调试的 C/C++ 语言项目的主要内容,如果未能解决你的问题,请参考以下文章

跨平台调试的 C/C++ 语言项目

如何调试大型 Linux C/C++ 项目?

vscode C语言编译?

C/C++编程笔记:VC++6.0环境下调试 C语言 代码的方法和步骤

在VSCode里编译C++Java程序,并设置环境

python基础01