C++ 为什么gdb不为这个简单的hello world程序工作?
代码(m1.cpp): 当我在没有设置任何断点的情况下运行时,它运行时不会出错 应要求: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
(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