请问,长时间测试,程序跑飞什么原因引起的,如何定位
请问,长时间测试,程序跑飞一般是什么原因引起的,如何定位 我觉得长时间测试程序要程序做日志或者输出东西。要不然不好找到死在哪里 了。 用PCLINT检查下 dsew027 发表于 2015-2-3 10:53用PCLINT检查下
请问,这个工具,单片机程序,也能用吗 maimaige 发表于 2015-2-3 11:22
请问,这个工具,单片机程序,也能用吗
可以,C程序都可以,不过太严谨,要费些时间 用另外一个系统来监控,人也行 可以挂仿真器跑 如果能有仿真器支持。那就最好。否则只能用IO点灯来处理。 crash吗?还是内存泄露 串口输出日志啊 串口打印,每个函数打印一条看最后死在哪里 感觉不靠谱的地方 打印日志。
还有,仿真器不kop 的,仿真器的频率 和 真实系统 不一样,仿真时 不一定死机~ 输出日志,关键点的日志可以存flash或eeprom 串口打印信息吧。 使用最高级别非屏蔽定时中断,串口打印 PC 地址及 STACK 指针 加一个EEPROM存重要信息 本帖最后由 pen245760036 于 2015-2-4 10:30 编辑
{:sleepy:} 本帖最后由 pen245760036 于 2015-2-4 10:43 编辑
用定时器(进入中断的跑飞无效)当看门狗,定义一个全局变量,每进一个模块函数 就赋值对应值, 定时器超时溢出就写进EEPROM 事后读取eeprom表就行了,就知道在进入那个模块函数后跑飞的,排查下原因。 无序的就得做些防跑飞陷阱,这些涉及到底层汇编编程原理,多查些资料。http://www.docin.com/p-457585285.html 单步跟踪找问题 加一个EEPROM存重要信息 正如网友们所建议的,建议楼主加个跟踪代码,这样可以知道你的代码长期运行出错的地方。
串口输出打印日志这种方法会好一些 看看有没有内存泄露,或者计数器翻转问题? l36092 发表于 2015-2-6 12:14
看看有没有内存泄露,或者计数器翻转问题?
计数器翻转,是指的定时器的计数器? 侵入式调试的话用仿真器,不想影响正常运行的话一般用串口或者流水等之类的 串口打印不靠谱,我就试过,MCU都死了,根本打不出东西来 试试单步跟踪定位 soos 发表于 2015-2-6 19:52
串口打印不靠谱,我就试过,MCU都死了,根本打不出东西来
基本系统没有搞定前用仿真器,之后串口打印靠谱 log输出,打印进文件或串口 soos 发表于 2015-2-6 19:52
串口打印不靠谱,我就试过,MCU都死了,根本打不出东西来
看最后一条信息在哪打印的,或者有什么错误信息输出,主要是信息输出有没有异常处理代码 songjie 发表于 2015-2-4 08:50
感觉不靠谱的地方 打印日志。
还有,仿真器不kop 的,仿真器的频率 和 真实系统 不一样,仿真时 不一定死 ...
你好,是不是用仿真器仿真的时候,同一个delay函数,跑的结果也不一样,能设置成一样的吗 trace看出问题前是在哪儿。
页:
[1]