2017-04-15 2 views
0

Ich habe versucht, gdb zum Debuggen eines neuen Prozesses, der von einem Skript erstellt wird. In der Linux-Shell, habe ich versucht, dieses:automatisch einen beenden, wenn gdb im Skript ausgeführt

ps -ef | grep -i [m]yprocess | awk '{print "gdb -p " $2}' | sh 

Jedes Mal, GDB bekam ein ‚beenden‘ automatisch beenden:

***0xf7788430 in __kernel_vsyscall() 
Missing separate debuginfos, use: debuginfo-install glibc-2.17-105.i686 libgcc-4.8.3-10.i686 
(gdb) quit 
A debugging session is active. 
    Inferior 1 [process 834] will be detached. 
Quit anyway? (y or n) [answered Y; input not from terminal]*** 

Was kann ich dieses Problem beheben?

+0

Setzen Sie Ihren Code mit vier weißen Leerzeichen voran. Bitte werfen Sie einen Blick auf [editing-help] (http://stackoverflow.com/editing-help). – Cyrus

+0

Sieht so aus, als ob die Nachricht anweist, 'debuginfo-install glibc-2.17-105.i686 libgcc-4.8.3-10.i686' aufzurufen. Vielleicht hilft die Suche nach 'debuginfo-install'? – robd

+0

Wenn die Eingabe von Hand wie "gdb -p myprocess_id", könnte es funktionieren. Das ist nicht der direkte Grund, warum ich einen "quit" bekomme – user7870532

Antwort

0

können Sie tun nur

gdb -p `pgrep myprocess` 

ich seltsame Verhalten ist die Folge von STDIN kein Terminal, sondern ein Rohr von awk erraten sein.

+0

danke! Ich habe mehrere Male versucht, dann erkannte ich, dass das Problem mit der Pipe sein könnte. seit Export abc = $ (pgrep 'myprocess') | gdb -p $ abc wurde immer noch beendet. So jetzt benutze ich das Skript anstelle von einem einzeiligen Befehl getrennt durch Pipe – user7870532

+0

Hallo @ user7870532, wenn diese oder jede Antwort Ihre Frage gelöst hat, bitte beachten Sie [akzeptieren] (https://meta.stackexchange.com/q/5234/179419) durch Anklicken des Häkchens. Dies zeigt der breiteren Gemeinschaft, dass Sie eine Lösung gefunden haben und sowohl dem Antworter als auch Ihnen einen guten Ruf verschaffen. Es besteht keine Verpflichtung, dies zu tun. –

Verwandte Themen