linux下信号以及gdbt调试___memcpy_ssse3_back-程序员宅基地

int main(){
char *ptr=null;
memcpy(ptr,“nihao”,6)
return 0}
运行结果为 segmentation fault(core dumped)
为段错误,内存访问错误
gdb ./neicuncuowu
(gdb) r
Program received signal SIGSEGV,(程序接受到了一个信号) Segmentation fault.(内存段错误)
0x00007ffff7b64c95 in __memcpy_ssse3_back () from /lib64/libc.so.6
基本认识:
通知时间的发生–软中断–通知事件中断
信号有不同的种类:每个信号都对应了不同的事件
信号的生命周期:产生–>处理
kill -l查看当前系统所有信号62种信号(1-31)每个都有各自对应的事件(非可靠信号/非实时信号)
非可靠信号可能会丢失(肚子饿了发很多信号但是只吃了一次),值处理了一次其他信号丢失
(34-64)后继加的(可靠信号/实时信号)
可靠信号(发送几次信号就吃几次饭),法几次信号处理多少次
实时/非实时:是否会立即处理

  1. SIGHUP 2) SIGINT 3) SIGQUIT 4) SIGILL 5) SIGTRAP
  2. SIGABRT 7) SIGBUS 8) SIGFPE 9) SIGKILL 10) SIGUSR1
  3. SIGSEGV 12) SIGUSR2 13) SIGPIPE 14) SIGALRM 15) SIGTERM
  4. SIGSTKFLT 17) SIGCHLD 18) SIGCONT 19) SIGSTOP 20) SIGTSTP
  5. SIGTTIN 22) SIGTTOU 23) SIGURG 24) SIGXCPU 25) SIGXFSZ
  6. SIGVTALRM 27) SIGPROF 28) SIGWINCH 29) SIGIO 30) SIGPWR
  7. SIGSYS 34) SIGRTMIN 35) SIGRTMIN+1 36) SIGRTMIN+2 37) SIGRTMIN+3
  8. SIGRTMIN+4 39) SIGRTMIN+5 40) SIGRTMIN+6 41) SIGRTMIN+7 42) SIGRTMIN+8
  9. SIGRTMIN+9 44) SIGRTMIN+10 45) SIGRTMIN+11 46) SIGRTMIN+12 47) SIGRTMIN+13
  10. SIGRTMIN+14 49) SIGRTMIN+15 50) SIGRTMAX-14 51) SIGRTMAX-13 52) SIGRTMAX-12
  11. SIGRTMAX-11 54) SIGRTMAX-10 55) SIGRTMAX-9 56) SIGRTMAX-8 57) SIGRTMAX-7
  12. SIGRTMAX-6 59) SIGRTMAX-5 60) SIGRTMAX-4 61) SIGRTMAX-3 62) SIGRTMAX-2
  13. SIGRTMAX-1 64) SIGRTMAX
    信号的生命周期:产生–>注册–>注销–>处理 阻塞
    信号的产生:
    ctrl +c ctrl +| crtl +z
    $ ./eg
    nihaoshijie–
    nihaoshijie–
    ^C
    按下contl+c是硬件cpu捕捉到一个硬件电信号操纵系统把硬件产生的电信号解释成一个软件信号2号信号(终断)SIGINT发给前台进程(运行在终端上的进程./eg)
    contl+|退出信号3号信号(SIGQUIT)
    contrl+z停止信号********
    kill +pid 默认杀死的信号是SIGTERM终止
    kill -9 就是强杀信号(SIGKILL)
    软件: kill命令产生一个信号 kill -signo pid 命令 kill() raise() abort() alarm() 程序异常
    vim /usr/include/bits/signum.h
    看信号的作用
    /* Signals. /
    32 #define SIGHUP 1 /
    Hangup (POSIX). /
    33 #define SIGINT 2 /
    Interrupt (ANSI). /
    34 #define SIGQUIT 3 /
    Quit (POSIX). /
    35 #define SIGILL 4 /
    Illegal instruction (ANSI). */
    int main(){
    4 //int kill(pid_t pid,int sig);
    5 //给指定进程发送指定信号

    E> 6 kill(getpid(),11);//kill(getpid(),SIFSEGV)
    7 //发送11号信号
    8 while(1){
    9 printf(“nihaoa —\n”);
    10 sleep(1);
    11 }
    12 return 0;
    }
    运行结果:
    ./loop
    段错误(吐核)
    给进程发送一个11号信号
    //int raise(int sig);//给自己(调用进程/线程)发送一个信号不用指定ID
    10 raise(SIGQUIT);//3号信号
    11 while(1){
    12 printf(“nihaoa —\n”);
    13 sleep(1);
    14 }
    [chenyongjie@localhost signal]$ ./loop
    退出(吐核)
    // void abort(void),给一个进程发送一个SIGABRT信号给调用进程发
    13 abort();
    14 while(1){
    15 printf(“nihaoa —\n”);
    16 sleep(1);
    17 }
    18 return 0;
    头文件为stdlib
    ./loop
    已放弃(吐核)

#include <unistd.h>
unsigned int alarm(unsigned int seconds);

15 // seconds秒之后给调用进程发送SIGALRM信号,seconds为0取消定时器
16 // 返回值值返回上一个定时器剩余的时间或者为0(之前没有定时器为0)

int ret= alarm(3);
18 while(1){
19 printf(“nihaoa —[%d]\n”,ret);
20 sleep(1);
21 }
22 return 0;
l]$ ./loop
nihaoa —[0]
nihaoa —[0]
nihaoa —[0]
闹钟
三秒钟后收到定时器信号结束
int ret= alarm(3);
18 sleep(1);
19 ret=alarm(0);
20 while(1){
21 printf(“nihaoa —[%d]\n”,ret);
22 sleep(1);
23 }
24 return 0;
等于0则取消定时器
[chenyongjie@localhost signal]$ ./loop
nihaoa —[2]
睡了1秒剩余2秒,所以上一个定时器还剩下两秒时间才到
core dumped–核心转储文件–程序异常退出时候保存程序的运行信息–方便事后调试
core dumped --默认关闭–占磁盘资源,安全性考虑
如何设置打开
ulimit -a
查看coredump是否开启
ulimit -c 1024 设置核心转储文件大小

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/qq_43205670/article/details/89330909

智能推荐

SQL Server SSMS历史版本下载地址-程序员宅基地

文章浏览阅读135次。https://learn.microsoft.com/zh-cn/sql/ssms/release-notes-ssms?view=sql-server-ver16#previous-ssms-releases_sql server历史版本哪儿下

【狂神JAVA】MyBatis笔记_jdk1.7的mybatis-程序员宅基地

文章浏览阅读2.5k次。简介自学的【狂神JAVA】MyBatis分享自写源码和笔记,希望对大家有帮助本人配置jdk13.0.2 (jdk1.7以上均可)Maven 3.6.3MySQL 5.7.23 (mysql5.6以上均可)1. 配置官网文档: https://mybatis.org/mybatis-3/zh/getting-started.htmlpom.xml<?xml version="1.0" encoding="UTF-8"?><project xmlns="http://_jdk1.7的mybatis

学习笔记---分布式调度之xxlJob调度中心的启动源码解析_xxl 调度失败:执行器地址为空-程序员宅基地

文章浏览阅读913次。调度中心的代码启动源码是从:XxlJobAdminConfig 入口;直接进入: xxlJobScheduler.init();第一个: initI18n() 处理国际化;第二个:JobRegistryMonitorHelper.getInstance().start(); 创建启动后台线程来维护在线的执行器组下的机器列表,从上篇学习笔记—分布式调度之xxlJob执行器的启动源码解析可以..._xxl 调度失败:执行器地址为空

RS485/RS232串口通信实现源码_485代码-程序员宅基地

文章浏览阅读1.3w次,点赞3次,收藏72次。之前贴出了代码,但是源码已经找不到了;鉴于很多同学私信想要参考,找时间重新写了一个工程一、参考代码1.不方便下载的同学可以参考贴出来的源代码链接:RS485二、基本知识1.RS485通信讲解:读30001、30002两个寄存器,假设从机地址为1上位机(主机)发送下行报文:01 03 00 03 00 02 34 0B从机地址功能码寄存器起始地址读取寄存器个数CRC校验010300 0300 0285 ca010300 0400 0285 ca上_485代码

李开复揭密微软成功之道 寄语中国软件业(4)_在微软许多人都像我一样主动从事发现人才、跟踪人才和吸引人才的工作....-程序员宅基地

文章浏览阅读1k次。http://www.sina.com.cn 2005年04月07日 11:19 新浪科技  文/李开复  人才:微软的立业之本  微软公司把重视人才的管理理念视为公司的核心财富。在信息时代里,人才的价值尤为重要。在工业时代里,一个优秀技工和一个普通技工的效率差异可能是30%,但在信息时代里,一个高级程序员和一个普通程序员的效率差异可能高达10倍以上。 ad1= "打造校_在微软许多人都像我一样主动从事发现人才、跟踪人才和吸引人才的工作....

python量化交易pdf书籍微盘,python量化交易编程自学_python 量化交易 pdf 百度网盘-程序员宅基地

文章浏览阅读836次,点赞21次,收藏19次。大家好,小编为大家解答python量化交易教程电子书的问题。很多人还不知道python量化交易pdf书籍微盘,现在让我们一起来看看吧!_python 量化交易 pdf 百度网盘

随便推点

数据结构实验5《基于哈夫曼树的数据压缩》_基于哈夫曼树的数据压缩算法c语言-程序员宅基地

文章浏览阅读2k次,点赞4次,收藏25次。(visual studio 2019可运行)输入及输出要求见《数据结构C语言(第二版)》严蔚敏版【本文仅用于啥都看不懂还想交作业选手】#include<iostream>#include<map>#include<string>#include<stdio.h>#include<memory.h>using namespace std;typedef struct{ char c; int weight; in_基于哈夫曼树的数据压缩算法c语言

Teams Bot App 代码解析_adaptivecards.declare<datainterface>(rawlearncard)-程序员宅基地

文章浏览阅读1w次。Teams Bot App 代码解析_adaptivecards.declare(rawlearncard).render(this.likecountobj)

Unity UGUI(三)RawImage(原始图像)_unity原始图像-程序员宅基地

文章浏览阅读2.5k次。RawImage(Script)Texture 纹理 要显示的图片,注意:图片类型可以是任何类型 Color 颜色 图片的主颜色 Material 材质 渲染材质 Raycast Target 光线投射目标 是否可接收射线碰撞事件检测 UV Rect UV矩形 显示效果:X、Y属性用于控制纹理左右..._unity原始图像

SpringBoot与分布式事务组件-程序员宅基地

文章浏览阅读2k次。随着互联网应用的复杂性增加,越来越多的公司选择使用微服务架构模式进行应用开发,将单体应用拆分成多个小型服务,每个服务部署在不同的服务器上。同时,为了提升系统的可用性、容错性和可扩展性,需要考虑分布式事务问题。本文将介绍 Spring Boot 在分布式事务中的一些实现方案,并给出相关原理。

小程序基础入门(黑马学习笔记)_黑马微信小程序笔记-程序员宅基地

文章浏览阅读2.8k次,点赞12次,收藏90次。权当学习笔记吧_黑马微信小程序笔记

SpringBoot的旅游网站的设计与实现 - 源码免费(私信领取)

采用Spring Boot框架进行后端开发,结合前端技术(如Vue.js、React等)进行页面设计,数据库采用MySQL进行数据存储,确保系统的稳定性和性能。本项目旨在设计并实现一个基于Spring Boot的旅游网站,为用户提供便捷的旅游信息查询、预订服务,以及旅游资讯分享功能,提升用户旅游体验。通过市场调研和用户需求分析,了解用户对旅游网站的需求和偏好,明确系统的功能和特点,确保系统能够满足用户的旅游需求。进行全面的系统测试,包括功能测试、性能测试、安全性测试和用户体验测试,确保系统的质量和可靠性。

推荐文章

热门文章

相关标签