dongaohui 发表于 2015-6-24 10:17:23

ccs6.0仿真断点异常情况原因求助

CCS6.0编译仿真一段简单测试代码,
volatile uint16_t n = 10;
volatile uint16_t m = 10;
if(n>100)
{
   m = 1;
}
为何仿真的时候在 m = 1;处打断点时会仿真进入?不过看下来m = 1;这句并没真正执行。而且多条件选择语句
if(...)
{
...
}
else if(...)
{
...
}
else if(...)
{
...
}
else
{
...
}
会出现有的条件判断语句在仿真时不能打断点,感觉用起来很奇怪,有没工程师知道这都是什么原因的啊?

steaven2000 发表于 2015-6-24 10:31:57

本帖最后由 steaven2000 于 2015-6-24 10:33 编辑

1、看看有没有把断点打在{ 或 }处?
2、会不会你在其他文件里改了这个c文件,而在ccs里面没有更新导致行错位?
3、优化等级,有时优化太厉害了会看到光标乱跑的。
4、你的条件是否互斥?编译器判断程序在任何情况下都不会跳转到某个条件,当然就“优化”掉了这些代码。

changer15309 发表于 2015-6-24 13:45:45

选择debug模式把所有优化都关掉试试

changer15309 发表于 2015-6-24 13:46:35

选择debug模式把所有优化都关掉试试

dongaohui 发表于 2015-6-24 17:33:07

steaven2000 发表于 2015-6-24 10:31
1、看看有没有把断点打在{ 或 }处?
2、会不会你在其他文件里改了这个c文件,而在ccs里面没有更新导致行错 ...

1、没有打在{ 或 }处。
2、没有在其他文件里改这个c文件。
3、查明是优化等级问题,把优化等级改低再仿真就没有这些问题了。
4、条件是互斥的

~非常感谢~{:smile:}

dongaohui 发表于 2015-6-24 17:34:00

changer15309 发表于 2015-6-24 13:46
选择debug模式把所有优化都关掉试试

优化关掉都解决了。谢谢~
页: [1]
查看完整版本: ccs6.0仿真断点异常情况原因求助