你的浏览器版本过低,可能导致网站不能正常访问!
为了你能正常使用网站功能,请使用这些浏览器。

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

[复制链接]
Jone888 提问时间:2018-5-8 11:46 /
这是程序源码: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_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);
为什么定位的 不正确啊??? 这是什么原因???
收藏 评论11 发布时间:2018-5-8 11:46

举报

11个回答
疯de_恒 回答时间:2018-5-8 13:46:24
再编译一次看看吧,估计是你编译完之后又多敲了几行,导致错位了吧。

评分

参与人数 1蝴蝶豆 +3 收起 理由
zero99 + 3

查看全部评分

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

都试了好几次了,还是这样!!
琦子 回答时间:2018-5-8 14:52:45
屏蔽DEBUG("PC_process", " sta = %d",*sta); 试试

评分

参与人数 1蝴蝶豆 +2 收起 理由
zero99 + 2

查看全部评分

Jone888 回答时间:2018-5-8 15:03:31
bargagebaobei 发表于 2018-5-8 14:52
屏蔽DEBUG("PC_process", " sta = %d",*sta); 试试

屏蔽了,程序是正常运行的,不会出现问题
琦子 回答时间:2018-5-8 15:28:59
好 别屏蔽那个了 这次单独屏蔽OSStart();试试
Jone888 回答时间:2018-5-8 15:57:08
bargagebaobei 发表于 2018-5-8 15:28
好 别屏蔽那个了 这次单独屏蔽OSStart();试试

屏蔽了 OSStart(); ucos 系统跑不起来的,这样不行
琦子 回答时间:2018-5-8 16:49:59
所以我考虑 应该原罪也不是DEBUG("PC_process", " sta = %d",*sta);   是系统跑起来自后 因为你之前的设置哪里有问题导致的
feixiang20 回答时间:2018-5-9 00:04:40
看来你还是逐行检查每步的数据吧

评分

参与人数 1蝴蝶豆 +2 收起 理由
zero99 + 2

查看全部评分

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

我不是使用这个 *sta 就没问题, 这又怎么解释呢? 好茫然啊!!
琦子 回答时间:2018-5-10 11:50:16
难道是你指针使用的有问题?那你这个指针指到哪里去了 或者你强行换一换这个变量类型 别用指针了试试
博天一浪 回答时间:2018-5-10 16:59:56
空指针错误

评分

参与人数 1蝴蝶豆 +2 收起 理由
zero99 + 2

查看全部评分

所属标签

相似问题

关于
我们是谁
投资者关系
意法半导体可持续发展举措
创新与技术
意法半导体官网
联系我们
联系ST分支机构
寻找销售人员和分销渠道
社区
媒体中心
活动与培训
隐私策略
隐私策略
Cookies管理
行使您的权利
官方最新发布
STM32Cube扩展软件包
意法半导体边缘AI套件
ST - 理想汽车豪华SUV案例
ST意法半导体智能家居案例
STM32 ARM Cortex 32位微控制器
关注我们
st-img 微信公众号
st-img 手机版