命令行应用程序:如何将子进程附加到xcode调试器?

时间:2013-11-23 10:23:27

标签: c xcode debugging child-process

我目前正在C中创建一个命令行应用程序,其中创建了许多子进程。所以我需要调试这个子代码。我在Xcode上创建了一个子进程,如下所示。 (参见断点和运行光标。)

enter image description here

执行一些语句后,我得到xcode将GBN(885)附加到xcode调试器,如下图所示。

enter image description here enter image description here

它不起作用。如何将子进程附加到xcode调试器?提前谢谢。

1 个答案:

答案 0 :(得分:3)

Google和Apple开发者页面对此问题非常沉默,最后我找到了一个很好的解决方法。当我们让Xcode调试器附加到进程时,会出现此错误消息,该进程是正在调试的进程的子进程,或者是已由Xcode调试器,gdb或lldb调试的进程。

error message

为了避免这种恼人的消息,首先将kill(0, SIGSTOP)语句放在要停止子进程的位置。在下图中,我在创建子项后立即放置了kill语句。

enter image description here

其次,使用gcc使用-g选项编译源代码。

$ ls
GBN.1  gbn.c  gbn.h  type.h util.c util.h
$ gcc *.c -g
$ ./a.out

[1]+  Stopped                 ./a.out
$ ps -ef | grep a.out
  501   628   600   0  9:33AM ttys000    0:00.00 ./a.out
  501   629   628   0  9:33AM ttys000    0:00.00 ./a.out

现在,我们所要做的就是告诉Xcode调试器通过pid附加到进程。点击Debug菜单,然后找到Attach to process选项,点击By Process Identifier (PID) or name选项。然后键入子进程(或父进程)的pid,然后单击“附加”按钮。

enter image description here

享受调试!

enter image description here