你能绝对自信地说:我写的程序没有Bug?显示不敢!
找Bug最需要的是什么?除了一颗耐心细致的心思,你还需要一个非常好的工具。但是有工具还不行,还要掌握地够好。 在这里,我将演示下怎么样使用课程中所用的调试工具。但是很遗憾,我没有办法教你怎么用得足够好。很庆幸,对于这门课程来说,并不需要足够好!
主要内容
在本节课程中,我们的主要目标是学习这个开发软件的调试功能。
注意,这个课时看起来简单,但是非常重要,特别是如果你从未使用过Keil。建议学习时先照课程做一遍;然后完成视频的学习后,再自行多操作几次,同时结合自己使用过的其它开发软件经验进行比较。
在后面的课程中,你会经常用到这些调试功能。我们知道,代码不可能一次就写好,总要反复调试,而调试过程中对工具的掌握程度决定了你是否能更加快速有效地找到Bug。
重点难点
注意事项
在视频中,可以看到使用了逻辑分析仪这个功能。这个功能简而言之就是一个软件示波器,可以将变量的值用波形的方式显示出来。在后面的课时,我会频繁的演示用该逻辑分析仪显示整个系统中任务的运行状态,方便观察和调试。
课程中没有演示逻辑分析仪上各个按钮的功能,建议自行操作体验一下。
常见问题
Watch窗口中观察结构体变量显示有问题?
如下所示代码,其中有一个结构体指针的赋值。我仿真的时候用watch窗口看,发现blockPtr和block值一样。他俩不应该是地址和值的关系吗?
A:是这样的。这个跟ide处理显示有关系。指针加在里面,会显示值;普通的变量也会显示值。但是结构体,他没办法显示值,所以显示的也是地址,你可以看到200004旁边有个&block。block是结构体,watch显示的是结构体的其实地址。你要看结构体,点旁边的+就有了。
flag设成局部变量的话就不能打开逻辑分析仪了
Q:不知道有人问过这个问题没 flag设成局部变量的话就不能打开逻辑分析仪了
A:全局变量在RAM中地址固定,才能监测;局部位置不定太难搞,于是KEIL就不搞了