VS2019远程调试 Linux 进程

VS2019远程调试 Linux 进程

 参考文章: https://learn.microsoft.com/zh-cn/cpp/linux/connect-to-your-remote-linux-computer?view=msvc-170
 原文地址:https://github.com/pengguoqing/blog/blob/main/tools/vs_remote_linux.md

 之前都是在 windows 下编写代码并调试, 习惯了 IDE 的调试环境。后来需要开发跨平台的程序就不得不用上了 GDB 和 LLDB 来调试, 当时感觉非常不适应, 但是逐渐还是需要学会了较多的 GDB 常用的命令, 一般情况下还是能玩起来。最近在闲逛的时候发现 VS2019 已经可以远程调试 linux 系统系统下的进程了, 感觉相当牛逼, 试了一下真的可以。本文就记录一下 VS2019 远程调试 Linux 进程的环境搭建。

一、Linux系统环境准备

  linux 机器需要安装 gdb, make, ssh-server, g++,当然相信大多数用户已经安装了,这里还是把安装命令贴出来一下:

sudo apt install openssh-server g++ gdb make

 安装好后需要开启 SSH 服务:

sudo service ssh start

 当然 SSH 服务开机自启动的的话执行下面的命令:

sudo systemctl enable ssh

至此, Linux 系统上的环境就准备好了, 后面直接启动运行相关的进行就可以了。这里先写一个简单的 cmake 工程.

二、VS2019环境准备
2.1、插件安装

 这里假设大家都是通过 vs installer 安装的 VS2019. 所以这里搜索打开即可, 如下图所示:
在这里插入图片描述

安装 使用 C++ 的 Linux 开发 插件, 如下图所示:

在这里插入图片描述

安装好后就可以开始设置远程连接目标了。

2.2、添加目标机器

 打开 VS2019 后, 依次通过 Tools -> Options -> Cross Platform 打开对话框, 如下图所示:
在这里插入图片描述

点击 Add 按钮设置目标机器信息:
在这里插入图片描述

输入目标机器的地址, 用户名和密码即可, 其余两项就用默认参数即可。连接好后能识别出主机操作系统的类型,如下图所示。
在这里插入图片描述

三、远程调试

 将工程代码拷贝到 windows 系统中, 使用 VS2019直接打开文件夹。当然也可以构建VS的工程再打开。
通过 Debug -> Attach Process 添加进程如下图所示:
在这里插入图片描述

之后选择指定的进程即可。本文使用一个名为 __main__的测试程序。
在这里插入图片描述

假如出现 Attaching to a process on Linux with GDB as a normal user may fail with “ptrace:Operation not permitted”. 的错误提示, 则在 linux下执行一下命令:

echo 0| sudo tee /proc/sys/kernel/yama/ptrace_scope

#或者
sudo setcap cap_sys_ptrace=eip /usr/bin/gdb
  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
Linux远程调试C程序,是在开发过程中的一项重要任务。在实际项目中,程序员常常需要通过远程的方式来调试运行在远程机器上的C程序,以解决一些在本地不能测试的问题。远程调试可以大大加快程序开发的速度,同时也可以提高程序员的效率。 下面我们来讲一下,如何在Linux环境下进行远程调试。 首先,需要确保本地环境和远程环境都可以编译和运行该程序。然后,在本地开发环境下使用gdb调试器,连接到远程机器的进程。 具体步骤如下: 1. 在远程机器上编译程序时,需要将调试信息加入到可执行二进制文件中。方法是在编译时加入“-g”参数: $ gcc -g main.c -o main 2. 在远程机器上运行程序: $ ./main 3. 在本地机器上打开gdb调试器,并通过ssh登录到远程机器上。 $ gdb (gdb) target remote 192.168.1.155:12345 Remote debugging using 192.168.1.155:12345 4. 链接远程机器上的进程: (gdb) file main Reading symbols from /home/work/main...done. (gdb) b main Breakpoint 1 at 0x8048440: file main.c, line 7. (gdb) c Continuing. 5. 在远程机器上运行程序,等待程序到达设置的断点处: Breakpoint 1, main () at main.c:7 7 int a = 0; 6. 在gdb中可以使用一些常用的命令来调试程序,例如: (gdb) n // 单步执行 (gdb) s // 单步进入函数 (gdb) p a // 打印变量a的值 (gdb) bt // 打印回溯信息 (gdb) q // 退出gdb调试器 通过以上步骤和命令,我们就可以在本地机器上进行调试远程的C程序了。 需要注意的是,远程调试需要保证两台机器之间能够互相访问,同时需要保证程序开放了需要被访问的端口。 总结起来,Linux远程调试C程序需要经过编译、运行、链接和使用gdb调试器等多个步骤,只有在网络可达,启动过程成功的环境下才能顺利进行。这一过程需要较强的技术能力,不过,随着技术的进步,这个过程已经变得越来越简单和便捷。
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值