加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 大数据 > 正文

调试Perl分段错误

发布时间:2020-12-16 06:17:39 所属栏目:大数据 来源:网络整理
导读:我正在使用 AcePerl从wormbase.org数据库下载数据. 当我下载某些数据库对象时,我得到(在一定数量的对象之后)一个分段错误.此行为是可重现的. 我看了一下核心转储,并在那里打印了大量的函数调用: #0 0xb763c0ac in ?? () from /lib/i386-linux-gnu/libc.so.6
我正在使用 AcePerl从wormbase.org数据库下载数据.
当我下载某些数据库对象时,我得到(在一定数量的对象之后)一个分段错误.此行为是可重现的.

我看了一下核心转储,并在那里打印了大量的函数调用:

#0  0xb763c0ac in ?? () from /lib/i386-linux-gnu/libc.so.6
#1  0xb763eddc in malloc () from /lib/i386-linux-gnu/libc.so.6
#2  0x080c07ca in Perl_safesysmalloc ()
#3  0x080f3a02 in Perl_sv_grow ()
#4  0x080ebe38 in Perl_sv_setsv_flags ()
#5  0x080ecb76 in Perl_newSVsv ()
#6  0x0811516f in Perl_save_item ()
#7  0x080c7dd8 in Perl_get_db_sub ()
#8  0x080e7a4c in Perl_pp_entersub ()
#9  0x08075570 in Perl_call_sv ()
#10 0x080edd25 in Perl_sv_clear ()
#11 0x080ee3eb in Perl_sv_free2 ()
#12 0x080d79ec in Perl_hv_free_ent ()
#13 0x080d7c8c in ?? ()
#14 0x080db6ff in Perl_hv_undef_flags ()
#15 0x080edf72 in Perl_sv_clear ()
#16 0x080ee3eb in Perl_sv_free2 ()
#17 0x080d79ec in Perl_hv_free_ent ()
#18 0x080d7c8c in ?? ()
#19 0x080db6ff in Perl_hv_undef_flags ()
#20 0x080edf72 in Perl_sv_clear ()
#21 0x080ee3eb in Perl_sv_free2 ()
#22 0x080d79ec in Perl_hv_free_ent ()
#23 0x080d7c8c in ?? ()
#24 0x080db6ff in Perl_hv_undef_flags ()
#25 0x080edf72 in Perl_sv_clear ()
#26 0x080ee3eb in Perl_sv_free2 ()
#27 0x080d79ec in Perl_hv_free_ent ()
#28 0x080d7c8c in ?? ()
#29 0x080db6ff in Perl_hv_undef_flags ()
#30 0x080edf72 in Perl_sv_clear ()
#31 0x080ee3eb in Perl_sv_free2 ()
#32 0x080d79ec in Perl_hv_free_ent ()
#33 0x080d7c8c in ?? ()
#34 0x080db6ff in Perl_hv_undef_flags ()
#35 0x080edf72 in Perl_sv_clear ()
#36 0x080ee3eb in Perl_sv_free2 ()
#37 0x080d79ec in Perl_hv_free_ent ()
#38 0x080d7c8c in ?? ()
#39 0x080db6ff in Perl_hv_undef_flags ()
#40 0x080edf72 in Perl_sv_clear ()
#41 0x080ee3eb in Perl_sv_free2 ()
#42 0x080d79ec in Perl_hv_free_ent ()
#43 0x080d7c8c in ?? ()
#44 0x080db6ff in Perl_hv_undef_flags ()
#45 0x080edf72 in Perl_sv_clear ()
#46 0x080ee3eb in Perl_sv_free2 ()
#47 0x080d79ec in Perl_hv_free_ent ()
#48 0x080d7c8c in ?? ()
#49 0x080db6ff in Perl_hv_undef_flags ()
#50 0x080edf72 in Perl_sv_clear ()
#51 0x080ee3eb in Perl_sv_free2 ()
#52 0x080d79ec in Perl_hv_free_ent ()
#53 0x080d7c8c in ?? ()
...

这些函数调用重复数千次.
我也叫perl -d:Trace myscript.pl> log但日志文件大约3 GB.

是否有更方便的方法来调试此脚本?

编辑:
我的剧本:http://paste.ubuntu.com/5564630/.
我的架构文件:http://paste.ubuntu.com/5564631/.它确定要下载哪些数据.
在~2300 go_terms之后,seg故障被提升.

解决方法

安装 Devel::Trace.

在启用跟踪的情况下运行perl脚本:

perl -d:Trace myscript.pl >trace 2>&1

关闭文件以查看执行哪些Perl行导致分段错误.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读