现在的位置: 首页 > 综合 > 正文

GDB Signal处理

2013年12月03日 ⁄ 综合 ⁄ 共 499字 ⁄ 字号 评论关闭

signal

当被调试的进程进入running状态后,terminal由该进程控制,因此不会出现gdb提示符,这时如何和gdb交互呢(比如想添加一个断点)?必须停止该进程,使控制权回到gdb:

  • 如果设置有断点,可以触发断点
  • 向gdb发送signal。最简单的方法就是用intr(Ctrl-C)字符产生SIGINT,因为gdb对SIGINT的处理是停止进程,不把该signal传递给进程,可以用info handle来查看当前gdb对signals的处理情况,如:
    Signal        Stop      Print   Pass to program Description SIGHUP        Yes       Yes     Yes             Hangup SIGINT        Yes       Yes     No              Interrupt SIGQUIT       Yes       Yes     Yes             Quit 

    Stop列表示是否停止进程,Print表示是否打印该signal,Pass to program列表示是否把该signal传给调试的进程

当gdb收到一个signal而停止进程后,传递signal到进程的动作还没有发生,此时可以用handle命令修改对signal的处理方式,当继续执行进程使才会根据当前的设置决定是否把该signal传给进程。

抱歉!评论已关闭.