1. Segmentation fault (core dumped):
有时候我们在程序中编译么有问题,但是运行的时候显示越界,那有可能是本身变量索引越界,还有可能就是本身定义的变量太大了,在栈区中已经存不下了,因此必须得放在堆区或者全局
例如:
ideal_obj_set_t obj_set;
其中这个obj_set结构体非常大,在栈中存不下了,那么可以加一个关键字 static ,使得这个变量存在堆区中,
static ideal_obj_set_t obj_set;
如此就可以了。
2. 编译通过运行不了奇怪的问题
有时候我们下拉最新代码,然后切换到自己分支,rebase操作,install更新以后,发现系统运行不起来,所有可能的操作都已经做了,但系统还是运行不起来,那有可能就是自己代码中修改了一些结构,但这些结构在别的没有权限的包中调用了,因此运行有问题,例如我当时修改了roadmap_node_t的结构,但是在track_planner中使用了这个结构,但我没有track_planner的权限,因此运行不起来,
解决方法: 在每个patch中,在gerrit的网址中最后几位数就是当前patch所对应的号,将这个号复制到如下网址中,
http://devops.uisee.ai/view/verifyPatch/job/verifyPatch/build?delay=0sec
生成对应的install包,然后在魔方上的patch中下载对应的install包即可
注意:这种问题必须得等到patch完全merge以后,再下载install包才不会出问题,如果一直没有merge,则一直需要这样的操作