某些情况下,同一份代码但生成的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:希望自己现在代码能少给后人留坑= =
自己记得自己是提交完svn代码,然后用那个代码生成的hex提交的呀。拉回来继续看,发现连续编译两次,生成的hex文件都不一样。最后找到原因,编译器用的是iar,在生成hex文件时候,配置错了,原先的代码只是将配置中的生成文件后缀.d51改了成了.hex。修改后,编译,保存hex副本,再编译,比对,一样了。问题解决!,重新提交源码与hex文件。
没过多久,又被测试拉过去,说还是不一样。我又回去看了,发现,复制工程,粘贴,用副本编译,生成的hex也是不一样的,但是烧录也都是能够正常使用。不是很理解为什么。百度很久,发现有一些帖子好像情况差不多,但是都没有给出解决方法。自己对照着其他工程,挨个一点点比对配置,依旧没有任何作用,折腾了将近一天时间。
最后偶然把hex文件拉倒jflash看了一下,发现hex文件有一个字符串,是项目中某个文件的路径,然后往下看,还有assert断言语句。自己拉出那个文件看,觉得没有什么问题啊。自己对于assert也是之前有看到过,知道大概是什么功能,自己没有用过,就抱着怀疑的心态,屏蔽了assert语句,然后复制工程副本,再编译,比较两个工程的hex,发现终于一样了。然后重新百度assert,发现前人有提醒,在release代码时候,记得关掉。。。
哎,折腾了这么久,还是偶然自己看了下生成的hex文件内容,不然,估计怎么都不可能找到这个原因的吧。接手代码,感觉很容易就会掉进坑。之前的同事弄这个代码的时候,不需要比对hex文件,而且烧录,是直接用iar烧录,不用hex文件,所以应该是没有看到这个的现象,不然他解决应该会比我快的多吧。
ps:希望自己现在代码能少给后人留坑= =
相关文章推荐
- 解决问题最重要的习惯不是一直盯着屏幕和编写修改代码,某些时候,阻止你成功的东西恰恰会是过于努力。这时候你需要暂停一下,平缓你的思绪,换一种方法或许能带给你不一样的效果。
- ASP.NET中使用后端代码注册脚本 生成JQUERY-EASYUI的界面错位的解决方法
- 事件驱动自动生成静态页面模板解决方法(二)——生成静态页面(2007年9月13日更新代码)
- 在MyEclipse中写Jsp时,老是会有这种情况,正写着代码,突然光标跳到别的地方了,经常导致输入错误,直接导致程序错误 解决方法
- tp3 生成验证码时,代码无误但显示不了的解决方法
- wsdl 生成java服务端代码开发,客户端请求,服务端返回错误XXX are not understood解决方法
- EF6.0 生成的代码中没有注释的解决方法
- php生成缩略图质量较差解决方法代码示例
- 【python教程:pyQt Designer代码生成失败解决方法】
- asp.net mvc 生成“*/?Length=*”的情况解决方法
- IE被某些网站恶意代码修改的问题解决方法心得
- dedecms arclist生成代码不换行的解决方法
- Chrome在某些网站可能会遇到使用flash时上传文件对话框不能弹出的情况解决方法
- C#动态代码生成控件后其他事件不能获取该控件值的解决方法
- 利用svcutil.exe 访问windows Server 2003的wcf服务生成客户端代码报错:无法从http://XXX/XXX.svc?wsdl获取元数据”错误的解决方法
- 关于vmware上的虚拟机在某些情况下无法关机的解决方法
- 生成动态库so的方法|解决NDK r5b引用静态库失效的问题|在NDK的Nactive代码中使用Android Log的方法|生成Native java头文件
- vs2008 "不安全代码只会在使用 /unsafe 编译的情况下出现"的解决方法
- windows防火墙无法更改某些设置,错误代码0x80070422解决方法
- Android Studio 上面运行Java代码出现的乱码情况解决方法