keil重建工程后编译的结果跟之前不一样

2020-01-01 17:47发布

编译器:mdk 5.17
如题,因为某些原因我重建了工程,文件还是之前的,但是编译后的hex比之前的小了几kb,最关键的是运行到某段代码竟然死机了。。。
工程的配置还是照之前的配的,重建了两次还是无果,有没有人遇到过这种情况?
ps:.o文件也是发现很多(几乎)多小跟之前的不一样了。
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
该问题目前已经被作者或者管理员关闭, 无法添加新回复
34条回答
单飞
1楼-- · 2020-01-03 05:39
myxiaonia 发表于 2016-7-28 15:46
新建工程一样不一样,只要把两个过程文件用beyond compare比较下看看是不是真的一样 ...

因该可以肯定过程变了,重建的工程文件顺序、分组变化很大,以至于map里的内容变化也很大。
单飞
2楼-- · 2020-01-03 06:53
在提供一点信息,找到一处死机的语句,然后屏蔽之后就能正常运行。此处是个指针,仿真找到篡改的位置,然后改掉,那么此指针正常了。但是在别的地方却死了。
ps:篡改的位置,//调试开关
#define DEBUG_MODE 0 //0关闭打印调试,1开启打印调试

#if DEBUG_MODE
#define printf_debug(...)   printf(__VA_ARGS__);

#else
#define printf_debug(...)
#endif
调用printf_debug会篡改某该指针,然后关闭它。

原来一份没问题的代码(也可能是表面看来没什么问题),却出来问题,这种调试是件很痛苦的事。。。
chencc8
3楼-- · 2020-01-03 10:52
use microLIB相同么
KongQuan
4楼-- · 2020-01-03 14:22
单飞 发表于 2016-7-28 16:47
在提供一点信息,找到一处死机的语句,然后屏蔽之后就能正常运行。此处是个指针,仿真找到篡改的位置,然后 ...

看着像是设置的堆栈过小了。
ywlzh
5楼-- · 2020-01-03 15:55
 精彩回答 2  元偷偷看……
单飞
6楼-- · 2020-01-03 19:50
chencc8 发表于 2016-7-29 14:40
use microLIB相同么

用一个版本的软件会不一样吗

一周热门 更多>