请问有人使用cmBacktrace工具吗?

2019-07-14 15:02发布

这是程序源码:int main(void)
{
    mainInit();
    delay_ms(2000);
    delay_ms(2000);
    OSInit();
    OSTaskCreate(start_task, (void *) 0,(OS_STK *) &START_TASK_STK[START_STK_SIZE - 1], START_TASK_PRIO);
    OSStart();
}

void start_task(void *pdata)
{
    u8 *sta;
    DEBUG("PC_process", " enter start_task function !!!");
    OSStatInit();                    
    while (1)
    {
        delay_ms(2000);
        DEBUG("PC_process", " sta = %d",*sta);
    }
}



下面是用cmBackTrace 工具 定位出来的错误信息:


E:工作MCU 资料STM32 资料cmBacktrack_project_testcmbackTraceonline_gprsObjects>addr2line -e charger.axf -a -f 08000352 0800252b 0800428f 080002ff
0x08000352
OSStartHighRdy
E:工作MCU 资料stm32 资料cmBacktrack_project_testcmbackTraceonline_gprs/..src_commonucosiiport/os_cpu_a.asm:110
0x0800252b
OSStart
E:宸ヤ綔MCU 璧勬枡stm32 璧勬枡cmBacktrack_project_testcmbackTraceonline_gprs/..src_commonucosiicore/os_core.c:830
0x0800428f
main
E:宸ヤ綔MCU 璧勬枡stm32 璧勬枡cmBacktrack_project_testcmbackTraceonline_gprs/srcmain.c:52
0x080002ff
__rt_entry_main



通过 工具定位出来的是 main.c  中 的 第 52 行有问题, 52 行对应的是 OSStart();  但是程序的错误 应该在 DEBUG("PC_process", " sta = %d",*sta);
为什么定位的 不正确啊??? 这是什么原因???
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。