如何隐藏错误消息:“ ./ hubbard.exc中的错误:大小与prev_size损坏”?

时间:2018-07-06 18:50:58

标签: python bash ubuntu error-suppression

我有一个非常老的程序(从80年代后期开始),是用C ++编写的,我设法以某种方式使其在Ubuntu 16.04 64Bit上运行。即使最后产生错误,结果也可以。由于现在似乎无法编译该程序(它使用了NAG专有库的非常旧的版本),因此我无法在源代码中解决该问题,而不得不忍受该错误。我需要循环运行此程序,并且错误消息完全使我的屏幕混乱,并阻止我看到相关消息。我试图通过使用诸如./hubbard.exc 2>/dev/null之类的调用和诸如&>/dev/null之类的变体来抑制该消息,但是错误消息仍会显示在屏幕上。因此,我得出结论,该错误消息既未打印到stdout也没有打印到stderr

对于能帮助您消除此错误消息的任何帮助,或者对于如何禁止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]

2 个答案:

答案 0 :(得分:4)

您可以使用export LIBC_FATAL_STDERR_=1将此回溯信息转到stderr,然后使用2>/dev/null删除该错误消息,例如

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

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

答案 1 :(得分:-1)

我不是专家,但是我相信这个旧软件不能很好地适应“新” Ubuntu。我相信您应该或者找到一个更令人讨厌的程序,该程序具有与引起错误的错误相同的功能,或者只是找到该程序的新版本。