gpt4 book ai didi

perl - 在 Perl 中调试段错误

转载 作者:行者123 更新时间:2023-12-04 18:10:42 27 4
gpt4 key购买 nike

我正在尝试调试从 Perl 获取的段错误。

我正在使用:

  • Perl 5.8.8
  • 网络::SSH2 0.45
  • Libssh2 1.4.2
  • Openssl 0.9.8x(但我对 1.0.1c 也有同样的问题)

调用时出现问题:

my $ssh = Net::SSH2->new();

我已经使用 Perl 调试器 (perl -d) 运行它并单步进入 Net::SSH2 并在以下行出现段错误:

my $self = $class->_new;

段错误后的输出没有帮助:

zsh: segmentation fault  perl -d ./test.pl

使用 strace 运行结束于:

open("<snip>/perl/lib/perl5.8/Linux-2.6c2.5-x86_64-64int/Net/SSH2/Listener.pm", O_RDONLY) = 4
ioctl(4, SNDCTL_TMR_TIMEBASE or TCGETS, 0x7fffb9cdc920) = -1 ENOTTY (Inappropriate ioctl for device)
lseek(4, 0, SEEK_CUR) = 0
read(4, "package Net::SSH2::Listener;\n\nus"..., 4096) = 804
lseek(4, 90, SEEK_SET) = 90
lseek(4, 0, SEEK_CUR) = 90
close(4) = 0
read(3, "", 4096) = 0
close(3) = 0
--- SIGSEGV (Segmentation fault) @ 0 (0) ---
+++ killed by SIGSEGV +++

现在我卡住了。接下来我该做什么?我如何深入挖掘以找出问题所在?

我唯一不能改变的是我必须使用 Perl 5.8.8(我别无选择)。


gdb PSIAlt 建议的方法输出:

Program received signal SIGSEGV, Segmentation fault.
0x000000379ea141dc in __longjmp () from /lib64/ld-linux-x86-64.so.2
(gdb) bt
#0 0x000000379ea141dc in __longjmp () from /lib64/ld-linux-x86-64.so.2
#1 0x0101f58e4fc7bacc in ?? ()
Cannot access memory at address 0x101f58e475b223b
(gdb)

所以,没什么帮助...

同样,我真正的问题是“下一步是什么?”

最佳答案

它适用于 Ubuntu 12.10 x86_64、perl 5.8.8(由 perlbrew 编译)、libssh2 1.4.2、openssl 1.0.1c 和 Net::SSH2 0.46。

在 Unix/Linux 下,Net::OpenSSH可能是更好的选择。它甚至可以通过 Net::OpenSSH::Compat 模拟大部分 Net::SSH2 API .

关于perl - 在 Perl 中调试段错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13407681/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com