keil有bug吗?我怎么不能单步调试?进来看看!

2020-01-30 14:05发布

写了很简单的一个程序,但是查看了反汇编之后,那个函数根本就没有对应的汇编,我设置断点之后,在stepin进去,直接就出来函数了,难道keil有bug?

这是主程序:
void data_tst();

void main()

{
        uint i = 0;
        i = sizeof(uint);
        data_tst();
}

void data_tst(void)
{
        uint temp = 0,yy = 0;
        temp = sizeof(uchar);
        yy = sizeof(uint);
}
下面上图:


我调试时候的图片 (原文件名:keil.JPG)


当单步进入data_tst()函数的时候,汇编是:
C:0x0013    020016   LJMP     data_tst(C:0016)
但是再继续往下执行时 下一条指令是:
C:0x0016    22       RET      
直接就返回了,那我写的函数语句呢???
再往下执行就是 :
C:0x0017    00       NOP      
C:0x0018    00       NOP
C:0x0019    00       NOP
C:0x001A    00       NOP

难道是我的keil版本的问题??



我的keil版本 (原文件名:keil_version.JPG)


大家有遇到过这个问题吗?
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
该问题目前已经被作者或者管理员关闭, 无法添加新回复
23条回答
wangkangming
1楼-- · 2020-02-01 05:00
 精彩回答 2  元偷偷看……
wb156351
2楼-- · 2020-02-01 09:15
volatile确实挺麻烦的
user_first
3楼-- · 2020-02-01 13:33
LZ,你的那个data_tst()函数没有作用,除非是最低的优化等级才可能给你翻译。翻译出来的也是无用的代码。如果改成有返回指的函数,将返回值赋给单片机的某个特殊功能寄存器,那么编译器就会给你翻译了。
user_first
4楼-- · 2020-02-01 18:16
看了一下哦,你的变量还全部是局部的,还什么事都不做,那编译器就更加不会给你翻译了。
jswd0810
5楼-- · 2020-02-01 20:36
keil有时真的出些怪事,我原来编译一个工程,同样的语句,我把位置变一下(在同一个{}里),编译的结果都不同

一周热门 更多>