我目前正在C中创建一个命令行应用程序,其中创建了许多子进程。所以我需要调试这个子代码。我在Xcode上创建了一个子进程,如下所示。 (参见断点和运行光标。)
执行一些语句后,我得到xcode将GBN(885)附加到xcode调试器,如下图所示。
它不起作用。如何将子进程附加到xcode调试器?提前谢谢。
答案 0 :(得分:3)
Google和Apple开发者页面对此问题非常沉默,最后我找到了一个很好的解决方法。当我们让Xcode调试器附加到进程时,会出现此错误消息,该进程是正在调试的进程的子进程,或者是已由Xcode调试器,gdb或lldb调试的进程。
为了避免这种恼人的消息,首先将kill(0, SIGSTOP)
语句放在要停止子进程的位置。在下图中,我在创建子项后立即放置了kill
语句。
其次,使用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,然后单击“附加”按钮。
享受调试!