首页
学习
活动
专区
圈层
工具
发布

Component之EDR

EDR,Error Detection and Reporting,Vx6新加的一种调试机制,可以监测、记录系统错误

包含这个组件后,VxWorks就会在内存的最高位置分配一块区域,用于循环记录一些系统日志。而这块区域在系统热重启时,并不会清零。记录的这些日志,可以分为多种事件:内核、中断、进程、等等;还可以分为不同的严重程度:致命或警告等

具体到每条日志,包含了时间、事件类型和严重程度、OS版本、任务信息、进程信息、日志的创建位置等等。如果系统还包含其它一些相应组件,日志里还会包含更多的信息

  • INCLUDE_EXC_SHOW - 异常信息
  • INCLUDE_TASK_SHOW - 寄存器信息
  • INCLUDE_DEBUG - 错误地址附件的汇编指令
  • INCLUDE_DEBUG - 调用栈的信息

要想查看这些日志,不建议直接查看EDR的地址,而是使用函数edrShow()

其它几个函数不太常用,有兴趣可以试试。edrClear()用于清除这些日志,否则当存储区域满了以后,新日志自动覆盖最老的日志

使用者还可以在EDR中添加一些钩子函数,当EDR生成日志会自动调用它们

使用者也可以手动生成日志

写个例子看看效果

使用edrShow()可以看到EDR_USER_WARNING_INJECT()插入的日志,以及任务的函数调用栈

这正是:

新型调试EDR,系统日志开外挂。

多种记录自动加,系统重启也不怕。

下一篇
举报
领券