嵌入式技术论坛
直播中

李杰

7年用户 1326经验值
私信 关注
[问答]

启动FINSH_USING_HISTORY会出现data abort是何原因?

不启动 FINSH_USING_HISTORY 程序运行正常,msh命令都能得到反馈,结果也正确。
当启动FINSH_USING_HISTORY时,第一个命令类似free ps 字符小于5个的命令正常工作,当命令字符大于5个list_sem 等,或者直接按方向键 (上,下)就会出现data abort。
经过断点分析,当程序运行到 shell.c line 489行执行memcpy时,出现data abort错误,

if (shell->history_count == 0 || memcmp(&shell->cmd_history[shell->history_count - 1], shell->line, FINSH_CMD_SIZE))
{
    shell->current_history = shell->history_count;
    memset(&shell->cmd_history[shell->history_count][0], 0, FINSH_CMD_SIZE);
    memcpy(&shell->cmd_history[shell->history_count][0], shell->line, shell->line_position);
    /* increase count and set current history position */
    shell->history_count ++;
}
在执行memcpy之前,观察到所有的参数均正常。
2.jpg
3.jpg


回帖(2)

李鑫

2023-4-17 18:00:16
我也发现是这样的,MSH下只要按方向键,就会死。
举报

刘桂英

2023-4-17 18:00:22
用的啥时候的代码哦,咋还是memset.更新代码再看看
举报

更多回帖

发帖
×
20
完善资料,
赚取积分