如何使用gdb快速attach到所需进程上

2 篇文章 0 订阅

如何使用gdb快速attach到所需进程上

大家都知道,gdb的调试功能非常强大,可以attach到打开调试开关编译出来的进程上调试进程,但是在这个流程中,你首先需要ps -ef | grep到你那个进程,然后找到进程号,然后再使用gdb attach命令attach进进程。

首先,这个就比较麻烦,需要执行三条命令;其次,这个方法也肯定不是一个自动化attach进进程所应该允许的流程。

这里就介绍一条命令,能够一条命令attach到进程上,且能够给自动化脚本使用。

gdb attach $(ps -ef | grep process_name | grep -v grep | awk '{print $2}')

解释

  • ps -ef 显示所有进程
  • grep process_name 找出包含progress_name的进程,如果此时只有一个叫这个名字的进程的话,那么会显示两个进程:一个是process_name这个进程,一个是grep进程
  • grep -v grep 过滤掉前一步显示出来的grep进程
  • awk’{print $2}’ 显示process_name进程信息的第二列数据

示例:

找一个带acpid的进程

ps进程查看到的结果(有两个进程,一个acpid进程,一个grep进程)

ubuntu@VM-7-212-ubuntu:/lib/modules/4.4.0-53-generic$ ps -ef | grep acpid
root       899     1  0 Apr06 ?        00:00:00 /usr/sbin/acpid
ubuntu   11798  9298  0 16:46 pts/1    00:00:00 grep --color=auto acpid

使用对应命令

ubuntu@VM-7-212-ubuntu:/lib/modules/4.4.0-53-generic$ ps -ef | grep acpid | grep -v grep | awk '{print $2}'
899

PS

如果叫这个名字的有多个进程的话,那么则需要进一步过滤,但这个就不是本文所讨论的范围了(应该就算是这样,也基本上可以通过调整grep关键字和ps的选项来找到对应进程)

当然举个例子,本台示例机器上启动着多个带有agent字的进程

ubuntu@VM-7-212-ubuntu:/lib/modules/4.4.0-53-generic$ ps -ef | grep agent
root      1185     1  0 Apr06 ?        00:00:01 /usr/local/qcloud/stargate/sgagent -d
root      1188     1  0 Apr06 ?        00:03:05 /usr/local/sa/agent/secu-tcs-agent
root      1256     1  0 Apr06 ?        00:00:03 barad_agent
root      1271  1256  0 Apr06 ?        00:00:31 barad_agent
root      1272  1256  0 Apr06 ?        00:05:57 barad_agent
ubuntu   11736  9298  0 16:45 pts/1    00:00:00 grep --color=auto agent
root     12059  1188  0 Apr07 ?        00:00:20 /usr/local/sa/agent/plugins/sap1004
root     12117     1  0 Apr07 ?        00:10:32 /usr/local/sa/agent/plugins/sap1005

使用我的命令获取后,则是

ubuntu@VM-7-212-ubuntu:/lib/modules/4.4.0-53-generic$ ps -ef | grep agent | grep -v grep | awk '{print $2}'
1185
1188
1256
1271
1272
12059
12117
  • 3
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值