有人使用 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
再编译一次看看吧,估计是你编译完之后又多敲了几行,导致错位了吧。
都试了好几次了,还是这样!! 屏蔽DEBUG("PC_process", " sta = %d",*sta); 试试 bargagebaobei 发表于 2018-5-8 14:52
屏蔽DEBUG("PC_process", " sta = %d",*sta); 试试
屏蔽了,程序是正常运行的,不会出现问题 好 别屏蔽那个了 这次单独屏蔽OSStart();试试 bargagebaobei 发表于 2018-5-8 15:28
好 别屏蔽那个了 这次单独屏蔽OSStart();试试
屏蔽了 OSStart(); ucos 系统跑不起来的,这样不行 所以我考虑 应该原罪也不是DEBUG("PC_process", " sta = %d",*sta); 是系统跑起来自后 因为你之前的设置哪里有问题导致的 看来你还是逐行检查每步的数据吧 bargagebaobei 发表于 2018-5-8 16:49
所以我考虑 应该原罪也不是DEBUG("PC_process", " sta = %d",*sta); 是系统跑起来自后 因为你之前的设置 ...
我不是使用这个 *sta 就没问题, 这又怎么解释呢? 好茫然啊!!
页:
[1]
2