崩溃处理设置:CrashHandlerSetup

1、原理

在堆中为信号处理函数分配一块区域,作为该函数的栈使用,当系统默认的栈空间用尽时,调用信号处理函数使用的栈是在堆中分配的空间,而不是系统默认的栈中,所以它仍旧可以继续工作,执行崩溃处理程序。

崩溃处理使用的LSM(Linux security module)Linux安全模块中yama部分,(函数:prctl(PR_SET_PTRACER…)。Yama主要是对Ptrace函数调用进行访问控制。Ptrace是一个系统调用,它提供了一种方法来让‘父’进程可以观察和控制其它进程的执行,检查和改变其核心映像以及寄存器。 主要用来实现断点调试和系统调用跟踪。利用ptrace函数,不仅可以劫持另一个进程的调用,修改系统函数调用和改变返回值,而且可以向另一个函数注入代码,修改eip,进入自己的逻辑。这个函数广泛用于调试和信号跟踪工具。所以说,对ptrace函数进行访问控制还是很有必要的。
参考博客:https://www.cnblogs.com/0xJDchen/p/6033167.html

2、注册信号处理相关结构体和函数
stack_t ss;
struct sigaction sa;
sigaltstack(&ss, NULL);
sigemptyset(&sa.sa_mask)
sigaction

参考博客:https://my.oschina.net/manmao/blog/692979

3、QtCreator中的源码分析

因为该功能只

【Qt】通过QtCreator源码学习Qt(三):linux平台的信号、程序崩溃处理相关推荐

  1. 【Qt】通过QtCreator源码学习Qt(一):pro文件

    1.学习目的 学习pro文件的语法规则,这在跨平台项目中会经常用到.和条件编译相似,在pro中可以根据平台选择不同的编译模块.文件,还可以向源码中传递变量等. 2.学习方法 通过学习QtCreator ...

  2. 【Qt】通过QtCreator源码学习Qt(十二):Q_D和Q_Q指针(简称“d指针”)详解

    1.Q_D和Q_Q指针(简称"d指针")简介 参考博客: https://www.devbean.net/2016/11/qt-creator-source-study-07/ h ...

  3. 【Qt】通过QtCreator源码学习Qt(五):QLoggingCategory管理、分类、过滤打印信息

    1.QLoggingCategory简介 在QtCreator源码中新学到一个类QLoggingCategory. QLoggingCategory可以控制打印输出类别和区域.方便在调试时,过滤掉不关 ...

  4. 【Qt】通过QtCreator源码学习Qt(二):跨平台编程

    1.Qt对当前平台的判断 在qsystemdetection.h中根据宏定义来判断当前的操作系统,常用的操作系统如下: Q_OS_WIN.Q_OS_LINUX.Q_OS_MAC.Q_OS_UNIX q ...

  5. 【Qt】通过QtCreator源码学习Qt(十一):Utils::Icon,根据不同主题、不同状态变换图标

    1.简介 在QtCreator中Utils::Icon封装的图标可以根据主题变换,还可以设置不同状态下的图标的颜色.不同状态下的颜色变换,由QIcon::addPixmap函数实现: void QIc ...

  6. 【Qt】通过QtCreator源码学习Qt(九):容器算法总结

    一.简介 本节总结QtCreator中封装的容器算法接口,源码文件的路径src/libs/utils/algorithm.h. 算法接口包括:判断.查找.删除.统计.排序.转换.拆分.过滤 二.算法源 ...

  7. 【Qt】通过QtCreator源码学习Qt(四):插件管理PluginManager

    1.简介 QtCreator使用插件架构,方便扩展.它的核心是插件管理,主类是PluginManager. 下面是翻译src\libs\extensionsystem\pluginmanager.cp ...

  8. 【Qt】通过QtCreator源码学习Qt(七):插件管理类简介

    一.名字空间:ExtensionSystem ExtensionSystem命名空间提供了属于核心插件系统的类. ExtensionSystem包含插件管理器及其支持类,以及必须由插件提供者实现的IP ...

  9. 【Qt】通过QtCreator源码学习Qt(十):多国语言支持

    1.获取系统支持的语言 QStringList uiLanguages;uiLanguages = QLocale::system().uiLanguages(); 2.从设置中获取想要显示的语言,尝 ...

最新文章

  1. JQuery轻量级网页编辑器 选中即可编辑
  2. PAT甲级1137 Final Grading:[C++题解]结构体、排序、哈希表、结构体构造函数、结构体内写函数
  3. mysql blob取值_MySQL 数据类型:
  4. PHP5与MySQL数据库操作
  5. PHP中获取星期的几种方法
  6. Flash在浏览器里调试获取trace
  7. Spring事务管理2----编程式事务管理
  8. 百度谷歌2013年母亲节 赏析中文搜索引擎庆祝涂鸦
  9. 一步一步学习hadoop(九)
  10. 用Tensorflow求逆矩阵
  11. idea 格式化代码怎么才能不格式化代码注释?
  12. 关于BPSK、QPSK的一些理解,以及MATLAB实现
  13. 古体字与简体字对照表_王力_简体字与繁体字对照表
  14. js之金额大小写转换工具类(测试OK)
  15. 数字ic前端设计工程师是做什么的?就业前景如何?
  16. R语言实现随机森林代码
  17. 快速删除node_modules文件夹:rimraf node_modules
  18. 教你一招更改视频竖版与横版的技巧
  19. Xshell7下载、安装、连接linux系统教程(官网)
  20. 【 已解决 】iPhone 越狱后用爱思助手刷机出现 NORdata,无法刷机

热门文章

  1. c++ 判断文件夹是否存在,不存在则创建(可建多级目录)
  2. php yii orm,Yii中的sql查询的位置(或任何支持ORM的框架)?
  3. 根据keyName(如:result.data.name),无限深度遍历获取keyValue
  4. 在Ubuntu 14.04 64bit上安装epub阅读器Sigil 0.8.2
  5. LTE PUCCH F2 TX/RX汇总
  6. C语言中字符型在计算机中的存储
  7. jquery 1.7.2源码解析(二)构造jquery对象
  8. 漫画:禅道程序员的一天
  9. 初识java类的接口实现
  10. phonegap+emberjs+python手机店发展,html5实现本地车类别~