1. 适用范围
本文档面向SylixOS应用程序开发工程师和相关测试人员,协助工作人员调试应用开发或中间件移植中出现的应用程序崩溃问题。
2. 原理概述
SylixOS从base v1.9.9开始支持命令crashtrap,命令本质是在进程崩溃时将进程切换为STOP模式,此时可以通过ATTACH进行调试。
3. 测试流程
3.1 环境准备
这里使用x86虚拟机完成crashtrap命令的验证操作。准备base v1.9.9及以上版本的Debug模式的x86系统镜像,并使用此镜像启动虚拟机,查看crashtrap帮助信息,如图 3.1所示。
准备会引发崩溃的应用代码,这里使用除零操作产生算数异常。代码在开始时延时10s等待执行crashtrap命令,并在10s后执行function函数。function函数最终会执行除零操作产生异常,如程序清单 3.1所示。
#include <stdio.h>
#include "SylixOS.h"
int count;
void function (void)
{
int a = 3;
int b = 3;
for (count = 0; count <= 3; count++) {
/*
* 当count等于3时,触发算数异常
*/
printf("%d\n", a / (b - count));
sleep(1);
}
}
int main (int argc, char **argv)
{
/*
* 程序开始延时10s,等待执行crashtrap命令
*/
sleep(10);
printf("Start\n");
function(); /* function() 中触发异常 */
printf("end\n");
return (0);
}
3.2 crashtrap命令
上传此应用程序并执行,在执行后立即查看进程编号,并使用命令打开此进程的crashtrap功能,如图 3.2所示。
由于打开了crashtrap功能,因此程序崩溃后并没有退出,线程被切换到STOP模式,此时可以通过ATTACH进入调试,如图 3.3所示。
3.3 ATTACH调试
通过ATTACH进入已崩溃的应用程序,点击暂停后可以直观的看到程序崩溃位置,并查看各变量值以及内存信息,如图 3.4所示。