前一陣在調試多進程mpi死鎖的bug,多進程程序只靠輸出來定位bug是一件相當麻煩的事=.=!,后來發現可以用gdb attach來調試多進程程序。 原來一直用gdb調試單進程的程序,感覺打開了新世界的大門哈哈哈。 下面介紹如果用gdb attach調試正在運行的程序,用法 ...
如果一個進程fork了多個進程,這時使用GBD工具對程序進行調試會如何呢 實際上,GDB 沒有對多進程程序調試提供直接支持。例如,使用GDB調試某個進程,如果該進程fork了子進程,GDB會繼續調試該進程,子進程會不受干擾地運行下去。 如果你事先在子進程代碼里設定了斷點,子進程會收到SIGTRAP信號,如果沒有對此信號進行捕捉處理,就會按默認的處理方式處理 終止進程。 那么該如何調試子進程呢 有 ...
2017-11-05 17:54 0 1068 推薦指數:
前一陣在調試多進程mpi死鎖的bug,多進程程序只靠輸出來定位bug是一件相當麻煩的事=.=!,后來發現可以用gdb attach來調試多進程程序。 原來一直用gdb調試單進程的程序,感覺打開了新世界的大門哈哈哈。 下面介紹如果用gdb attach調試正在運行的程序,用法 ...
),如果調試完畢了,使用 detach 命令就釋放了進程,它就自由運行了。 2.多進程的調試 ...
一、調試的指令 1.list命令 list linenum 顯示程序第linenum行的周圍的程序 list function 顯示程序名為function的函數的源程序 list 顯示當前行后面的源程序 list ...
多線程 1、info threads: 這條命令顯示的是當前可調試的所有線程,GDB會給每一個線程都分配一個ID。前面有*的線程是當前正在調試的線程。 2、thread ID: 切換到當前調試的線程為指定為ID的線程。 3、thread apply all command: 讓所有 ...
一、常用普通調試命令 1.簡單介紹GDB 介紹: gdb是Linux環境下的代碼調試⼯具。使⽤:需要在源代碼⽣成的時候加上 -g 選項。開始使⽤: gdb binFile退出: ctrl + d 或 quit 2.調試過程 (1)list命令 list linenum ...
1. 默認設置下,在調試多進程程序時GDB只會調試主進程。但是GDB(>V7.0)支持多進程的分別以及同時調試,換句話說,GDB可以同時調試多個程序。只需要設置follow-fork-mode(默認值:parent)和detach-on-fork(默認值:on)即可 ...
這里我們說的多進程程序指的是一個進程使用 Linux 系統調用 fork() 函數產生的子進程,沒有相互關聯的進程就是普通的 gdb 調試,不必刻意討論。 在實際的應用中,如有這樣一類程序,如 nginx,對於客戶端的連接是采用多進程模型,當 nginx 接受客戶端連接后,創建一個新的進程來處 ...
實際上,GDB 沒有對多進程程序調試提供直接支持。例如,使用GDB調試某個進程,如果該進程fork了子進程,GDB會繼續調試該進程,子進程會不受干擾地運行下去。如果你事先在子進程代碼里設定了斷點,子進程會收到SIGTRAP信號並終止。那么該如何調試子進程呢?其實我們可以利用GDB的特點或者其他一些 ...