linux socket 程序 SIGPIPE 和GDB的问题
来源:互联网 发布:windows system是什么 编辑:程序博客网 时间:2024/05/14 12:25
在往一个已经reset 或者close的socket 写入数据的时候,会引发SIGPIPE 信号,默认是退出进程
当然这个可以在程序里面用 singal 或者sigaction 屏蔽,但是如果设置为 SIG_IGN 的话,在GDB 里面,会引起GDB结束进程。。
这里给出了怎么在GDB里面屏蔽这个
http://www.mcublog.com/blog/blog2007/hjb11117/archives/2007/25744.html
信号的处理
程序是和网络相关的,调试期间经常地收到SIGPIPE,导致gdb停下来。看了一下gdb info,解决方法很简单。用handle命令设置一下缺省signal的处理行为就可以了:
如果连提示信息都不想看见,就可以这样设置:
handle SIGPIPE nostop
就可以了。其他相关信号也可以类似处理。想了解目前的signal状态可以使用
handle SIGPIPE nostop noprintinfo signal
察看。
参考handle的用法 help handle
启动配置文件
GDB使用中比较麻烦的事情,就是每次启动,还要手动敲一把命令,特别是断点比较多的情况,这个特便影响,工作效率。查了一下gdb info,gdb支持自动读取一个启动脚本文件.gdbinit,所以经常输入的启动命令,就都可以写在gdb启动目录的.gdbinit里面。比如
GDB和bash类似,也支持source这个命令,执行另外一个脚本文件。所以可以修改一下.gdbinit:
.gdbinit:
file myapp
handle SIGPIPE nostop
break ss.c:100
break ss.c:200
run
这样修改的断点配置,只需要编辑gdb.break就可以了。再后来,偶而还是需要单独启动GDB,不想执行自动脚本,于是又改进了一下。首先把.gdbinit命名为gdb.init,然后定义一个shell alias:
.gdbinit:
file myapp
handle SIGPIPE nostop
source gdb.break
run
gdb.break:
break ss.c:100
break ss.c:200
$ alias .gdb=”gdb -x gdb.init”
这样如果需要使用自动脚本,就用.gdb命令,否则用gdb进入交互状态的gdb。这样配置以后可以一个简单命令就开始调试,整个效率就能提高不少。
注:转自http://blog.scaner.i.thu.cn/index.php/2006/04/15/gdb-tips-1/
注解
1alias命令
alias
顾名思义就是起别名的意思,在linux里,可以通过alias命令为常用命令设置快捷方式,命令格式如下: alias name='command' 例如:alias del='rm'
欲显示系统已有别名,直接使用 alias或alias -p
若需要设置的命令别名比较多,可以直接修改/etc/bashrc或~/.bashrc,将需要的别名写到里面即可,不同之处是/etc/bashrc设置的别名对于所有登录用户都起作用,而~/.bashrc只对目前用户起作用。
转载自:http://hi.baidu.com/yatusiter/blog/item/e03142a92c7eccf01e17a2bd.html
- linux socket 程序 SIGPIPE 和GDB的问题
- linux socket 程序 SIGPIPE 和GDB的问题
- iOS开发socket程序被SIGPIPE信号Terminate的问题
- iOS开发socket程序被SIGPIPE信号Terminate的问题
- 关于socket通信时SIGPIPE的问题
- socket中的SIGPIPE信号问题
- linux下关于socket程序的调试(gdb)
- linux管道、EPIPE 和 SIGPIPE 的关系
- android和ios sigpipe信号导致程序异常退出的问题
- 使用gdb调试网络程序时,收到SIGPIPE信号异常退出问题
- linux下网络程序遭遇SIGPIPE的解决(转)
- linux下网络程序遭遇SIGPIPE的解决(转)
- linux下网络程序遭遇SIGPIPE的解决(转)
- linux下网络程序遭遇SIGPIPE的解决(转)
- linux下网络程序遭遇SIGPIPE的解决
- ceph存储 Linux下程序问题的定位和gdb命令行参数大全
- socket编程问题-SIGPIPE信号处理
- socket编程问题-SIGPIPE信号处理
- eclipse 如何把java项目转成web项目
- Android widget 之RemoteView
- tcpdump eth2 -s 0 -w igmp.cap ulimit -c unlimited
- mt 15i 解锁后root 本人亲测成功
- 表空间数据文件迁移(一)
- linux socket 程序 SIGPIPE 和GDB的问题
- web导出Excel
- LPC11C14GPIO原理及应用
- Nop 中的Telerik控件中文化
- 收集的一些
- [MSSQL] Rules for Regular Identifiers
- Android学习:SeekBar实现音量调节
- 导入证书_WS应用_Server
- iframe 背景透明