正在加载图片...
Keil软件实验教程(二) Kell的调试命令、在线汇编与断点设置 上一讲中我们学习了如何建立工程、汇编、连接工程,并获得目标代码,但是做到这 步仅仅代表你的源程序没有语法错误,至于源程序中存在着的其它错误,必须通过调试才能 发现并解决,事实上,除了极简单的程序以外,绝大部份的程序都要通过反复调试才能得到 正确的结果,因此,调试是软件开发中重要的一个环节,这一讲将介绍常用的调试命令、利 用在线汇编、各种设置断点进行程序调试的方法,并通过实例介绍这些方法的使用。 一、常用调试命令 在对工程成功地进行汇编、连接以后,按Cur+F5或者使用菜单 Debug-> Start/Stop Debug Session即可进入调试状态,Keil内建了一个仿真CPU用来模拟执行程序,该仿真CPU功 能强大,可以在没有硬件和仿真机的情况下进行程序的调试,下面将要学的就是该模拟调试 功能。不过在学习之前必须明确,模拟毕竞只是模拟,与真实的硬件执行程序肯定还是有区 别的,其中最明显的就是时序,软件模拟是不可能和真实的硬件具有相同的时序的,具体的 表现就是程序执行的速度和各人使用的计算机有关,计算机性能越好,运行速度越快。 进入调试状态后,界面与编缉状态相比有明显的变化,Dbug菜单项中原来不能用的命 令现在已可以使用了,工具栏会多出一个用于运行和调试的工具条,如图1所示, Debug菜 单上的大部份命令可以在此找到对应的快捷按钮,从左到右依次是复位、运行、暂停、单步、 过程单步、执行完当前子程序、运行到当前行、下一状态、打开跟踪、观察跟踪、反汇编窗 口、观察窗口、代码作用范围分析、1#串行窗口、内存窗口、性能分析、工具按钮等命令, 确两个重要的概念,即单步叫刊暄零插回E入 执行与全速运行。全速执行 图1调试工具条 是指一行程序执行完以后紧 接着执行下一行程序,中间不停止,这样程序执行的速度很「:0需性如果该位 快,并可以看到该段程序执行的总体效果,即最终结果正确L:作者:周坚 还是错误,但如果程序有错,则难以确认错误出现在哪些程 CPL P1.0 LCALL DELAY 序行。单步执行是每次执行一行程序,执行完该行程序以后 MA工M 即停止,等待命令执行下一行程序,此时可以观察该行程序B4m3,F 执行完以后得到的结果,是否与我们写该行程序所想要得到P2:Dz DJNZ R7, DI 的结果相同,借此可以找到程序中问题所在。程序调试中 RET 这两种运行方式都要用到。 END 使用菜单STEP或相应的命令按钮或使用快捷键Fl可 以单步执行程序,使用菜单 STEP OVER或功能键F10可以 图2调试窗口 以过程单步形式执行命令,所谓过程单步,是指将汇编语言 中的子程序或高级语言中的函数作为一个语句来全速执行。 按下Fl1键,可以看到源程序窗口的左边出现了一个黄色调试箭头,指向源程序的第 行,如图2所示。每按一次F1l,即执行该箭头所指程序行,然后箭头指向下一行,当箭头 指向 LCALL DELAY行时,再次按下F11,会发现,箭头指向了延时子程序 DELAY的第 行。不断按F11键,即可逐步执行延时子程序 通过单步执行程序,可以找出一些问题的所在,但是仅依靠单步执行来查错有时是困难 的,或虽能查出错误但效率很低,为此必须辅之以其它的方法,如本例中的延时程序是通过Keil 软件实验教程(二) Keil 的调试命令、在线汇编与断点设置 上一讲中我们学习了如何建立工程、汇编、连接工程,并获得目标代码,但是做到这一 步仅仅代表你的源程序没有语法错误,至于源程序中存在着的其它错误,必须通过调试才能 发现并解决,事实上,除了极简单的程序以外,绝大部份的程序都要通过反复调试才能得到 正确的结果,因此,调试是软件开发中重要的一个环节,这一讲将介绍常用的调试命令、利 用在线汇编、各种设置断点进行程序调试的方法,并通过实例介绍这些方法的使用。 一、常用调试命令 在对工程成功地进行汇编、连接以后,按 Ctrl+F5 或者使用菜单 Debug->Start/Stop Debug Session 即可进入调试状态,Keil 内建了一个仿真 CPU 用来模拟执行程序,该仿真 CPU 功 能强大,可以在没有硬件和仿真机的情况下进行程序的调试,下面将要学的就是该模拟调试 功能。不过在学习之前必须明确,模拟毕竟只是模拟,与真实的硬件执行程序肯定还是有区 别的,其中最明显的就是时序,软件模拟是不可能和真实的硬件具有相同的时序的,具体的 表现就是程序执行的速度和各人使用的计算机有关,计算机性能越好,运行速度越快。 进入调试状态后,界面与编缉状态相比有明显的变化,Debug 菜单项中原来不能用的命 令现在已可以使用了,工具栏会多出一个用于运行和调试的工具条,如图 1 所示,Debug 菜 单上的大部份命令可以在此找到对应的快捷按钮,从左到右依次是复位、运行、暂停、单步、 过程单步、执行完当前子程序、运行到当前行、下一状态、打开跟踪、观察跟踪、反汇编窗 口、观察窗口、代码作用范围分析、1#串行窗口、内存窗口、性能分析、工具按钮等命令。 学习程序调试,必须明 确两个重要的概念,即单步 执行与全速运行。全速执行 是指一行程序执行完以后紧 接着执行下一行程序,中间不停止,这样程序执行的速度很 快,并可以看到该段程序执行的总体效果,即最终结果正确 还是错误,但如果程序有错,则难以确认错误出现在哪些程 序行。单步执行是每次执行一行程序,执行完该行程序以后 即停止,等待命令执行下一行程序,此时可以观察该行程序 执行完以后得到的结果,是否与我们写该行程序所想要得到 的结果相同,借此可以找到程序中问题所在。程序调试中, 这两种运行方式都要用到。 使用菜单 STEP 或相应的命令按钮或使用快捷键 F11 可 以单步执行程序,使用菜单 STEP OVER 或功能键 F10 可以 以过程单步形式执行命令,所谓过程单步,是指将汇编语言 中的子程序或高级语言中的函数作为一个语句来全速执行。 按下 F11 键,可以看到源程序窗口的左边出现了一个黄色调试箭头,指向源程序的第一 行,如图 2 所示。每按一次 F11,即执行该箭头所指程序行,然后箭头指向下一行,当箭头 指向 LCALL DELAY 行时,再次按下 F11,会发现,箭头指向了延时子程序 DELAY 的第 一行。不断按 F11 键,即可逐步执行延时子程序。 通过单步执行程序,可以找出一些问题的所在,但是仅依靠单步执行来查错有时是困难 的,或虽能查出错误但效率很低,为此必须辅之以其它的方法,如本例中的延时程序是通过 图 1 调试工具条 图 2 调试窗口
向下翻页>>
©2008-现在 cucdc.com 高等教育资讯网 版权所有