一种可能的方法是使用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进程)的位置相关推荐

  1. linux服务器cpu的型号,Linux查看版本信息及CPU内核、型号等linux服务器应用 -电脑资料...

    Linux查看版本信息及CPU内核.型号等 Linux下如何查看版本信息, 包括位数和多核信息,今天我们就来一起看看linux 查看版本信息以及查看CPU内核信息.CPU具体型号等等,整个CPU信息一 ...

  2. linux查看msf安装目录,Ubuntu下安装Metasploit和Linux命令大全

    ①下载Metasploit下的Linux安装包,拷贝至Ubunto的/opt目录. ②在Terminal下运行命令"chmod +x /opt/framework-linux-4.0.0.r ...

  3. linux查看空间使用情况并且清除,科技常识:Linux 查看空间使用情况的实例详解...

    今天小编跟大家讲解下有关Linux 查看空间使用情况的实例详解 ,相信小伙伴们对这个话题应该也很关注吧,小编也收集到了有关Linux 查看空间使用情况的实例详解 的相关资料,希望小伙伴会喜欢也能够帮助 ...

  4. linux查看Windows的ip命令,在windows系统和linux系统中查询IP地址命令的不同

    在linux和windows系统上查询IP地址的命令是不一样的. 在linux中的命令行模式下,输入ifconfig即可查询到IP.而在windows系统下要查询IP地址需要先打开dos命令行,然后输 ...

  5. linux 查看日志_干货 | 名企高频考点之谈谈Linux日志查看方式都有哪些

    点击蓝字关注我哦 以下是本期干货视频视频后还附有文字版本哦 ▼<名企高频考点-谈谈Linux日志查看方式都有哪些>▼ ps:请在WiFi环境下打开,如果有钱任性请随意 0.概述 在我们面试 ...

  6. linux查看wifi信号命令_无线信号强度解析及linux如何查看wifi信号强弱等

    dBdB是一个表征相对值的值,纯粹的比值,只表示两个量的相对大小关系,没有单位,当考虑甲的功率相比于乙功率大或小多少个dB时,按下面的计算公式:10log(甲功率/乙功率),如果采用两者的电压比计算, ...

  7. linux查看wifi信号命令_使用Nmcli命令从Linux终端连接WiFi

    i使用Nmcli命令从Linux终端连接WiFi 在linux系统中有几种用于管理无线网络接口的命令行工具. 其中的一些可用于简单查看无线网络接口状态(无论是启动还是关闭 ,或者是否连接到任何网络), ...

  8. linux查看java虚拟机内存_深入理解java虚拟机(linux与jvm内存关系)

    本文转载自美团技术团队发表的同名文章 https://tech.meituan.com/linux-jvm-memory.html 一, linux与进程内存模型 要理解jvm最重要的一点是要知道jv ...

  9. linux查看日历_能从远程获得乐趣的 Linux 命令 | Linux 中国

    使用这些工具从远程了解天气.阅读资料等.-- Jason Baker致谢译自 | opensource.com 作者 | Jason Baker译者 | LCTT / geekpi 使用这些工具从远程 ...

  10. linux 看usb 存储设备,找到哪个驱动器对应于Linux中的哪个USB大容量存储设备

    我有几个USB大容量存储闪存驱动器连接到Ubuntu Linux计算机(Ubuntu 10.04.1,内核2.6.32-25-386),我需要以编程方式区分它们(如果可能的话,从bash,但我不害怕编 ...

最新文章

  1. 编写一个函数,输入n为偶数时,调用方法求1/2+1/4+...+1/n,当输入n为奇数时,调用函数1/1+1/3+...+1/n...
  2. style对象的cssText方法
  3. rfcv函数实现_OpenSSL AES_ctr128_encrypt()作为伪随机函数在RFC3711(SRTP)
  4. kylin: build cube Hbase: Region Server 意外退出
  5. 案例:实现第一个Filter程序
  6. u盘读写测试_aigo U395固态U盘评测,速度可能会吓到你,价格很良心
  7. 语音识别HCLG解码
  8. 【Nature论文浅析】基于模型的AlphaGo Zero
  9. 编写一个应用程序,给出汉字“你”“我”“他”在Unicode表中的位置
  10. 如果你的开发板上STM32采用外部晶振,那么就不能选择BYPASS Clock Source (旁路时钟源)模式,否则STM32将会工作不正常。
  11. 忽现的Mybatis foreach 失效记录.
  12. MQTT Essentials(Basics(1-5) And Features(6-10))
  13. 米家接入HomeKit系列二:通过群辉NAS的Docker搭建HomeAssistant
  14. 阿里云Centos7搭建MySql数据库
  15. 第2关:求解出n以内所有能被5整除的正整数的乘积-------C语言程序设计技术(循环结构程序设计1)
  16. 第二证券|医药板块短期轮动加快 机构看好后市机会
  17. 中国余数定理练习题及规律总结,超强总结
  18. 实现数组扁平化的6种方式
  19. Linux登录界面输入正确密码却显示认证失败
  20. halcon缺陷检测学习3暗斑检测detect_mura_defects_texture

热门文章

  1. Eclipse版本控制插件Subclipse与Subversive的区别与选择
  2. STM32单片机(一).相关的开发工具软件
  3. 【PCIe 协议】听说你做 PCIe 很多年,还不知道 PCIe Hierarchy ID 是什么 ???
  4. 一键自动生成字幕、提取视频字幕方案的详细评测与价格对比(含免费方案)
  5. 统计学基础知识梳理,看这一篇就够了
  6. win10未能连接网络连接到服务器,win10以太网无法连接网络解决办法
  7. Debug工具的使用
  8. HDFS教程(02)- HDFS命令汇总
  9. Win10窗口背景色改成淡绿色的方法
  10. DDA数值微分法详解