linux查看perl进程,如何找到挂起perl脚本(linux进程)的位置
一种可能的方法是使用gdb.
首先,您需要为perl解释器调试符号.例如,在我的Debian系统上,我必须为此安装perl-debug软件包.在安装之后我们有/usr/lib / debug /usr/bin/perl,我们稍后会将它传递给gdb.请注意,原始卡住的Perl脚本是使用/usr/bin/perl启动的,而不是新安装的调试版本.
为了这个例子,让我们运行这个Perl脚本:
$cat test.pl
#! /usr/bin/perl
use strict;
use warnings;
print "pid: ", $$, "\n";
while (1) {
print "line ", __LINE__, "\n"; sleep 1;
print "line ", __LINE__, "\n"; sleep 1;
}
当我们运行它时,我们得到一个输出,如:
$./test.pl
pid: 15764
line 9
line 10
line 9
line 10
^C
现在让我们启动gdb.使用test.pl现在运行的pid打印.我们在一些初始信息(“从……读取符号”)后得到提示:
$gdb /usr/lib/debug/usr/bin/perl 15809
[snip]
(gdb)
同时,由于将gdb附加到perl解释器,perl会被停止:
$./test.pl
pid: 15809
line 9
line 10
[snip]
line 9
line 10
line 9
[no further output]
现在,让我们回到gdb进行回溯:
(gdb) backtrace
#0 0x00007fd5b4479830 in __nanosleep_nocancel () at ../sysdeps/unix/syscall-template.S:82
#1 0x00007fd5b44796c0 in __sleep (seconds=) at ../sysdeps/unix/sysv/linux/sleep.c:138
#2 0x00007fd5b4efc1e2 in Perl_pp_sleep (my_perl=0x1a91010) at pp_sys.c:4586
#3 0x00007fd5b4ea89b6 in Perl_runops_standard (my_perl=0x1a91010) at run.c:41
#4 0x00007fd5b4e4a585 in S_run_body (oldscope=1, my_perl=0x1a91010) at perl.c:2350
#5 perl_run (my_perl=0x1a91010) at perl.c:2268
#6 0x0000000000400f89 in main (argc=2, argv=0x7fff4de87628, env=0x7fff4de87640) at perlmain.c:120
很可能,perl恰好在睡眠中停止了().但是哪一个?
现在我们需要确定在哪里查找当前正在执行的(Perl)源文件和行的perl内部信息.最初我找到了一些相关的信息in the doumentation of mod_perl.在那里寻找curinfo宏.
(gdb) p my_perl->Icurcop->cop_file
$1 = 0x1abd810 "./test.pl"
(gdb) p my_perl->Icurcop->cop_line
$2 = 9
我们可以看到我们在test.pl的第9行 – 正如预期的那样基于脚本的输出.
链接文档提到了有关线程/非线程perl二进制文件的一些差异(上面的例子是针对线程perl,v5.14.2).它看起来有点过时,因为它谈论my_perl-> Tcurcop,而我找到了我想要的名字my_perl-> Icurcop.目前,我对perl的内部结构并不熟悉,无法解释为何重命名.
我希望这有帮助.
linux查看perl进程,如何找到挂起perl脚本(linux进程)的位置相关推荐
- linux服务器cpu的型号,Linux查看版本信息及CPU内核、型号等linux服务器应用 -电脑资料...
Linux查看版本信息及CPU内核.型号等 Linux下如何查看版本信息, 包括位数和多核信息,今天我们就来一起看看linux 查看版本信息以及查看CPU内核信息.CPU具体型号等等,整个CPU信息一 ...
- linux查看msf安装目录,Ubuntu下安装Metasploit和Linux命令大全
①下载Metasploit下的Linux安装包,拷贝至Ubunto的/opt目录. ②在Terminal下运行命令"chmod +x /opt/framework-linux-4.0.0.r ...
- linux查看空间使用情况并且清除,科技常识:Linux 查看空间使用情况的实例详解...
今天小编跟大家讲解下有关Linux 查看空间使用情况的实例详解 ,相信小伙伴们对这个话题应该也很关注吧,小编也收集到了有关Linux 查看空间使用情况的实例详解 的相关资料,希望小伙伴会喜欢也能够帮助 ...
- linux查看Windows的ip命令,在windows系统和linux系统中查询IP地址命令的不同
在linux和windows系统上查询IP地址的命令是不一样的. 在linux中的命令行模式下,输入ifconfig即可查询到IP.而在windows系统下要查询IP地址需要先打开dos命令行,然后输 ...
- linux 查看日志_干货 | 名企高频考点之谈谈Linux日志查看方式都有哪些
点击蓝字关注我哦 以下是本期干货视频视频后还附有文字版本哦 ▼<名企高频考点-谈谈Linux日志查看方式都有哪些>▼ ps:请在WiFi环境下打开,如果有钱任性请随意 0.概述 在我们面试 ...
- linux查看wifi信号命令_无线信号强度解析及linux如何查看wifi信号强弱等
dBdB是一个表征相对值的值,纯粹的比值,只表示两个量的相对大小关系,没有单位,当考虑甲的功率相比于乙功率大或小多少个dB时,按下面的计算公式:10log(甲功率/乙功率),如果采用两者的电压比计算, ...
- linux查看wifi信号命令_使用Nmcli命令从Linux终端连接WiFi
i使用Nmcli命令从Linux终端连接WiFi 在linux系统中有几种用于管理无线网络接口的命令行工具. 其中的一些可用于简单查看无线网络接口状态(无论是启动还是关闭 ,或者是否连接到任何网络), ...
- linux查看java虚拟机内存_深入理解java虚拟机(linux与jvm内存关系)
本文转载自美团技术团队发表的同名文章 https://tech.meituan.com/linux-jvm-memory.html 一, linux与进程内存模型 要理解jvm最重要的一点是要知道jv ...
- linux查看日历_能从远程获得乐趣的 Linux 命令 | Linux 中国
使用这些工具从远程了解天气.阅读资料等.-- Jason Baker致谢译自 | opensource.com 作者 | Jason Baker译者 | LCTT / geekpi 使用这些工具从远程 ...
- linux 看usb 存储设备,找到哪个驱动器对应于Linux中的哪个USB大容量存储设备
我有几个USB大容量存储闪存驱动器连接到Ubuntu Linux计算机(Ubuntu 10.04.1,内核2.6.32-25-386),我需要以编程方式区分它们(如果可能的话,从bash,但我不害怕编 ...
最新文章
- 编写一个函数,输入n为偶数时,调用方法求1/2+1/4+...+1/n,当输入n为奇数时,调用函数1/1+1/3+...+1/n...
- style对象的cssText方法
- rfcv函数实现_OpenSSL AES_ctr128_encrypt()作为伪随机函数在RFC3711(SRTP)
- kylin: build cube Hbase: Region Server 意外退出
- 案例:实现第一个Filter程序
- u盘读写测试_aigo U395固态U盘评测,速度可能会吓到你,价格很良心
- 语音识别HCLG解码
- 【Nature论文浅析】基于模型的AlphaGo Zero
- 编写一个应用程序,给出汉字“你”“我”“他”在Unicode表中的位置
- 如果你的开发板上STM32采用外部晶振,那么就不能选择BYPASS Clock Source (旁路时钟源)模式,否则STM32将会工作不正常。
- 忽现的Mybatis foreach 失效记录.
- MQTT Essentials(Basics(1-5) And Features(6-10))
- 米家接入HomeKit系列二:通过群辉NAS的Docker搭建HomeAssistant
- 阿里云Centos7搭建MySql数据库
- 第2关:求解出n以内所有能被5整除的正整数的乘积-------C语言程序设计技术(循环结构程序设计1)
- 第二证券|医药板块短期轮动加快 机构看好后市机会
- 中国余数定理练习题及规律总结,超强总结
- 实现数组扁平化的6种方式
- Linux登录界面输入正确密码却显示认证失败
- halcon缺陷检测学习3暗斑检测detect_mura_defects_texture