青青草原综合久久大伊人导航_色综合久久天天综合_日日噜噜夜夜狠狠久久丁香五月_热久久这里只有精品

elva

Linux下,多線程程序死循環(huán)問題調(diào)試

當你的軟件在某個時刻停止服務(wù),CPU占用達到100%+,這種問題一個可能的原因是產(chǎn)生了死循環(huán),假設(shè)程序某處存在潛在的死循環(huán),并在某種條件下會引發(fā),本文以一個示例來定位出現(xiàn)死循環(huán)的位置。
當程序某處存在死循環(huán),通常定位問題及縮小范圍的方法是,在可疑的代碼處加log,或者注釋掉可疑代碼,這對于容易重現(xiàn)問題的程序來說還好,但對于“偶爾”才會產(chǎn)生問題程序卻很難調(diào)試,因為我們很難重現(xiàn)程序故障。本文所述的調(diào)試過程正是在這種情況下,假設(shè)問題已經(jīng)出現(xiàn),我們要求環(huán)境保護現(xiàn)場,即出問題的程序還在運行中。

1.我們首先要知道是哪個線程出了問題:
首先查一下出問題進程的pid,例如
ovtsvn@ovtsvn:~/MASS4/src/icdn/src$ ps -ef | grep icdn
ovtsvn   
11065     1 50 11:57 ?        00:00:07 ./icdn
ovtsvn   
11076 10971  0 11:57 pts/2    00:00:00 grep icdn
ovtsvn@ovtsvn:
~/MASS4/src/icdn/src$ 
然后top命令查看線程信息:
top -H -p 11065

  PID USER      PR  NI  VIRT  RES  SHR S 
%CPU %MEM    TIME+  COMMAND                                                                
11073 ovtsvn    25   0  325m 3980 2236 R  100  0.4   1:40.84 icdn                                                                   
11065 ovtsvn    18   0  325m 3980 2236 S    0  0.4   0:00.01 icdn                                                                   
11066 ovtsvn    18   0  325m 3980 2236 S    0  0.4   0:00.00 icdn                                                                   
11067 ovtsvn    15   0  325m 3980 2236 S    0  0.4   0:00.00 icdn                                                                   
11068 ovtsvn    15   0  325m 3980 2236 S    0  0.4   0:00.00 icdn                                                                   
11069 ovtsvn    18   0  325m 3980 2236 S    0  0.4   0:00.00 icdn                                                                   
11070 ovtsvn    18   0  325m 3980 2236 S    0  0.4   0:00.00 icdn                                                                   
11071 ovtsvn    22   0  325m 3980 2236 S    0  0.4   0:00.00 icdn                                                                   
11072 ovtsvn    15   0  325m 3980 2236 R    0  0.4   0:00.00 icdn
從上面可以看出,出問題線程PID為11073

2.接下來,我們用gdb來attach目標進程
執(zhí)行: gdb icdn 11065
在gdb中,列出線程狀態(tài):
(gdb) info threads
  
9 Thread 47056948181264 (LWP 11066)  0x00002acc4a3dec91 in nanosleep () from /lib/libc.so.6
  
8 Thread 47056956573968 (LWP 11067)  0x00002acc4a406fc2 in select () from /lib/libc.so.6
  
7 Thread 47056964966672 (LWP 11068)  0x00002acc4a3dec91 in nanosleep () from /lib/libc.so.6
  
6 Thread 47056973359376 (LWP 11069)  0x00002acc4a3dec91 in nanosleep () from /lib/libc.so.6
  
5 Thread 47056981752080 (LWP 11070)  0x00002acc4a3dec91 in nanosleep () from /lib/libc.so.6
  
4 Thread 47056990144784 (LWP 11071)  0x00002acc4a40e63c in recvfrom () from /lib/libc.so.6
  
3 Thread 47057194060048 (LWP 11072)  0x00002acc4a406fc2 in select () from /lib/libc.so.6
  
2 Thread 47057226893584 (LWP 11073)  CSendFile::SendFile (this=0x2acc5d4aff40, pathname=@0x2acc5d4afee0)
    at ..
/src/csendfile.cpp:101
  
1 Thread 47056939784832 (LWP 11065)  0x00002acc4a3dec91 in nanosleep () from /lib/libc.so.6
(gdb) 

gdb已經(jīng)列出了各線程正在執(zhí)行的函數(shù),我們需要更多信息,記住11073對應(yīng)的行首標號,這是gdb為線程分配的id,這里為2,然后執(zhí)行切換:
(gdb) thread 2
[Switching to thread 
2 (Thread 47057226893584 (LWP 11073))]#0  CSendFile::SendFile (this=0x2acc5d4aff40, pathname=@0x2acc5d4afee0)
    at ..
/src/csendfile.cpp:101
101             while(1)
(gdb) 


bt一下:
(gdb) bt
#
0  CSendFile::SendFile (this=0x2acc5d4aff40, pathname=@0x2acc5d4afee0) at ../src/csendfile.cpp:101
#
1  0x000000000040592e in CIcdn::TaskThread (pParam=0x7fff617eafe0) at ../src/cicdn.cpp:128
#
2  0x00002acc4a90b73a in start_thread () from /lib/libpthread.so.0
#
3  0x00002acc4a40d6dd in clone () from /lib/libc.so.6
#
4  0x0000000000000000 in ?? ()

來看一下101行的代碼:
(gdb) l
96      }
97
98      int CSendFile::SendFile(const string& pathname)
99      {
100             int n;
101             while(1)
102             {
103                     n++;
104             }

105             //read file and send 


現(xiàn)在我們定位到了出問題的代碼位置,這里的循環(huán)只用來演示的。
最后別忘了detach

posted on 2010-08-02 12:08 葉子 閱讀(7520) 評論(2)  編輯 收藏 引用 所屬分類: C\C++

Feedback

# re: Linux下,多線程程序死循環(huán)問題調(diào)試 2010-08-02 12:11 yugi

不錯  回復(fù)  更多評論   

# re: Linux下,多線程程序死循環(huán)問題調(diào)試 2010-08-02 12:50 Tanky Woo

呵呵,學(xué)習(xí)了。  回復(fù)  更多評論   

青青草原综合久久大伊人导航_色综合久久天天综合_日日噜噜夜夜狠狠久久丁香五月_热久久这里只有精品
  • <ins id="pjuwb"></ins>
    <blockquote id="pjuwb"><pre id="pjuwb"></pre></blockquote>
    <noscript id="pjuwb"></noscript>
          <sup id="pjuwb"><pre id="pjuwb"></pre></sup>
            <dd id="pjuwb"></dd>
            <abbr id="pjuwb"></abbr>
            欧美精品久久久久久久免费观看| 一区二区三区视频在线看| 久久综合狠狠综合久久综青草| 欧美亚洲视频在线观看| 久久成人国产| 美女尤物久久精品| 欧美人与禽猛交乱配| 欧美性大战久久久久久久| 欧美亚韩一区| 狠狠色丁香婷婷综合| 亚洲福利一区| 亚洲综合色在线| 久久免费国产精品| 最新亚洲激情| 欧美午夜www高清视频| 久热精品在线视频| 久久亚洲电影| 欧美午夜剧场| 亚洲大片在线观看| 亚洲欧美春色| 欧美高清视频一区| 亚洲欧美久久久久一区二区三区| 久久五月激情| 国产欧美一区二区三区国产幕精品 | 久久国产精品免费一区| 欧美高清视频在线观看| 国产日韩视频| 一区二区三区高清视频在线观看| 欧美一二区视频| 亚洲国产欧美在线人成| 欧美一区二区三区的| 欧美日韩亚洲国产一区| 1204国产成人精品视频| 久久aⅴ国产欧美74aaa| av不卡在线看| 欧美久久在线| 亚洲国产精品久久人人爱蜜臀 | 欧美aⅴ一区二区三区视频| 国产精品久久久久久久浪潮网站| 亚洲国产小视频| 久久久青草婷婷精品综合日韩| 一卡二卡3卡四卡高清精品视频| 久久久水蜜桃| 狠狠色2019综合网| 久久精品久久综合| 亚洲午夜国产一区99re久久| 欧美日韩国产专区| 亚洲精品欧美日韩| 亚洲电影免费观看高清完整版在线观看 | 欧美一区二区免费视频| 国产精品igao视频网网址不卡日韩| 亚洲日本va在线观看| 蜜臀va亚洲va欧美va天堂| 欧美在线免费观看| 国产一区二区三区视频在线观看 | 亚洲精品孕妇| 欧美高清视频免费观看| 亚洲国产清纯| 欧美国产视频在线| 蜜臀av性久久久久蜜臀aⅴ四虎| 欲色影视综合吧| 亚洲国产天堂久久综合网| 欧美激情亚洲精品| 欧美精品在欧美一区二区少妇| 欧美日本簧片| 亚洲黄色一区| 欧美在线网址| 亚洲一区二区三区精品在线| 欧美日韩国产精品成人| 亚洲黄色在线| 亚洲精品视频免费| 欧美三级电影精品| 中文在线资源观看网站视频免费不卡 | 亚洲淫片在线视频| 91久久精品国产91久久| 欧美在线视频播放| 一区二区三区在线不卡| 久久全球大尺度高清视频| 欧美亚洲自偷自偷| 精品成人一区二区| 欧美不卡视频一区| 欧美激情欧美激情在线五月| 亚洲在线观看视频网站| 欧美在线观看视频在线 | 欧美日韩不卡| 亚洲欧美日韩一区二区在线| 亚洲欧美日韩人成在线播放| 国语自产精品视频在线看8查询8| 久久综合九色欧美综合狠狠| 嫩模写真一区二区三区三州| 亚洲综合清纯丝袜自拍| 欧美一区二区观看视频| 日韩亚洲不卡在线| 午夜精品美女久久久久av福利| 精品福利电影| 这里只有精品视频在线| 激情综合视频| 99热这里只有成人精品国产| 好看的亚洲午夜视频在线| 亚洲日韩中文字幕在线播放| 国产综合色产| 中日韩男男gay无套 | 久久狠狠久久综合桃花| 欧美mv日韩mv国产网站app| 亚洲欧美日韩精品一区二区| 老牛嫩草一区二区三区日本| 欧美一级片久久久久久久| 欧美大胆a视频| 久久久97精品| 国产精品每日更新在线播放网址| 欧美国产日韩精品免费观看| 国产欧美一区视频| 久久国产色av| 亚洲视频碰碰| 亚洲国产另类久久精品| 亚洲免费中文| 中文久久精品| 欧美紧缚bdsm在线视频| 久久综合狠狠综合久久综合88| 国产精品日韩在线| 亚洲精品一二| 亚洲免费电影在线观看| 久久亚洲一区二区三区四区| 久久久97精品| 国产一区再线| 欧美亚洲免费高清在线观看| 亚洲欧美日韩成人| 欧美三级电影一区| 99国产一区二区三精品乱码| 亚洲精品护士| 欧美国产欧美综合 | 国产精品自拍在线| 日韩午夜中文字幕| 日韩午夜在线视频| 欧美国产日韩一区二区| 欧美激情第一页xxx| 亚洲国产成人精品久久久国产成人一区 | 久久综合999| 久色婷婷小香蕉久久| 国产一区二区三区四区五区美女| 亚洲综合社区| 久久国产精品99精品国产| 国产欧美91| 久久精品国产成人| 蜜桃av噜噜一区| 亚洲国产成人精品久久| 欧美国产精品日韩| 一区二区三区四区国产| 午夜精品福利电影| 国产一区久久久| 久久久久综合一区二区三区| 欧美激情精品久久久久久黑人 | 9人人澡人人爽人人精品| 欧美日韩国产成人高清视频| av72成人在线| 欧美一区二区三区免费在线看| 国产日韩欧美成人| 久久久久久久久蜜桃| 亚洲第一精品在线| 在线亚洲美日韩| 国产欧美日韩精品在线| 久久久久久久国产| 亚洲精品一品区二品区三品区| 亚洲欧美激情视频| 激情欧美日韩一区| 欧美日韩ab片| 久久久久久国产精品一区| 日韩视频二区| 巨乳诱惑日韩免费av| av成人动漫| 狠狠色狠狠色综合| 1024成人| 亚洲国产精品福利| 欧美日韩国产精品一区二区亚洲| 亚洲精品国产精品乱码不99按摩| 亚洲天堂av在线免费| 国产一区视频在线看| 欧美ed2k| 久久成人免费| 一区二区欧美日韩| 麻豆av一区二区三区久久| 一区二区三区四区五区精品视频| 国产日韩欧美二区| 欧美日韩亚洲国产精品| 欧美在线视频一区| 在线亚洲伦理| 亚洲激情自拍| 久久久精品一品道一区| 一本色道久久综合亚洲精品不| 国内精品久久久久久久果冻传媒| 欧美日韩成人一区二区三区| 久久久久久欧美| 亚洲免费在线视频一区 二区| 亚洲国产精品一区二区www| 久久久av毛片精品| 亚洲综合色婷婷| 在线综合欧美| 9i看片成人免费高清| 亚洲夫妻自拍| 激情欧美丁香|