Linux下调试死循环

Linux下调试死循环
  最近在工作中发现网络通信收发文件部分,发送一次文件后,就再也不能发第二次了。本以为是协议的问题,后来用TOP发现CPU过高,才通过GDB看到了是一个清空Buffer类的代码有BUG,计算无符号整形的操作溢出了。
  具体跟踪方法记录一下。首先正常启动程序,然后进行收发文件操作,触发死循环。而后通过 top -H 查看哪个线程(其实是PID,redhat的线程是fork进程实现的)占用CPU过高,而后gdb -p [pid] attach 之,最后bt 打印堆栈。

你可能感兴趣的:(Linux下调试死循环)