原文:gdb調試多進程程序——gdb attach用法

前一陣在調試多進程mpi死鎖的bug,多進程程序只靠輸出來定位bug是一件相當麻煩的事 . ,后來發現可以用gdb attach來調試多進程程序。 原來一直用gdb調試單進程的程序,感覺打開了新世界的大門哈哈哈。 下面介紹如果用gdb attach調試正在運行的程序,用法如下。 第一步:運行多進程程序。 首先正常運行多進程程序。在發生mpi死鎖之后,不要停掉程序 第二步:獲得運行程序的所有pid。 ...

2020-02-19 17:41 0 1632 推薦指數:

查看詳情

gdb進程調試多進程調試

1.單進程調試   常規的通過gdb cmd這種方式開啟調試,特別說明的是通過attach的方法附加到一個指定的進程上去進行調試,這種方法適合於調試一個已經運行的進程,具體用法:    gdb -p [pid]   此時被attach進程會阻塞,進入T模式(ps 命令看到STATE為T ...

Sat Sep 03 00:18:00 CST 2016 0 7940
gdb調試多進程多線程程序

一、調試的指令   1.list命令     list  linenum  顯示程序第linenum行的周圍的程序     list  function  顯示程序名為function的函數的源程序     list        顯示當前行后面的源程序     list ...

Wed Jun 07 03:07:00 CST 2017 0 3593
使用GDB調試產生多進程程序

如果一個進程fork了多個進程,這時使用GBD工具對程序進行調試會如何呢? 實際上,GDB 沒有對多進程程序調試提供直接支持。例如,使用GDB調試某個進程,如果該進程fork了子進程GDB會繼續調試進程,子進程會不受干擾地運行下去。 如果你事先在子進程代碼里設定了斷點,子進程會收 ...

Mon Nov 06 01:54:00 CST 2017 0 1068
gdb調試多線程多進程

多線程 1、info threads:   這條命令顯示的是當前可調試的所有線程,GDB會給每一個線程都分配一個ID。前面有*的線程是當前正在調試的線程。 2、thread ID:   切換到當前調試的線程為指定為ID的線程。 3、thread apply all command:   讓所有 ...

Thu Jul 19 19:28:00 CST 2018 0 2796
gdb常用命令及gdb調試多進程/線程程序&coredump

一、常用普通調試命令 1.簡單介紹GDB 介紹: gdb是Linux環境下的代碼調試⼯具。使⽤:需要在源代碼⽣成的時候加上 -g 選項。開始使⽤: gdb binFile退出: ctrl + d 或 quit 2.調試過程 (1)list命令 list linenum ...

Wed Jun 28 03:26:00 CST 2017 0 1270
[轉]gdb調試多進程和多線程命令

1. 默認設置下,在調試多進程程序GDB只會調試進程。但是GDB(>V7.0)支持多進程的分別以及同時調試,換句話說,GDB可以同時調試多個程序。只需要設置follow-fork-mode(默認值:parent)和detach-on-fork(默認值:on)即可 ...

Fri Dec 22 19:25:00 CST 2017 0 3091
使用 gdb 調試多進程程序 —— 以調試 nginx 為例 轉自:https://mp.weixin.qq.com/s/m2c2xujMTHz5ZdpnDMWLJw

這里我們說的多進程程序指的是一個進程使用 Linux 系統調用 fork() 函數產生的子進程,沒有相互關聯的進程就是普通的 gdb 調試,不必刻意討論。 在實際的應用中,如有這樣一類程序,如 nginx,對於客戶端的連接是采用多進程模型,當 nginx 接受客戶端連接后,創建一個新的進程來處 ...

Tue Jul 07 23:37:00 CST 2020 1 915
【轉】GDB attach到一個進程

調試守護進程等已經啟動的進程或是調試陷於死循環的進程可以使用attach命令 格式 attach pid C語言代碼 #include <stdio.h> int main(void) { int marks[10]; int ...

Mon Jun 24 21:36:00 CST 2019 0 1118
 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM