C++ 为什么gdb不为这个简单的hello world程序工作?

C++ 为什么gdb不为这个简单的hello world程序工作?,c++,linux,segmentation-fault,gdb,C++,Linux,Segmentation Fault,Gdb,代码(m1.cpp): 当我在没有设置任何断点的情况下运行时,它运行时不会出错 应要求: (gdb) bt #0 strcmp () from /lib64/ld-linux-x86-64.so.2 #1 in check_match.12104 () from /lib64/ld-linux-x86-64.so.2 #2 in do_lookup_x () from /lib64/ld-linux-x86-64.so.2 #3 in _dl_lookup_symbol_x () fro

代码(m1.cpp):

当我在没有设置任何断点的情况下运行时,它运行时不会出错

应要求:

(gdb) bt
#0  strcmp () from /lib64/ld-linux-x86-64.so.2
#1  in check_match.12104 () from /lib64/ld-linux-x86-64.so.2
#2  in do_lookup_x () from /lib64/ld-linux-x86-64.so.2
#3  in _dl_lookup_symbol_x () from /lib64/ld-linux-x86-64.so.2
#4  in _dl_relocate_object () from /lib64/ld-linux-x86-64.so.2
#5  in dl_main () from /lib64/ld-linux-x86-64.so.2
#6  in _dl_sysdep_start () from /lib64/ld-linux-x86-64.so.2
#7  in _dl_start () from /lib64/ld-linux-x86-64.so.2
#8  in _start () from /lib64/ld-linux-x86-64.so.2
#9  in ?? ()

我在GNU gdb 7.11.1版中检查了这一点。它在里面工作得很好。 我首先编译了同一个程序,并使用:

g++ -g m1.cpp
然后,在gdb中运行可执行文件,如下所示:

gdb-q./a.out

做了和你提到的一样的事。它工作得很好。
更新您的gdb,再次检查并告知

我能够复制OP观察到的行为(使用相同的编译并获得相同的回溯)。这种行为在GDB和GCC范围内持续存在。我注意到当我打开外壳时,症状消失了。在我的正常环境中,我使用tcsh(版本1.15.00)。如果设置了SHELL,那么(我相信)gdb将使用tcsh启动。如果我取消设置SHELL,gdb将使用sh启动。这足以让我取得进展。我没有一个清晰的解释来说明tcsh中会有什么不同,但如果其他人有相同的行为,它可能会对这个问题有更多的解释。

无法使用GDB 7.12.0复制。您是否建议我需要更新GDB?我所在的环境被许多其他程序员使用,所以我真的很好奇为什么它只发生在我身上。你是如何编译你的代码的?您是如何安装gdb的?请发布
bt
output。程序在gdb之外运行正常吗?
(gdb) bt
#0  strcmp () from /lib64/ld-linux-x86-64.so.2
#1  in check_match.12104 () from /lib64/ld-linux-x86-64.so.2
#2  in do_lookup_x () from /lib64/ld-linux-x86-64.so.2
#3  in _dl_lookup_symbol_x () from /lib64/ld-linux-x86-64.so.2
#4  in _dl_relocate_object () from /lib64/ld-linux-x86-64.so.2
#5  in dl_main () from /lib64/ld-linux-x86-64.so.2
#6  in _dl_sysdep_start () from /lib64/ld-linux-x86-64.so.2
#7  in _dl_start () from /lib64/ld-linux-x86-64.so.2
#8  in _start () from /lib64/ld-linux-x86-64.so.2
#9  in ?? ()
g++ -g m1.cpp