在CCS5中,如何设置断点,还有断点列表的使用是如何的,硬件断点与软件断点的使用不同之处是什么?
This thread has been locked.
If you have a related question, please click the "Ask a related question" button in the top right corner. The newly created question will be automatically linked to this question.
Hi Yanzhen,
设置断点有多种办法。
1. 最简单的办法就是在调试模式下,源文件代码的最左侧,双击来设置断点。
如图。
图中,52行左侧的断点符号表示有一个active的断点设置。
51行左侧,表示有一个断点设置在这一行但该断点处于非激活状态。
2. 通过右键单击在任何一行有效代码上来设置断点
如图。
选择Breakpoint或者Hardware breakpoint来设置断点。
3. 在断点列表中设置一个新的断点
在这个列表中,用户可以通过勾选左边的激活框来使断点激活或关闭。
右键在每条断点上可以打开详细设置。
除了break,实际上调试的时候还需要很多更高级的要求,比如当一个变量的值每次为5的时候,让程序停下来(或记录)。
详细的使用方法,请参考下面的链接:
http://processors.wiki.ti.com/index.php/Category:CCS
输入需要设置断点的指令地址或符号名字,即可在该处设置断点。
关于软件断点和硬件断点的区别,可以查看下面的链接:
http://en.wikipedia.org/wiki/Breakpoint
简单的说,硬件断点是CPU用硬件来支持的,软件断点则是通过调试器软件实现的。
可以粗略的认为,硬件断点能够实现的功能更多,更强。
但是,CPU能支持的断点数量毕竟较少,如,ARM Cortex-M3的CPU可以支持6个硬件断点。
所以在CCS中,如果设置超过6个硬件断点,用户会得到下面的提示:
您说的大体明白,但是有二点要再问一下:
1:在断点输入对话框中,哪里去找断点地址,难到要到汇编环境中找吗?还有就是输入断点符号,请问我要在一条语句前设断点,是不是这条语句就是符号,到现在我也没有搞明白。
2:当设为硬断点时,CPU内部在运行时的情况是怎么样的?它与软断点的本质不同是什么?(对不起,我的单片机学的不好!)。
Hi Yanzhen,
1. CPU的操作都是基于指令的,而不是C语言的语句。Symbol和Label是汇编中比较基本的单元标示,用来方便程序员识别语句地址。关于这部分内容,建议查看下面的这份材料来深入理解。
processors.wiki.ti.com/.../TI_Compiler_Information
2. 这个问题请参考en.wikipedia.org/.../Breakpoint
这里给出了比较容易理解的说明。
但是每种CPU对硬件断点的支持方式都有不同,所以要了解具体的实现本质,就要去查询相关的CPU的信息了。
例如,需要了解ARM Cortex M3 CPU处理硬件断点的方法,可以到下面的地址查询: