linux下程序假死

发布时间:2006-09-10 00:51:19来源:红联作者:coolentboy

前一段时间新开发的一个程序,总是会出现一些奇怪的停滞,也就是说程序长期运行就不再输出信息了。

因为是在调试阶段所以程序在很多地方都有用printf()输出的消息,以判断程序出现错误的位置,然后有诊断性的解决问题。

程序大致结构如下:信号处理函数a(),对信号处理函数得到的数据进行处理b().捕捉到的消息全部是在数据处理函数b()内的,因为程序是在rh9.0上开发,然后在裁减系统上跑而且目前程序都是在小系统内实测的,不然得不出实际效果;而且程序是处于长期运行,所以用gdb不太好不过该错误(刚开始这么认为得),所以就一直用printf()函数来得到一些错误。

[code] void a(...){

...

printf("signal catched\n");

...

}

void b(...){

...

printf("enter b()\n");

...

while(1){

...

printf("...");

c();

printf("data have received\n");

..

}

}[/code]

void b()函数内printf()很多就对了,每次程序都是在b()内某个printf()消息输出后,就停滞不动了。

刚开始认为是使用锁出现了问题,但是后来改过后改问题仍然出现。

最后将小系统使用得库文件等都使用rh9.0下得程序来跑,通过配置环境变量来做的,在程序停滞的时候进入gdb环境。

[code]gdb

>attach (no)

>thread apply no backtrace full

>bt(显示不出来需要的信息)[/code]

注:b() 采用线程来实现,当然了还有其它的很多不同模块的线程也在运行。

从线程栈可以看到:

当b()线程运行到printf()->vfprintf()时信号到达;进入信号处理函数a()->printf()->vfprintf()停滞。

从栈可以看出程序是因为printf()函数导致停滞的,查阅资料有说是和流控制有关,我想最大的可能就是和printf()的实现机制有关系。

不过最让我想不通的还是b()还有一次是死在malloc()内,但是我的a()处理函数根本没有使用malloc()函数。

linux进程假死的原因_linux下程序假死相关推荐

  1. Linux进程线程学习笔记:运行新程序

    Linux进程线程学习笔记:运行新程序 周银辉 在上一篇中我们说到,当启动一个新进程以后,新进程会复制父进程的大部份上下文并接着运行父进程中的代码,如果我们使新进程不运行原父进程的代码,转而运行另外一 ...

  2. 电脑死机原因、和预防电脑死机技巧!!

    1.电脑死机原因? 2.如何预防电脑死机? (1)先介绍电脑死机原因! 无法启动系统,画面"定格"无反应,鼠标.键盘无法输入,软件运行非正常中断等.尽管造成死机的原因是多方面的,但 ...

  3. linux 进程 崩溃被杀 原因查找

    目录 到底是什么信号 OOM 谁发的信号 systemtap audit 案例与总结 一个进程的异常终止,通常有两种情况,一种是crash,另一种是被kill掉了. crash是指程序出现了自己无法解 ...

  4. linux进程--死锁产生的原因及四个必要条件(六)

    产生死锁的原因主要是: 因为系统资源不足. 进程运行推进的顺序不合适. 资源分配不当等. 如果系统资源充足,进程的资源请求都能够得到满足,死锁出现的可能性就很低,否则就会因争夺有限的资源而陷入死锁.其 ...

  5. linux电子词典项目流程,毕业设计_linux下电子词典的设计与实现.doc

    毕业设计_linux下电子词典的设计与实现 毕业设计(论文) 题目:Linux下电子词典的设计与实现 学 生 姓 名 学 号 201022080223 班 级 通信102202H班 所属院(系) 电子 ...

  6. linux进程假死的原因_Linux系统死机的原因及解决办法

    系统出现死机,一般分为两种情况:一是硬件问题;二是软件问题. 一.硬件问题 可以考虑分析以下几点: 1.不要超频CPU,如果已经超频的先回复到原来的频率 虽然平时运行没有问题,但可能在高负载的使用中就 ...

  7. linux安装多个mysql数据库_linux下多个mysql5.7.19(tar.gz)安装图文教程

    初级第一次在Linux下安装MySQL-5.7.19版本教程请看上一篇,如果已经会安装了,那么请看这篇linux下安装多个mysql-5.7.19 环境:centos 6.5 1-下载 2-跳过登陆 ...

  8. linux 在本地创建svn服务器_linux下搭建svn服务器及创建项目

    一. 使用yum 安装SVN包 关于YUM 服务器的配置参考: Linux 搭建 YUM 服务器 http://blog.csdn.net/tianlesoftware/archive/2011/01 ...

  9. linux进程tss和ldt,x86体系下linux中的任务切换与TSS

    tss的作用举例:保存不同特权级别下任务所使用的寄存器,特别重要的是esp,因为比如中断后,涉及特权级切换时(一个任务切换),首先要切换栈,这个栈显然是内核栈,那么如何找到该栈的地址呢,这需要从tss ...

  10. Linux里下载mysql显示红色_Linux下安装mysql

    到mysql官网下载mysql编译好的二进制安装包,在下载页面Select Platform:选项选择linux-generic,然后把页面拉到底部,64位系统下载Linux - Generic (g ...

最新文章

  1. ubuntu笔记 - 安装和配置Sublime Text
  2. lda 吗 样本中心化 需要_PCA 与 LDA 分析
  3. yolov3 anchor 理解
  4. jquery替换onclick的方法
  5. Qt5.7+Opencv2.4.9人脸识别(四)模型训练
  6. python中get属性_python3中__get__,__getattr__,__getattribute__的区别
  7. TS高级类型内置工具类型
  8. WebSocket 详解 1
  9. 【渝粤教育】国家开放大学2018年春季 8612-22T传染病护理学 参考试题
  10. Python机器学习常用模块
  11. PCB叠层及阻抗控制关键因素
  12. 基于matlab的图像复原,MATLAB在图像复原中的应用
  13. Windows Server 2012 R2磁盘分区
  14. 《观沧海》课文练习题及答案
  15. 使用可道云在centos上搭建个人网盘(附带端口修改)
  16. 『TensorFlow』SSD源码学习_其五:TFR数据读取数据预处理
  17. SAP发票校验中支付条件中的基准日期缺省值的配置及控制逻辑测试
  18. 深度学习、机器学习、人工智能的区别
  19. stlink下载调试器使用说明(STM32采用stlink下载程序)
  20. 利用 tesseract 自动识别图片中的文字

热门文章

  1. 【Markdown 数学公式】markdown常用公式写法
  2. 流量卡之家:物联网僵尸网络和DDoS攻击:构建网络风险防火墙
  3. 智慧养殖系统方案云平台功能
  4. 微型计算机三部分基本组成,微型计算机的基本组成-电脑自学网
  5. matlabrobert锐化_图像锐化matlab算法
  6. python 吃cpu 显卡 内存_浅析 Pycharm 内存、cpu 占用率
  7. html首字母大写,CSS实现英文单词的首字母大写
  8. 制作u盘winpe启动盘_u盘启动盘制作工具 纯净+好用,原来不止是 微pe
  9. Android 图片压缩也即生成缩略图方法
  10. PDF编辑方法,如何裁剪PDF中的一页