checkout最新代码

  1. 使用snailVPN软件,与mac文件系统高度集成

  2. 在需要的位置新建同名的文件夹,比如seasw1.0m

  3. 进入对应文件夹,在finder上边栏选择checkout最新代码。或者是在这个文件夹上右键,checkout代码(都是基于macos的设置的扩展)

  4. 当使用snailVPN下载的代码库有任何变动时,或者出现错乱时,必须在snailVPN的图形界面中,修改管理对应的代码库

在github上删除某个文件及其历史

  1. 将该文件复制一份副本,设定新的名称

  2. 在github目录中删除旧的文件

  3. 在github客户端中忽略新的名称的文件,并把删除旧文件一起更新上去

编程规范

  1. 保持代码模块的独立性,创建自己的.h .c文件方便代码控制与管理

建立自己的SVN仓库服务器

优势:速度,防🔫,可以用svn

劣势:安全性,使用虚拟机nat内网隔离与icloud弥补

在parallels desktop上安装centos7服务器

选择对应的iso文件,快速安装即可

压缩svn服务器虚拟机的资源占用,防止电脑过热,1core,512m

将图形化界面服务器改为默认命令行界面,节省系统资源

一次性修改:

init 3

永久修改:

systemctl get-default 查看当前的设置

systemctl set-default multi-user.target 改为命令行界面

systemctl set-default graphical.target 改为图形界面

cat /etc/inittab 相关帮助信息

安装svn

yum -y install svn

选择svn仓库目录为/opt/svn

mkdir /opt/svn

创建新仓库并配置为开放式使用

创建仓库

cd /opt/svn

svnadmin create seasw1.0m

cd ./seasw1.0m

cd ./conf

修改且仅修改svnserve.conf,增加一句: anon-access = write 保证非验证用户具有读写权限。

启动svn服务,关闭防火墙,并且将其设置为开机自启动

vi /etc/rc.local

在其中增加两个开机时自动执行的指令:


pkill -9 svn

systemctl stop firewalld 关闭防火墙

svnserve -d -r /opt/svn 启动svn服务

关闭svn服务的命令为pkill -9 svn

chmod 777 /etc/rc.d/rc.local 增加脚本权限,知识来源于/etc/rc.local的注释

注意⚠️:目前存在权限问题,在于这样启动的svn程序的权限过低,可以在机器重启后,使用root身份手动执行以上命令

由此设置之后,便可以在本机上从svn服务器成功check代码,代码地址为 svn://虚拟机服务器svn地址/seasw1.0m,不需要用户名与密码

便可以方便、独立地自己管理自己的功能代码、修改提交,以及封存其对应的初始版本信息,以及所有修改(将1版本与xx版本对比即可,显示日志-ctrl选择需要对比的两个版本-右键-对比)

debug的坑:

  1. seasw中pipeline的port in的最后一个是收消息的ring,port out的最后一个是发消息的ring,并不全是物理网口。
出现运行段错误的可能原因:a要放到数组b的第100个地方中,但b没那么大
  1. 引用的.h文件名字不要写错!路径不要写错!dpdk的rte_xxx.h就不用写路径了,直接写名字即可。

  2. 注意定义的结构体有没有上升到类型,涉及到使用struct my_type a或my_type a

  3. 对于static静态变量,写个专用的函数,在该文件中引用它

  4. 自己的全局变量,.h中用extern声明,.c中定义,在外面的文件直接include .h就可以用

  5. if(a = 1)此类错误不会报编译错误,只会报warning!!!且难以排查。所以每次编译玩都要注意看warning提示,否则程序可以运行起来,但会出现奇怪的错误(如段错误,对于指针)

使用gdb排查段错误

  1. 在程序运行吐核后,首先查看编译提示信息,包括所有的错误和warning

  2. 编译时关闭o3优化,附带-g选项

  3. 使用命令ulimit -c unlimited,生成无限制大小的core文件

  4. 运行程序,生成core文件

  5. 使用命令gdb ./seasw_fe core.xxx运行gdb排查

  6. 如使用bt命令,查看出错的函数调用层次

全量更新,更新本地,本地上传;全量编译;控制影响范围;查看日志

if的作用域是{},缩进只应用一行,pythonbiss