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.

关于断点的问题

在CCS5中,如何设置断点,还有断点列表的使用是如何的,硬件断点与软件断点的使用不同之处是什么?

  • 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个硬件断点,用户会得到下面的提示:

  • 如果只是想让CPU在某条指令处停下来,那么软件和硬件断点在功能上没有区别。

  • 您说的大体明白,但是有二点要再问一下:

    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处理硬件断点的方法,可以到下面的地址查询:

           infocenter.arm.com/.../index.jsp