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.

[参考译文] CCS/MSP430FR6989:EXIT.c代码的含义是什么?

Guru**** 2604225 points


请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

https://e2e.ti.com/support/tools/code-composer-studio-group/ccs/f/code-composer-studio-forum/627880/ccs-msp430fr6989-what-does-mean-the-exit-c-code

部件号:MSP430FR6989

工具/软件:Code Composer Studio

您好,

我正在使用CCS v.CCX.0调试代码7.1 ,有时在代码执行过程中,调试窗口会显示一个名为exit.c.的代码

我有点担心这是我的代码中的问题。

它的确切含义是什么?

exit.c代码如下所示。

#include <stdlib.h>
#include <pprof_h>

#include <stdio.h>

#ifdef __TI_RTS_Build
/*------------- */
/*__TI_DEFAULT_EXIT表示缺省的TI退出例程为 */
/*已使用。 链接程序假定在
看到此符号*/*时退出会执行什么操作。 如果
使用自定义退出例程*/*,则不应定义此符号。 */*------------------
*/
__ASM("__TI_DEFAULT_EXIT .SET 1");
#endif

extern void (*.__TI_CLEANG_PTR)(void);
extern void (*.__TI_dtors_ptr)(int);

typedef void (*PTRFUNC)();
int __TI_enable_exit_profile_output=1;*********************************************************************************************************************************************************************************************************************************************************

//*
exit()-正常程序终止。 *
///................ /
void exit (int状态)
{/*------------------
*/*
输出配置文件信息如果我们有一个有效的路径配置文件输出处理程序*//*------------------
*/
IF (__TI_ENable_EXIT_PROFILE输出&&)
_symval(&&_ti_pprof_out hndl)!=(unsigned long)-1)
{
PTRFUNC ppfunc =(PTRFUNC)(&&_TI_pprof_out _hndl);
(pppfunc)();
}

/*------------------ */
/*在访问GLOBALS时必须锁定,例如__TI_dters_PTR, */
/*__TI_CLEANG_PTR */*------------------
*/
_lock();/*------------------

*//*
ATEXIT函数和静态对象析构函数都是 在
__TI_dters_PTR所指的链接列表中注册的*/*,NOW Walk */*
通过此列表呼叫他们。 */*------------------
*/
IF (__TI_dters_PTR)(*.__TI_dters_PTR)(status);

/*------------------ */*
如果文件可能打开,__TI_CLEANG_PTR()将被设置
为*/*关闭它们。 */*------------------
*/
IF (__TI_CLEANG_PTR)(*.__TI_CLEANG_PTR)();

_UNLOCK ();
ABORT();
}/****************************************************

//*
中止-程序异常终止。 目前只是停止执行。 *
///................ /
void abort(void){/*------------------

*/*
设置C$exit标签,以便调试器知道C++程序何时
完成*/*。 如果未使用调试器,则可以删除此选项。 */*------------------
*/
___ ASM (" .global C$EXIT");
_ASM ("C$EXIT:NOP");

for (;;);/*永远自旋*/
}

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    当main完成后,将调用EXIT功能。  请注意,如何通过调用函数abort来结束exit,而abort则以旋转循环结束。  在大多数嵌入式系统中,函数main永远不会结束。  您的系统是否属于这种情况?  如果是这样,那么您需要确定主功能为何会以某种方式完成。

    谢谢,此致,

    -George

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    我正在使用CCS 7.1 进行代码调试,有时在代码执行过程中,调试窗口会显示一个名为exit.C.

    的代码。您的程序是否使用TI-RTOS或SYS/BIOS?

    原因是TI-RTOS和SYS/BIOS可以在检测到错误后通过调用EXIT()来中止程序。 在显示exit.c文件后,“调试”窗口中的堆栈回溯将显示什么内容?

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    否,我的系统不是这种情况。
    我的系统仍处于活动状态,等待中断!
    谢谢
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    不会。但下次发生此错误时,我会注意堆栈回溯中显示的信息。

    谢谢!