Ich versuche, einen vorhandenen Prozess anhängen, einige Befehle ausführen und die erforderlichen Informationen drucken. Wie auch immer, wenn ich es mache, sehe ich, dass die PID des Prozesses geändert wird (mit killed
) Befehl wird angezeigt.GDB pid ändert sich, wenn automatisch verbunden und
-Code
1 #include <iostream>
2 #include <unistd.h>
3 using namespace std;
4
5
6 int main()
7 {
8 do
9 {
10 static int s = 100;
11 s = s+1;
12 sleep (3);
13 } while(1);
14 return 0;
15 }
16
GDB-Befehle
> cat /tmp/command.txt
set pagination off
set logging file /home/testgrp/gdb.txt
set logging on
b sample.cc:11
commands 1
p s
end
run 1
quit
Ausgabe
[email protected]:/desktop/user1/workspace# ps -eaf | grep out
root 16724 8877 0 08:25 pts/1 00:00:00 grep --color=auto out
[email protected]:/desktop/user1/workspace# cat /home/testgrp/gdb.txt
cat: /home/testgrp/gdb.txt: No such file or directory
[email protected]:/desktop/user1/workspace# ./a.out &
[1] 16762
[email protected]:/desktop/user1/workspace# gdb --batch-silent -x=/tmp/command.txt -p 16762
[1]+ Killed ./a.out
[email protected]:/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
[email protected]:/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]
Frage
- Wie kann ich die erforderlichen Informationen erhalten, ohne dass die PID des Prozesses zu ändern?
- Noch wichtiger ist, warum hat die pid Änderung und vorherige PID ist
killed
Anhang
GDB Version
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".
gelöst wird nicht getötet. Ihr Prozess läuft noch, wenn gdb beendet wird. –
@ Jean-FrançoisFabre: Warum sehe ich das Pid für den Prozess geändert? Sie können in der Ausgabe die Änderung der PID sehen. Ich möchte die Informationen ohne Änderung in pid erfassen. –
Tut mir leid, ich glaube nicht, dass das möglich ist. Überprüfen Sie, ob der Prozess 16805 (oder was immer es ist) noch läuft. Es sei denn, gdb stürzt ab. Aber es sollte nicht als ein anderer Prozess respawnen. nicht möglich. –