打印

这是堆栈溢出了吗?

[复制链接]
2089|5
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
lixiao3717|  楼主 | 2013-3-17 11:21 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
AC, TE, se, ck, ST
做的一个流量计。DEBUG的时候提示

Sun Mar 17, 2013 11:13:14: The stack 'Stack' is filled to 95% (76 bytes used out of 80). The warning threshold is set to 90.%
Sun Mar 17, 2013 11:13:37: Breakpoint hit: Code @ TEMP_PRESS.c:191.5
Sun Mar 17, 2013 11:13:37: The stack 'Stack' is filled to 100% (80 bytes used out of 80). The warning threshold is set to 90.%
Sun Mar 17, 2013 11:13:41: Breakpoint hit: Code @ TEMP_PRESS.c:191.5
Sun Mar 17, 2013 11:13:41: The stack 'Stack' is filled to 100% (80 bytes used out of 80). The warning threshold is set to 90.%
Sun Mar 17, 2013 11:14:28: Breakpoint hit: Code @ TEMP_PRESS.c:191.5

一开始使用95%  后来一直就是100% 这是什么原因呢? 有什么危害? 貌似现在这个仪表工作还是比较稳定的。
还请各位大牛指点一下解决办法。
先谢谢大家了!

相关帖子

沙发
cjhk| | 2013-3-17 17:00 | 只看该作者
溢出会出现莫名其妙的错误   在写程序时   最好估算一下代码量   这样选片子比较容易一点

使用特权

评论回复
板凳
lixiao3717|  楼主 | 2013-3-18 09:30 | 只看该作者
奇怪的是这个程序跑起来一直还算稳定。 这两天调试的时候刚发现的!
保险起见我还是先调大一些吧。

使用特权

评论回复
地板
三千花花世界| | 2013-3-18 10:06 | 只看该作者
一般的调试器会预先用某个特定值比如0xFF来初始化所有的堆栈

然后在每次代码中断运行,进入调试状态的时候去检查一下堆栈,看看堆栈内的数据有多少已经不是0xFF,就意味着代码已经使用了多少堆栈

一般出现顶楼这样的错误会有两个可能
1, 就是确实堆栈越界了,代码使用到了100%的堆栈。
但是说实话,如果是这个原因,基本代码也不会正常工作了

2,就是代码本身有些问题,有些数据误写入堆栈区域了。实际的堆栈可能只用了30%,但是代码误操作了堆栈最后面的地址,导致调试器初始化的值被修改了。调试器也就认为堆栈越界了。

使用特权

评论回复
5
lixiao3717|  楼主 | 2013-3-18 10:35 | 只看该作者
输出的debug\list\*.map    下面的Stack used :  000002FE是不是代表堆栈使用的大小?

->Sub-tree of type: Function tree
                             CSTACK
    | Stack used (prev) :  000002FC
  02    memcpy
        | Stack used (prev) :  00000068
        | + function block  :  00000002
        |  Already listed
  01  __data16_memcpy
      | Stack used (prev) :  000002FC
      | + function block  :  00000002
  <-Sub-tree of type: Function tree
    | Stack used          :  000002FE

使用特权

评论回复
6
lixiao3717|  楼主 | 2013-3-18 18:48 | 只看该作者
自己顶~~

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

5

主题

21

帖子

0

粉丝