最近在工作中發現網絡通信收發文件部分,發送一次文件后,就再也不能發第二次了。本以為是協議的問題,后來用TOP發現CPU過高,才通過GDB看到了是一個清空Buffer類的代碼有BUG,計算無符號整形的操作溢出了。
具體跟蹤方法記錄一下。首先正常啟動程序,然后進行收發文件操作,觸發死循環。而后通過 top -H 查看哪個線程(其實是PID,redhat的線程是fork進程實現的)占用CPU過高,而后gdb -p [pid] attach 之,最后bt 打印堆棧。
具體跟蹤方法記錄一下。首先正常啟動程序,然后進行收發文件操作,觸發死循環。而后通過 top -H 查看哪個線程(其實是PID,redhat的線程是fork進程實現的)占用CPU過高,而后gdb -p [pid] attach 之,最后bt 打印堆棧。
posted on 2011-06-13 13:49 Meiosis 閱讀(560) 評論(0) 編輯 收藏 引用 所屬分類: Debug \ Reverse Engineering 、Work Experience 、Linux Generic