Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/ios/94.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C GDB pid在自动连接并退出时更改_C_Linux_Gdb - Fatal编程技术网

C GDB pid在自动连接并退出时更改

C GDB pid在自动连接并退出时更改,c,linux,gdb,C,Linux,Gdb,我正在尝试附加现有进程,运行一些命令并打印所需信息。但是,当我这样做时,我看到进程的PID被更改(显示killed)命令 代码 输出 root@198.18.81.198:/desktop/user1/workspace# ps -eaf | grep out root 16724 8877 0 08:25 pts/1 00:00:00 grep --color=auto out root@198.18.81.198:/desktop/user1/workspace# ca

我正在尝试附加现有进程,运行一些命令并打印所需信息。但是,当我这样做时,我看到进程的PID被更改(显示
killed
)命令


代码


输出

root@198.18.81.198:/desktop/user1/workspace# ps -eaf | grep out
root     16724  8877  0 08:25 pts/1    00:00:00 grep --color=auto out
root@198.18.81.198:/desktop/user1/workspace# cat /home/testgrp/gdb.txt
cat: /home/testgrp/gdb.txt: No such file or directory
root@198.18.81.198:/desktop/user1/workspace# ./a.out &
[1] 16762
root@198.18.81.198:/desktop/user1/workspace# gdb --batch-silent -x=/tmp/command.txt -p 16762
[1]+  Killed                  ./a.out
root@198.18.81.198:/desktop/user1/workspace# ps -eaf | grep out
root     16805     1  0 08:25 pts/1    00:00:00 /desktop/user1/workspace/a.out 1
root     16823  8877  0 08:25 pts/1    00:00:00 grep --color=auto out
root@198.18.81.198:/desktop/user1/workspace# cat /home/testgrp/gdb.txt
Breakpoint 1 at 0x400711: file sample.cc, line 11.
$1 = 100
A debugging session is active.

    Inferior 1 [process 16805] will be detached.

Quit anyway? (y or n) [answered Y; input not from terminal]

问题:

  • 如何在不更改流程PID的情况下获得所需信息
  • 更重要的是,为什么pid会更改,而以前的pid会被禁用

  • 附录

    GDB版本

    GNU gdb (Ubuntu 7.7.1-0ubuntu5~14.04.2aka8.0.1) 7.7.1
    Copyright (C) 2014 Free Software Foundation, Inc.
    License GPLv3+: GNU GPL version 3 or later <http://gnu.org/licenses/gpl.html>
    This is free software: you are free to change and redistribute it.
    There is NO WARRANTY, to the extent permitted by law.  Type "show copying"
    and "show warranty" for details.
    This GDB was configured as "x86_64-linux-gnu".
    
    GNU gdb(Ubuntu 7.7.1-0ubuntu5~14.04.2aka8.0.1)7.7.1
    版权所有(C)2014免费软件基金会。
    许可证GPLv3+:GNU GPL版本3或更高版本
    这是自由软件:您可以自由更改和重新发布它。
    在法律允许的范围内,不存在任何担保。键入“显示复制”
    和“显示保修”了解详细信息。
    此GDB配置为“x86_64-linux-gnu”。
    
    在gdb脚本的最后两行中

    run 1
    quit
    
    “run 1”将使用参数“1”重新启动正在调试的程序。默认情况下,它应该要求您确认是否重新启动。但在启动gdb时,您有一个参数“-batch silent”。因此,您的进程将在没有消息的情况下重新启动

    删除“-batch silent”和gdb脚本的最后2行,然后可以中断并调试。
    “b sample.cc:11”将在系统功能睡眠中停止,如果您感到困惑,可以将其更改为其他行。(我建议您在使用gdb之前阅读一些简单的演示,很多cmd会让初学者感到困惑)

    在gdb脚本的最后两行中

    run 1
    quit
    
    “run 1”将使用参数“1”重新启动正在调试的程序。默认情况下,它应该要求您确认是否重新启动。但在启动gdb时,您有一个参数“-batch silent”。因此,您的进程将在没有消息的情况下重新启动

    删除“-batch silent”和gdb脚本的最后2行,然后可以中断并调试。
    “b sample.cc:11”将在系统功能睡眠中停止,如果您感到困惑,可以将其更改为其他行。(我建议您在使用gdb之前先阅读一些简单的演示,很多cmd会让初学者感到困惑)

    分离不会被杀死。当gdb退出时,您的进程仍在运行。@Jean-Françoisfare:为什么我看到进程的pid发生了变化?您可以在输出中看到PID的变化。我想在不更改pid的情况下捕获信息。抱歉,我认为这是不可能的。检查16805进程(或其他任何进程)是否仍在运行。除非gdb崩溃它。但它不应该作为另一个过程重生。不可能。退出gdb后,您没有执行
    ps-eaf | grep out
    。这是你需要展示的重要信息。@Jean-Françoisfare:我已经做了。检查
    gdb
    命令后的命令。这正是我正在做的(检查pid)没有被杀死。当gdb退出时,您的进程仍在运行。@Jean-Françoisfare:为什么我看到进程的pid发生了变化?您可以在输出中看到PID的变化。我想在不更改pid的情况下捕获信息。抱歉,我认为这是不可能的。检查16805进程(或其他任何进程)是否仍在运行。除非gdb崩溃它。但它不应该作为另一个过程重生。不可能。退出gdb后,您没有执行
    ps-eaf | grep out
    。这是你需要展示的重要信息。@Jean-Françoisfare:我已经做了。检查
    gdb
    命令后的命令。这正是我正在做的(检查pid)
    run 1
    quit