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

本文详细介绍了在Linux平台上,如何使用Qt Creator进行崩溃处理的设置,包括崩溃处理的原理,涉及Linux安全模块Yama的Ptrace控制,以及如何注册信号处理结构体和函数,并分析了QtCreator的相关源码。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

崩溃处理设置: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

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

艺高机器人编程

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值