dawdawd 发表于 2018-5-8 11:46:20

有人使用 cmBacktrace 工具吗?? 现在遇到问题求解!!!

这是程序源码:int main(void)
{
    mainInit();
    delay_ms(2000);
    delay_ms(2000);
    OSInit();
    OSTaskCreate(start_task, (void *) 0,(OS_STK *) &START_TASK_STK, 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_test\cmbackTrace\online_gprs\Objects>addr2line -e charger.axf -a -f 08000352 0800252b 0800428f 080002ff
0x08000352
OSStartHighRdy
E:\工作\MCU 资料\stm32 资料\cmBacktrack_project_test\cmbackTrace\online_gprs/..\src_common\ucosii\port\/os_cpu_a.asm:110
0x0800252b
OSStart
E:\宸ヤ綔\MCU 璧勬枡\stm32 璧勬枡\cmBacktrack_project_test\cmbackTrace\online_gprs/..\src_common\ucosii\core\/os_core.c:830
0x0800428f
main
E:\宸ヤ綔\MCU 璧勬枡\stm32 璧勬枡\cmBacktrack_project_test\cmbackTrace\online_gprs/src\main.c:52
0x080002ff
__rt_entry_main



通过 工具定位出来的是 main.c中 的 第 52 行有问题, 52 行对应的是 OSStart();但是程序的错误 应该在 DEBUG("PC_process", " sta = %d",*sta);
为什么定位的 不正确啊??? 这是什么原因???

す疯Ⅱ恒す 发表于 2018-5-8 13:46:24

再编译一次看看吧,估计是你编译完之后又多敲了几行,导致错位了吧。

dawdawd 发表于 2018-5-8 14:28:52

す疯Ⅱ恒す 发表于 2018-5-8 13:46
再编译一次看看吧,估计是你编译完之后又多敲了几行,导致错位了吧。

都试了好几次了,还是这样!!

bargagebaobei 发表于 2018-5-8 14:52:45

屏蔽DEBUG("PC_process", " sta = %d",*sta); 试试

dawdawd 发表于 2018-5-8 15:03:31

bargagebaobei 发表于 2018-5-8 14:52
屏蔽DEBUG("PC_process", " sta = %d",*sta); 试试

屏蔽了,程序是正常运行的,不会出现问题

bargagebaobei 发表于 2018-5-8 15:28:59

好 别屏蔽那个了 这次单独屏蔽OSStart();试试

dawdawd 发表于 2018-5-8 15:57:08

bargagebaobei 发表于 2018-5-8 15:28
好 别屏蔽那个了 这次单独屏蔽OSStart();试试

屏蔽了 OSStart(); ucos 系统跑不起来的,这样不行

bargagebaobei 发表于 2018-5-8 16:49:59

所以我考虑 应该原罪也不是DEBUG("PC_process", " sta = %d",*sta);   是系统跑起来自后 因为你之前的设置哪里有问题导致的

feixiang20 发表于 2018-5-9 00:04:40

看来你还是逐行检查每步的数据吧

dawdawd 发表于 2018-5-10 11:32:06

bargagebaobei 发表于 2018-5-8 16:49
所以我考虑 应该原罪也不是DEBUG("PC_process", " sta = %d",*sta);   是系统跑起来自后 因为你之前的设置 ...

我不是使用这个 *sta 就没问题, 这又怎么解释呢? 好茫然啊!!
页: [1] 2
查看完整版本: 有人使用 cmBacktrace 工具吗?? 现在遇到问题求解!!!