如何抑制错误消息:“error in`/哈伯德公司“:损坏的大小与上一个大小”?

2024-06-16 15:01:54 发布

您现在位置:Python中文网/ 问答频道 /正文

我有一个非常古老的程序(从80年代末开始),用C++编写,我设法使它运行在^ {CD1>}上。即使最后产生错误,结果也没问题。因为现在似乎不可能编译这个程序(它使用了一个非常旧的专有库NAG版本),所以我无法在源代码中修复问题,不得不接受错误。我需要在一个循环中运行这个程序,错误消息会把我的屏幕弄得一团糟,并阻止我看到相关的消息。我试图通过使用./hubbard.exc 2>/dev/null和它的变体(如&>/dev/null)来抑制消息,但是错误消息仍然打印到屏幕上。所以我得出结论,这个错误消息既没有打印到stdout,也没有打印到{}。在

我将非常感谢任何帮助,以抑制这个错误消息或建议如何支持所有输出的shell!在

如果不可能在shell中禁止显示这个错误消息,它还可以帮助我找到一种方法来从Python3脚本运行程序(使用subprocessos.system),而不将错误打印到屏幕上。在

我所说的错误消息如下所示:

*** Error in `./hubbard.exc': corrupted size vs. prev_size: 0x0a350a98 ***
======= Backtrace: =========
/lib/i386-linux-gnu/libc.so.6(+0x67377)[0xf7d5e377]
/lib/i386-linux-gnu/libc.so.6(+0x6d2f7)[0xf7d642f7]
/lib/i386-linux-gnu/libc.so.6(+0x6e48a)[0xf7d6548a]
./libstdc++-libc6.2-2.so.3(__builtin_vec_delete+0x24)[0xf7f5ea44]
./hubbard.exc[0x80b4ad4]
./hubbard.exc[0x808e141]
./hubbard.exc[0x805352d]
./hubbard.exc[0x805257f]
./hubbard.exc[0x80527c5]
./hubbard.exc(fwrite+0xc7)[0x8049623]
./hubbard.exc[0x80b7779]
/lib/ld-linux.so.2(+0xfa87)[0xf7f89a87]
/lib/i386-linux-gnu/libc.so.6(+0x2e993)[0xf7d25993]
======= Memory map: ========
08048000-080bd000 r-xp 00000000 08:16 15208152                           /mnt/data/Downloads/Ausfuehrbar/hubbard.exc
080bd000-080cb000 rwxp 00074000 08:16 15208152                           /mnt/data/Downloads/Ausfuehrbar/hubbard.exc
080cb000-080cf000 rwxp 00000000 00:00 0 
098ee000-0a51e000 rwxp 00000000 00:00 0                                  [heap]
f7b00000-f7b21000 rwxp 00000000 00:00 0 
f7b21000-f7c00000 ---p 00000000 00:00 0 
f7cf6000-f7cf7000 rwxp 00000000 00:00 0 
f7cf7000-f7ea7000 r-xp 00000000 08:02 917535                             /lib/i386-linux-gnu/libc-2.23.so
f7ea7000-f7ea9000 r-xp 001af000 08:02 917535                             /lib/i386-linux-gnu/libc-2.23.so
f7ea9000-f7eaa000 rwxp 001b1000 08:02 917535                             /lib/i386-linux-gnu/libc-2.23.so
f7eaa000-f7ead000 rwxp 00000000 00:00 0 
f7ead000-f7f00000 r-xp 00000000 08:02 917512                             /lib/i386-linux-gnu/libm-2.23.so
f7f00000-f7f01000 r-xp 00052000 08:02 917512                             /lib/i386-linux-gnu/libm-2.23.so
f7f01000-f7f02000 rwxp 00053000 08:02 917512                             /lib/i386-linux-gnu/libm-2.23.so
f7f0d000-f7f29000 r-xp 00000000 08:02 917507                             /lib/i386-linux-gnu/libgcc_s.so.1
f7f29000-f7f2a000 rwxp 0001b000 08:02 917507                             /lib/i386-linux-gnu/libgcc_s.so.1
f7f2a000-f7f2b000 rwxp 00000000 00:00 0 
f7f2b000-f7f61000 r-xp 00000000 08:16 15208227                           /mnt/data/Downloads/Ausfuehrbar/libstdc++-libc6.2-2.so.3
f7f61000-f7f72000 rwxp 00036000 08:16 15208227                           /mnt/data/Downloads/Ausfuehrbar/libstdc++-libc6.2-2.so.3
f7f72000-f7f75000 rwxp 00000000 00:00 0 
f7f75000-f7f78000 r--p 00000000 00:00 0                                  [vvar]
f7f78000-f7f7a000 r-xp 00000000 00:00 0                                  [vdso]
f7f7a000-f7f9d000 r-xp 00000000 08:02 917518                             /lib/i386-linux-gnu/ld-2.23.so
f7f9d000-f7f9e000 r-xp 00022000 08:02 917518                             /lib/i386-linux-gnu/ld-2.23.so
f7f9e000-f7f9f000 rwxp 00023000 08:02 917518                             /lib/i386-linux-gnu/ld-2.23.so
ff8f5000-ff916000 rwxp 00000000 00:00 0                                  [stack]

Tags: gnu程序消息solinuxlib错误xp
2条回答

您可以使用^{{cd1>}让此回溯转到stderr,然后使用^{{cd2>}删除错误消息,如

$ LIBC_FATAL_STDERR_=1 ./hubbard.exc 2>/dev/null 

,有关详细信息,请参见glibc backtrace - can't redirect output to file

我不是专家,但我相信这个旧软件不能很好地适应新的Ubuntu。我认为你应该找到一个更新的程序,它与引起错误的程序具有相同的功能,或者只是找到一个新版本的程序。在

相关问题 更多 >