2012-04-14 54 views
0

我正在尝试使用GDB的程序,我做了一个'break x',然后一步一步地运行。所以当我想退出时,我会说'退出',它会返回'劣等进程将被杀死的警告信息'。如果我做'Y'会发生什么。因为我想以某种方式走出这个过程。如果我附加正在运行的进程并退出,会发生什么情况。它会被分离或正在运行的进程会退出吗?不同的来源给出不同的想法请指教。GDB劣质退出

此外,当我尝试运行一个程序时,它说,我正在运行peter教程中的标准程序。当我做的一步排队它给这个错误16.

_IO_puts (str=0x40075e "In display():") at ioputs.c:35 
35 ioputs.c: No such file or directory. 
    in ioputs.c 

计划

14 void display(int z, int *zptr) { 
    15  printf("In display():\n"); 
    **16  printf(" z is %d and is stored at %p.\n", z, &z);** 
    17  printf(" zptr points to %p which holds %d.\n", zptr, *zptr); 
    18 } 

回答

1

如果您运行在调试的过程和退出调试,运行的程序被杀死(就像你会与SIGKILL)。通常结束程序,说continue(可能有大量的忽略),直到程序完成。

如果附加调试到运行程序和退出调试,调试器将只分离和程序继续运行,除非你事先杀死它。

+0

解决了这个问题,谢谢。但我一直得到ioputs.c:只有当我使用'step'时才会有这样的文件目录。否则程序正常退出。我想当程序有一个printf时,它会追溯到库函数等。但这不是它在教程中提及的方式。只是让我怀疑,可能是什么问题。可能是不同版本的gcc或gdb? – howtechstuffworks 2012-04-14 23:57:13

+1

你只是没有C库的源代码。不要担心。只需* C库函数('n'而不是's')*。 – 2012-04-15 00:08:40

+0

“要正常结束程序,请说继续(可能有大量的忽略)” - 一种更简单的方法是“分离”和“退出”。 – 2012-04-15 02:11:04