作者fuha (mimi)
看板LinuxDev
标题[问题] gdb debug的问题
时间Fri Nov 28 11:16:35 2008
小弟目前还正在学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)
1F:→ eva19452002:会不会child_pid一直都非零? 11/29 08:06
2F:→ eva19452002:你可以在gdb trace到12行时,把child pid用gdb设成非0 11/29 08:09
3F:→ eva19452002: 设成0才对 11/29 08:09
4F:→ eva19452002:这样就会跳到14行了 11/29 08:10
5F:推 antontw:man fork, return value 不是有写的很清楚吗? 11/29 17:31
7F:→ antontw:简单的说:用 gdb 抓 child pid 再 attach 11/29 17:39