当前位置:  技术问答>linux和unix

郁闷!Linux下多线程的bug定位

    来源: 互联网  发布时间:2015-05-29

    本文导语:  我刚学Linux编程,调试一个网络服务程序。大批量服务请求时,程序异常退出。可用的错误定位方法只有log文件。对多线程来说,每一个未完的线程,都可能出错,根本不能定位。我搞了3天,没调出来,郁闷! 请教...

我刚学Linux编程,调试一个网络服务程序。大批量服务请求时,程序异常退出。可用的错误定位方法只有log文件。对多线程来说,每一个未完的线程,都可能出错,根本不能定位。我搞了3天,没调出来,郁闷!
请教:有无类似VC下查调用堆栈,或由map文件定位出错函数的方法,定位错误。请各位大哥多指点,各抒己见。

言者有分。不够再加。

|
编译时加入-g调试选项,去掉-Ox选项
使用gdb运行,如果中断退出,使用bt命令查看调用堆栈,如果不是可以
通过thr n (n表示线程号,用 info thr查看)切换,然后bt看堆栈
以上方法在kernel 2.6+gdb 6中有问题

|
检查一切
memcpy, strcpy, strcat sprintf 动态数组下标。
这种问题多半世内存访问错误或者缓冲区溢出覆盖堆栈造成的。
调试方法:
gdb 调试程序或者gdb调试core文件

|
没有core文件吗?用gdb看一下就可以知道在哪里中断的了

|
errno在linux好像是多线程安全的,无需自己写

|
最本的办法,就是各个线程都写各自的文件,不停的血,把运行中变量的变化都写上,赫赫。。。还挺管用。。。

|
我也是才开始学习Linux编程,你可以在响应连接请求的地方用gdb设一个断点看一下,可能是堆栈溢出。
一点建议,大家努力

|
不可能的八,有log文件已经很幸福了阿


不过要保证你的产生log文件的函数是线程安全的

|
网络服务用线程作???
一个很常见的问题是没有把pthread给detach掉~~~
据我所知,一般网络程序都用进程作的,线程光一个同步就搞死你~~

|
你应该为每一个线程都定义单独的errorno。
用gdb调试。

|
如果是内存的问题,相对好办一点,用工具分析,实在不行自己写个pool监视---不过还是工具的好

|
线程同步问题最麻烦的说


以前做异步IO作服务器的时候真是心力憔悴阿  我是看log看出来得

|
gz

    
 
 

您可能感兴趣的文章:

  • Windows和Linux下C++类成员方法作为线程函数方法介绍
  • 请问Linux核心支持多线程吗?开发库有线程库吗?线程好用吗?(稳定?)
  • Linux下GCC内置原子操作函数(多线程资源访问)介绍
  • 求个linux多线程编程的例子,要有线程池的 通用些更好
  • 请问Linux下线程开销为什么这么大?一个线程要占用近10M内存
  • Linux多线程时一些线程分不到时间片
  • 说说windows线程和linux线程的区别?
  • linux 下多线程 每个线程能否使用alarm来处理,信号是否会乱呢?
  • linux下,如何在多线程中每个线程设置一个定时器,在线等,急。。。谢谢
  • 在创建linux线程时为什么会多一个线程?
  • linux如何主动将线程放入到线程调度队列中重新排队?
  • 在linux RH73下为什么单进程只能开1021个线程线程.
  • Linux下如何让主线程挂起一个指定的时间段而子线程继续运行?谢谢
  • LINUX下有没有线程概念,和WIN下线程概念有什么不同,谢谢.
  • linux线程编程问题
  • linux线程最大数,奇怪,怎么只有300?而且线程是用完就没了,不是同时300啊!
  • 跪求:linux下pthread 双线程计算和单线程的运行时间完全相同是为什么?
  • linux线程与进程的问题
  • linux 下子线程不能执行的问题?
  • linux多线程编程的问题
  • linux多线程编程
  • 关于Linux下光标定位的问题!!!
  • 关于在linux gdb调试出现的段错误 无法具体定位
  • ?linux输出重定位
  •  
    本站(WWW.)旨在分享和传播互联网科技相关的资讯和技术,将尽最大努力为读者提供更好的信息聚合和浏览方式。
    本站(WWW.)站内文章除注明原创外,均为转载、整理或搜集自网络。欢迎任何形式的转载,转载请注明出处。












  • 相关文章推荐
  • 什么网站可以看到Linux曾经出现过的所有BUG?
  • Red Hat Linux8.0里的bug
  • 磕头以求:linux下unzip命令的BUG解决!
  • 是不是Redhat Linux 的BUG?
  • Red Hat Linux 系统网络配置BUG解惑
  • 这是linux的bug吗?
  • 一道笔试题:linux下找bug
  • 告诉大家一个经验,RedHat Linux 8.0必须装在内存大于64MB的机器上,否则安装会出错的,这是个安装BUG
  • 这难道是linux的bug吗??求高手指点!
  • Linux下的VLC播放器是否有缓冲后无法继续播放的BUG?
  • 一个关于inet_ntoa函数在printf中的奇怪现象(不知算不算linux的bug:-)
  • 帮忙看下linux c下获取系统时间出现的bug
  • 挑战linux-- 打败Linux系统中的Bug
  • linux下的rename命令的bug
  • linux c/c++ IP字符串转换成可比较大小的数字
  • 在win分区上安装linux和独立分区安装linux有什么区别?可以同时安装吗?(两个linux系统)
  • linux哪个版本好?linux操作系统版本详细介绍及选择方案推荐
  • 在虚拟机上安装的linux上,能像真的linux系统一样开发linux程序么?
  • secureCRT下Linux终端汉字乱码解决方法
  • 我重装window后,把linux的引导区覆盖了,进不了linux怎么办?急啊,望热心的人帮助 (现在有linux的盘)
  • Linux c字符串中不可打印字符转换成16进制
  • 安装vmware软件,不用再安装linux系统,就可以模拟linux系统了,然后可以在其上学习一下LINUX下的基本操作 了?
  • Linux常用命令介绍:更改所属用户群组或档案属性
  • 红旗Linux主机可以通过127.0.0.1访问,但如何是连网的Win2000机器通过Linux的IP去访问Linux
  • linux命令大全详细分类介绍及常用linux命令文档手册下载
  • 我重装window后,把linux的引导区覆盖了,进不了linux怎么办?急啊,望热心的人帮助 (现在没有linux的盘,只有DOS启动盘)
  • Linux Kernel 'sctp_v6_xmit()'函数信息泄露漏洞
  • 如何让win2000和linux共存。我装好WIN2000,再装LINUX7.0,但LILO只能找到LINUX,不能引导WIN2000
  • linux c下利用srand和rand函数生成随机字符串
  • 在windows中的VMware装了个linux,主板有两个串口,能做windows和linux的串口通信测试么,怎么测试这两个串口在linux是有效
  • Linux c++虚函数(virtual function)简单用法示例代码


  • 站内导航:


    特别声明:169IT网站部分信息来自互联网,如果侵犯您的权利,请及时告知,本站将立即删除!

    ©2012-2021,,E-mail:www_#163.com(请将#改为@)

    浙ICP备11055608号-3