您的位置:首页 > 编程语言

某些情况下,同一份代码但生成的hex文件不一样的解决方法

2016-11-14 11:07 267 查看
    本人在接手之前一位同事的代码,因为加了部分功能,然后调完程序提交了,但是后来被测试通知,提交的源码编译生成的hex文件与我提交的hex文件比对不通过。

    自己记得自己是提交完svn代码,然后用那个代码生成的hex提交的呀。拉回来继续看,发现连续编译两次,生成的hex文件都不一样。最后找到原因,编译器用的是iar,在生成hex文件时候,配置错了,原先的代码只是将配置中的生成文件后缀.d51改了成了.hex。修改后,编译,保存hex副本,再编译,比对,一样了。问题解决!,重新提交源码与hex文件。

    没过多久,又被测试拉过去,说还是不一样。我又回去看了,发现,复制工程,粘贴,用副本编译,生成的hex也是不一样的,但是烧录也都是能够正常使用。不是很理解为什么。百度很久,发现有一些帖子好像情况差不多,但是都没有给出解决方法。自己对照着其他工程,挨个一点点比对配置,依旧没有任何作用,折腾了将近一天时间。

    最后偶然把hex文件拉倒jflash看了一下,发现hex文件有一个字符串,是项目中某个文件的路径,然后往下看,还有assert断言语句。自己拉出那个文件看,觉得没有什么问题啊。自己对于assert也是之前有看到过,知道大概是什么功能,自己没有用过,就抱着怀疑的心态,屏蔽了assert语句,然后复制工程副本,再编译,比较两个工程的hex,发现终于一样了。然后重新百度assert,发现前人有提醒,在release代码时候,记得关掉。。。

    哎,折腾了这么久,还是偶然自己看了下生成的hex文件内容,不然,估计怎么都不可能找到这个原因的吧。接手代码,感觉很容易就会掉进坑。之前的同事弄这个代码的时候,不需要比对hex文件,而且烧录,是直接用iar烧录,不用hex文件,所以应该是没有看到这个的现象,不然他解决应该会比我快的多吧。

ps:希望自己现在代码能少给后人留坑= =
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐