Chinaunix首页 | 论坛 | 博客
  • 博客访问: 270783
  • 博文数量: 84
  • 博客积分: 3186
  • 博客等级: 中校
  • 技术积分: 852
  • 用 户 组: 普通用户
  • 注册时间: 2009-10-15 15:46
文章分类

全部博文(84)

文章存档

2015年(1)

2014年(12)

2011年(29)

2010年(42)

分类: LINUX

2010-01-25 23:32:36

    今天看了一遍关于linux 下应用程序fault handler的视频教程,主要内容是如何写一个应用程序信号处理程序。涉及信号安全和线程安全调用。
    具体的做法是:
    1. 注册信号处理函数,定义捕获哪些信号。
    2. 信号处理函数中,打印 siginfo_t 和 context信息。
    3. 利用glibc提供的backtrace函数,打印backtrace。
    在实现第3点时,特别注意backtrace_symbols()等函数,尤其在发生段错误时,用此函数打印backtrace可能不正确,因为需要分配内存,而出错时整个内存调用链都不可靠了,有可能引发更严重的错误。需要调用backtrace_symbols_fd()来实现。
    解决方案是:
    单起一个进程或者线程,用于收集信号处理函数传递过来的消息。
  
文件: libcrash-100tar.bz2
大小: 10KB
下载: 下载
 
阅读(1508) | 评论(0) | 转发(0) |
0

上一篇:dhcp

下一篇:网络媒体服务器

给主人留下些什么吧!~~