由于icebox捕获了SIGINT信号并作了终止进程处理,导致无法在gdb调试时使用ctrl + c中断附加断点。如果为了解决这个问题重新编译icebox可能有点小题大做,因此可以给它发个SIGTRAP信号让它断下来。

使用kill命令可以轻松干这事儿。kill -5可以指定向进程发送具体信号。不过得找到进程的ID,因此可以写个脚本来帮我们找到icebox的进程:

1
2
3
4
5
6
7
8
9
10
#!/usr/bin/python
import os
cmd = 'ps -ef | grep \'/usr/bin/icebox\'| grep -v grep | grep -w `whoami` | awk \'{printf "%s",$2 }\''
ret = os.popen(cmd).readlines()
print '\033[32mFound first GDB process, PID = %s\033[m' % (ret[0])
sigcmd = 'kill -5 %s' % (ret[0])
os.system(sigcmd)