代码版本控制与管理
checkout最新代码
-
使用snailVPN软件,与mac文件系统高度集成
-
在需要的位置新建同名的文件夹,比如
seasw1.0m
-
进入对应文件夹,在finder上边栏选择checkout最新代码。或者是在这个文件夹上右键,checkout代码(都是基于macos的设置的扩展)
-
当使用snailVPN下载的代码库有任何变动时,或者出现错乱时,必须在snailVPN的图形界面中,修改管理对应的代码库
在github上删除某个文件及其历史
-
将该文件复制一份副本,设定新的名称
-
在github目录中删除旧的文件
-
在github客户端中忽略新的名称的文件,并把删除旧文件一起更新上去
编程规范
- 保持代码模块的独立性,创建自己的.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的坑:
- seasw中pipeline的port in的最后一个是收消息的ring,port out的最后一个是发消息的ring,并不全是物理网口。
出现运行段错误的可能原因:a要放到数组b的第100个地方中,但b没那么大
-
引用的.h文件名字不要写错!路径不要写错!dpdk的rte_xxx.h就不用写路径了,直接写名字即可。
-
注意定义的结构体有没有上升到类型,涉及到使用struct my_type a或my_type a
-
对于static静态变量,写个专用的函数,在该文件中引用它
-
自己的全局变量,.h中用extern声明,.c中定义,在外面的文件直接include .h就可以用
-
if(a = 1)此类错误不会报编译错误,只会报warning!!!且难以排查。所以每次编译玩都要注意看warning提示,否则程序可以运行起来,但会出现奇怪的错误(如段错误,对于指针)
使用gdb排查段错误
-
在程序运行吐核后,首先查看编译提示信息,包括所有的错误和warning
-
编译时关闭o3优化,附带-g选项
-
使用命令ulimit -c unlimited,生成无限制大小的core文件
-
运行程序,生成core文件
-
使用命令gdb ./seasw_fe core.xxx运行gdb排查
-
如使用bt命令,查看出错的函数调用层次
全量更新,更新本地,本地上传;全量编译;控制影响范围;查看日志
if的作用域是{},缩进只应用一行,pythonbiss