近期接触了Linux平台的测试,遇到了软件发生异常,从而接触到了 Linux平台下的Signal——信号,用来通知进程发生了异步事件。程序员
做为测试,免不了须要初步判断一下是不是正在的异常,所以学习了一下Signal微信
NO异步
1svg
信号事件的发生有两个来源:
函数
硬件来源(好比咱们按下了键盘或者其它硬件故障);学习
软件来源,最经常使用发送信号的系统函数是kill, raise, alarm和setitimer以及sigqueue函数,软件来源还包括一些非法运算等操做。测试
按发出信号的缘由简单分类,以下:flex
(1) 与进程终止相关的信号。spa
当进程退出,或者子进程终止时,发出这类信号。.net
(2) 与进程例外事件相关的信号。
如进程越界,或企图写一个只读的内存区域(如程序正文区),或执行一个特权指令及其余各类硬件错误。
(3) 与在系统调用期间遇到不可恢复条件相关的信号。
如执行系统调用exec时,原有资源已经释放,而目前系统资源又已经耗尽。
(4) 与执行系统调用时遇到非预测错误条件相关的信号。
如执行一个并不存在的系统调用。
(5) 在用户态下的进程发出的信号。
如进程调用系统调用kill向其余进程发送信号。
(6) 与终端交互相关的信号。
如用户关闭一个终端,或按下break键等状况。
(7) 跟踪进程执行的信号。
NO
2
Linux支持的信号列表以下(不少信号是与机器的体系结构相关的)
信号值 默认处理动做 发出信号的缘由
SIGHUP 1 A 终端挂起或者控制进程终止
SIGINT 2 A 键盘中断(如break键被按下)
SIGQUIT 3 C 键盘的退出键被按下
SIGILL 4 C 非法指令
SIGABRT 6 C 由abort(3)发出的退出指令
SIGFPE 8 C 浮点异常
SIGKILL 9 AEF Kill信号
SIGSEGV 11 C 无效的内存引用
SIGPIPE 13 A 管道破裂:写一个没有读端口的管道
SIGALRM 14 A 由alarm(2)发出的信号
SIGTERM 15 A 终止信号
处理动做一项中的字母含义以下
A 缺省的动做是终止进程
C 缺省的动做是终止进程并进行内核映像转储(dump core),内核映像转储是指将进程数据在内存的映像和进程在内核结构中的部份内容以必定格式转储到文件系统,而且进程退出执行,这样作的好处是为程序员提供了方便,使得他们能够获得进程当时执行时的数据值,容许他们肯定转储的缘由,而且能够调试他们的程序。
E 信号不能被捕获
F 信号不能被忽略
了解了以上信息后,再来看软件生成异常的log文件,其余的信息能够暂时不关注,将log信息中的Signal字段找出来,解读后面的数值
未了解以前:
跟开发了解了软件在出现异常时会写log,所以实时关注log的状况,生成log后就给开发提交bug
了解以后:
在生成的log中,不少的信号都是因一些操做产生的,如
1和15,在注销系统后就会产生;
9,测试的操做中常常会有kill进程的操做,log中的这些信号能够直接忽略
11是常常出现且须要重点关注的信号,遇到这个数字千万要放过
6和14,遇到这个信号也千万不要忽略,须要找开发进行分析讨论的哟,它多是问题,固然,也可能不是问题
其余的信号,目前位置没有遇到过
以上简单分享了Linux下的Signal的含义,以及一些经常使用的信号值,后续还会继续有分享哟
本文分享自微信公众号 - 搜狗测试(SogouQA)。
若有侵权,请联系 support@oschina.cn 删除。
本文参与“OSC源创计划”,欢迎正在阅读的你也加入,一块儿分享。