GDB信号的处理和启动配置文件

    技术2022-05-11  55

    这两天都在改程序,和GDB频繁的打交道,有些心得,记录下来

    信号的处理程序是和网络相关的,调试期间经常地收到SIGPIPE,导致gdb停下来。看了一下gdb info,解决方法很简单。用handle命令设置一下缺省signal的处理行为就可以了:  handle SIGPIPE nostop如果连提示信息都不想看见,就可以这样设置:  handle SIGPIPE nostop noprint就可以了。其他相关信号也可以类似处理。想了解目前的signal状态可以使用info signal察看。

    启动配置文件GDB使用中比较麻烦的事情,就是每次启动,还要手动敲一把命令,特别是断点比较多的情况,这个特便影响,工作效率。查了一下gdb info,gdb支持自动读取一个启动脚本文件.gdbinit,所以经常输入的启动命令,就都可以写在gdb启动目录的.gdbinit里面。比如.gdbinit:  file myapp  handle SIGPIPE nostop  break ss.c:100  break ss.c:200  runGDB和bash类似,也支持source这个命令,执行另外一个脚本文件。所以可以修改一下.gdbinit:.gdbinit:  file myapp  handle SIGPIPE nostop  source gdb.break  rungdb.break:  break ss.c:100  break ss.c:200这样修改的断点配置,只需要编辑gdb.break就可以了。再后来,偶而还是需要单独启动GDB,不想执行自动脚本,于是又改进了一下。首先把.gdbinit命名为gdb.init,然后定义一个shell alias:  $ alias .gdb=”gdb -x gdb.init”这样如果需要使用自动脚本,就用.gdb命令,否则用gdb进入交互状态的gdb。这样配置以后可以一个简单命令就开始调试,整个效率就能提高不少。

     注:转载自http://blog.scaner.i.thu.cn/index.php/2006/04/15/gdb-tips-1/ 


    最新回复(0)