大三了要很多实验要用到Linux,只有用ssh连接Ubuntu虚拟机进行。这里就计算机网络实验:自己动手编写协议栈为例,配置Debug环境。

VScode连接VMware

这一点可以参考我关于xv6远程环境配置的博客

拉取代码

git clone https://gitee.com/hitsz-lab/net_lab.git

下载必要包、插件

sudo apt-get install make cmake libpcap-dev  
sudo apt-get install libreadline-dev libncurses-dev g++ 

VScode插件

在远程主机上安装如下插件:

  • C/C++
  • CMake Tools

编译、执行

编译

找到CMake Tools拓展,先点击Configure All Projects,然后点击Build即可
在这里插入图片描述

执行

按下F5,在弹出来的菜单中选择带有linux的项 (通常来说是最后一项),然后VSCode会自动生成一个Launch.json,将其修改如下:

在这里插入图片描述

修改完毕后,再次按下F5。这时,大概率会出现如下问题:
在这里插入图片描述
这是因为没有写入权限的缘故,我们需要以Root模式重新连接远程环境,关于如何以Root模式登入,请继续阅读拓展部分,否则可以跳过该部分。需要注意的是,转移到Root模式后,需要重新下载VSCode的插件,如下图所示
在这里插入图片描述
此时,在src/ethernet.c中打下断点,再次按下F5,调试成功!
在这里插入图片描述


拓展:VMware linux设置root权限

可以参考这位老哥的博客


更方便地调试

上面介绍的方法是如何调试src,由于测试发生在test中,我们可能会更想直接调试test。
首先,修改test中makefile的如下,即在FLAG后面加一个 -g:
在这里插入图片描述
接着,修改launch.json的内容如下:在这里插入图片描述
在test目录下重新执行下述命令以给test_eth_in打上调试标记:

make test_eth_in

最后,在eth_in_test中打下断点,按下F5,即可成功调试test里的eth_in_test了。调试其他文件的方法一致。

Logo

华为开发者空间,是为全球开发者打造的专属开发空间,汇聚了华为优质开发资源及工具,致力于让每一位开发者拥有一台云主机,基于华为根生态开发、创新。

更多推荐