两周工作总结
不知不觉来到公司已经将近一个月了,参与工作也已经将近三周了,三周的时间里,我参阅了一个项目的移植与测试,在博远和凯旋的帮助下,我解决了一些项目移植的问题,在此期间也有了很多收获。
就比如Linux吧,大学期间我确实接触了不同系的Linux,包括centos、Ubuntu等,但当时由于基本都有图形化界面,因此我的命令行操作可能只仅限于常用的几个,不常用的命令我有所了解,但确实没什么机会使用。但到了公司,在导师和老大的指导下,我能真正用到书里学到的Linux命令(当然目前用到的还是很少)。
这三周我也解决了一些问题,大的小的,常见的不常见的等等。
- getopt()系统调用函数,该函数的参数选项是接收命令行参数与其对应的指令,并返回相应的命令行参数的ASCII码值,若接收命令行参数结束(即没有参数时),则返回标准结束符EOF,值为-1。在老项目下,前辈们声明一个变量'c'来接收getopt()的返回值,并判断变量'c'的值是否为-1,以此作为循环跳出的标志。但老项目中,不同文件里的变量'c'类型有变化,有的声明为int,有的声明为char。这在x86平台下是没有区别的,因为计算机可以正确的将一个变量在int与char类型之间转换。但在ARM架构下,经过测试发现,计算机无法正确的转换一个负值的int型变量,比如声明一个整型的变量c,赋值为 -1,将其转化为char类型,其ASCII码值就会自动转换成255。我猜测是因为ARM架构的计算机在进行类型转换后,无法识别二进制中的符号位,因此会出现这种错误。
- 在项目编译完成后,可以使用在x86架构下封装好的脚本来启动/关系系统,但在实际测试中发现系统可以正常启动,但无法正常关闭系统,我经过对脚本文件一行一行的排查,最终找到了问题所在:原先封装好的一个终止进程的脚本K,在使用cut指令剪切系统进程ID时,少获取一位,因为x86架构下,进程ID一般占5位,而ARM架构下,进程ID是6位数,此时无法终止进程,从而造成系统无法关闭。
其实工作中出现问题是很常见的,没有一个程序员敢保证自己写的代码从来没有bug的,但如果足够细心的话,绝对可以让自己少写几个bug。另外工作中遇到问题了一定要及时跟其他人交流,包括出现问题了一定要及时跟直接上级反应,在你不了解整个项目流程的时候,有时候项目出问题可能不是因为你个人的原因。像我,刚开始的时候遇到一些问题不太好意思去问我的导师,去问凯旋,想着自己解决。然后排查了一遍,找不到问题,排查了一遍,找不到问题,再排查一遍,好像找到问题所在了,但是怎么解决???这种有时候其实很影响工作效率的,因为很有可能坐在工位上,一下午就想着解决这一个问题了。而你向上级反应之后,以他们对项目、对业务的熟悉程度来说,可能半小时就把问题给解决了。
评论
0 评论