[問題] gdb debug的問題

看板LinuxDev作者 (mimi)時間15年前 (2008/11/28 11:16), 編輯推噓2(205)
留言7則, 2人參與, 最新討論串1/1
小弟目前還正在學linux程式 目前在debug上有點小問題 問題是 目前寫的程式我會用到fork() 但是在設定 breakpoint 在parnet process 執行的程式碼時gdb不會跳進去中斷點 ex. myfork.cpp 1 #include <iostream> 2 #include <sys/types.h> 3 #include <unistd.h> 4 5 int main(){ 6 7 pid_t child_pid; 8 9 std::cout << "the mani program pid is " << (int)getpid() << std::endl; 10 11 child_pid = fork(); 12 if(child_pid == 0) 13 { 14 std::cout << " In the Child process : " << (int)child_pid << std::endl; 15 }else 16 { 17 std::cout << " This parent process : " << (int) child_pid << std::endl; 18 } 19 } ~ 譬如我在 14行和17行設定中斷點 但是用gdb看的話 他程式會只有中斷17行 而不會去中斷 child process 的中斷點 請問我該如何使程式跳入child process的中斷點呢? 感謝各位前輩指教! -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 59.120.189.231 ※ 編輯: fuha 來自: 59.120.189.231 (11/28 16:50)

11/29 08:06, , 1F
會不會child_pid一直都非零?
11/29 08:06, 1F

11/29 08:09, , 2F
你可以在gdb trace到12行時,把child pid用gdb設成非0
11/29 08:09, 2F

11/29 08:09, , 3F
設成0才對
11/29 08:09, 3F

11/29 08:10, , 4F
這樣就會跳到14行了
11/29 08:10, 4F

11/29 17:31, , 5F
man fork, return value 不是有寫的很清楚嗎?
11/29 17:31, 5F

11/29 17:39, , 7F
簡單的說:用 gdb 抓 child pid 再 attach
11/29 17:39, 7F
文章代碼(AID): #19BsAMdO (LinuxDev)