系統之家 - 系統光盤下載網站!

當前位置:系統之家 > 系統教程 > linux調試多進程程序

linux如何調試多進程程序

時間:2015-01-08 13:40:00 作者:qipeng 來源:系統之家 1. 掃描二維碼隨時看資訊 2. 請使用手機瀏覽器訪問: https://m.xitongzhijia.net/xtjc/20150107/34241.html 手機查看 評論

  在Linux系統操作中,經常會遇到多進程調試的問題,其實多進程的調試沒有想象中的那么復雜,下面小編就給大家介紹下Linux如何調試多進程程序,感興趣的朋友不妨來了解下。

 linux如何調試多進程程序

  多進程的調試:

  (1)follow-fork-mode

  set follow-fork-mode [parent | child] ———— fork之后選擇調試父進程還是子進程

 。╬arent: fork之后繼續(xù)調試父進程;child: fork之后調試父進程。默認的是fork之后調試父進程)

  set detach-on-fork [on | off] ———— 指示gdb在fork之后是否斷開某個進程的調試,或交由gdb控制

 。╫n: 斷開調試follow-fork-mode指定的進程;off: gdb將控制父進程和子進程,follow-fork-mode指定的進程將被調試,另一個進程置于暫停狀態(tài))

 。2)attach pid

  ubuntu下gdb要使用attach pid權限是不夠的,需要切換到root,或者你可以sudo chmod +s /usr/bin/gdb給gdb添加權限。

  使用attach需要在父子進程代碼最開始添加sleep()語句,讓進程睡眠,之后在后臺運行進程,通過ps獲取子進程pid,最后attach pid進入調試子進程。

  eg:

  $./test & //使進程test在后臺運行

  $ps -ef | grep test //查看進程pid

  結果中類似下面的形式:

  XXX 12345 23456 ———————————————— 。/test //父進程

  XXX 12346 12345 ———————————————— 。/test //子進程,這里的第一個數字就是子進程pid

  $ gdb -q test

 。╣db)attach 12346 //attach到子進程

  添加的sleep()可以是類似這樣的語句:

  while(pause) //pause是一個標志變量

  sleep(1);

  在gdb調試時你只需要set pause=0使條件不滿足即可執(zhí)行后續(xù)代碼。

 。3)gdb wrapper

  當父進程fork出子進程,子進程會緊接著調用exec函數來執(zhí)行新的代碼,這時也可以用gdb wrapper。它的優(yōu)點是不用添加額外代碼。

  linux下將一個進程放到后臺運行:

 。1)。/test &

  (2)“。/test” 之后按下 “ctrl+z” , 用“bg %num”返回的數字將該進程放到后臺;

  linux下將進程拉回前臺:

  用“fg %num”

  上面就是Linux多進程程序調試的方法介紹了,多進程的調試我們通常使用的是gdb,當你在調試的時候多少都會用到gdb調試工具。

發(fā)表評論

0

沒有更多評論了

評論就這些咯,讓大家也知道你的獨特見解

立即評論

以上留言僅代表用戶個人觀點,不代表系統之家立場

其他版本軟件

熱門教程

人氣教程排行

Linux系統推薦

官方交流群 軟件收錄