2017-04-15 213 views
0

我试图使用gdb来调试由脚本创建的新进程。 在Linux shell中,我尝试这样做:在脚本中运行gdb时自动退出

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

每次,GDB有一个“退出”自动然后退出:

***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]*** 

我能做些什么来解决这个问题?

+0

用四个空格前缀代码。请看[编辑帮助](http://stackoverflow.com/editing-help)。 – Cyrus

+0

看起来消息告诉你要调用'debuginfo-install glibc-2.17-105.i686 libgcc-4.8.3-10.i686'。也许看着'debuginfo-install'会有帮助吗? – robd

+0

如果手动输入如“gdb -p myprocess_id”,它可以工作。所以这不是我得到“退出”的直接原因 – user7870532

回答

0

你可以做到这

gdb -p `pgrep myprocess` 

我猜怪异的行为是标准输入不是终端而是从awk管道的后果。

+0

谢谢!我尝试了几次,然后意识到这个问题可能与管道有关。因为export abc = $(pgrep'myprocess')| gdb -p $ abc仍然退出。所以现在我使用的是脚本而不是单独的管道命令 – user7870532

+0

Hi @ user7870532如果这个或任何答案已经解决了你的问题,请考虑[接受它](https://meta.stackexchange.com/q/5234/179419)通过点击复选标记。这向更广泛的社区表明,您已经找到了解决方案,并为答复者和您自己提供了一些声誉。没有义务这样做。 –