gdb attach


前段時間在跟蹤源碼時候,發現用gdb attach 進程不行,有時候還是提示找不到源碼。那時項目趕,所以沒有去理清楚。現在有時間將gdb的調試重新自己弄個小demo看看,先上代碼先。

#include <iostream>
#include <time.h>
#include <unistd.h>

#include <stdio.h>
int main() {
    int k =0;
//    pid_t  pid;
//    pid = fork();
//    if(pid > 0)
//    {
//        std::cout << "Farther Hello, World!" << std::endl;
//        return 1;
//    } else {
//        std::cout << "child Hello, World!" << std::endl;
//    }
    while(k < 100000)
    {
        k++;
        std::cout << "Hello, World!"<<k << std::endl;
        sleep(1);
    }
    std::cout << "Hello, World!"<<k << std::endl;
    return 0;
}

以單進程的形式開始,你會得到一個pid,這是用ps -aux| grep 進程名,得到pid。

如這里我的進程是11891, 然后gdb 進入gdb模式。注意這個要用權限,因為后面有attach。

然后就是file原來的debug程序(已經加入-g參數編譯),然后attach 進程11891,最后寫上你的斷點后繼續c就可以看到斷點。

這里說一下,可以用gdbserver來遠程調試,以這里為例就是sudo gdbserver :10089 --attach 11891。這里默認是127.0.0.1.


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM