0

在将我的系统升级到 Scientific Linux 6 之前,我有这个运行良好的 C 代码。它有一些 OpenGL 的东西,它使用这些选项在 gcc 中编译

-lncurses -lX11 -lGL -lm -g 

但随后它出现了故障。在这篇文章之后我得到了这个

bash-4.1$ gdb test core.5593
GNU gdb (GDB) Red Hat Enterprise Linux (7.2-60.el6_4.1)
Copyright (C) 2010 Free Software Foundation, Inc.
License GPLv3+: GNU GPL version 3 or later <http://gnu.org/licenses/gpl.html>
This is free software: you are free to change and redistribute it.
There is NO WARRANTY, to the extent permitted by law.  Type "show copying"
and "show warranty" for details.
This GDB was configured as "x86_64-redhat-linux-gnu".
For bug reporting instructions, please see:
<http://www.gnu.org/software/gdb/bugs/>...
Reading symbols from /home/kde8/test...(no debugging symbols found)...done.
[New Thread 5593]
Missing separate debuginfo for 
Try: yum --disablerepo='*' --enablerepo='*-debug*' install /usr/lib/debug/.build-id/50/fc20fea18a6f375789f0f86e28f463d50714fd
Reading symbols from /usr/lib64/libX11.so.6...(no debugging symbols found)...done.
Loaded symbols for /usr/lib64/libX11.so.6
Reading symbols from /usr/lib64/nvidia/libGL.so.1...(no debugging symbols found)...done.
Loaded symbols for /usr/lib64/nvidia/libGL.so.1
Reading symbols from /lib64/libm.so.6...(no debugging symbols found)...done.
Loaded symbols for /lib64/libm.so.6
Reading symbols from /lib64/libncurses.so.5...(no debugging symbols found)...done.
Loaded symbols for /lib64/libncurses.so.5
Reading symbols from /lib64/libc.so.6...(no debugging symbols found)...done.
Loaded symbols for /lib64/libc.so.6
Reading symbols from /lib64/libtinfo.so.5...(no debugging symbols found)...done.
Loaded symbols for /lib64/libtinfo.so.5
Reading symbols from /usr/lib64/libxcb.so.1...(no debugging symbols found)...done.
Loaded symbols for /usr/lib64/libxcb.so.1
Reading symbols from /lib64/libdl.so.2...(no debugging symbols found)...done.
Loaded symbols for /lib64/libdl.so.2
Reading symbols from /usr/lib64/nvidia/libGLcore.so.1...(no debugging symbols found)...done.
Loaded symbols for /usr/lib64/nvidia/libGLcore.so.1
Reading symbols from /usr/lib64/nvidia/tls/libnvidia-tls.so.1...(no debugging symbols found)...done.
Loaded symbols for /usr/lib64/nvidia/tls/libnvidia-tls.so.1
Reading symbols from /usr/lib64/libXext.so.6...(no debugging symbols found)...done.
Loaded symbols for /usr/lib64/libXext.so.6
Reading symbols from /lib64/ld-linux-x86-64.so.2...(no debugging symbols found)...done.
Loaded symbols for /lib64/ld-linux-x86-64.so.2
Reading symbols from /usr/lib64/libXau.so.6...(no debugging symbols found)...done.
Loaded symbols for /usr/lib64/libXau.so.6
Core was generated by `./test'.
Program terminated with signal 11, Segmentation fault.
#0  0x0000000000408169 in InitConds ()
Missing separate debuginfos, use: debuginfo-install glibc-2.12-1.107.el6.x86_64 libX11-1.5.0-4.el6.x86_64 libXau-1.0.6-4.el6.x86_64 libXext-1.3.1-2.el6.x86_64 libxcb-1.8.1-1.el6.x86_64 ncurses-libs-5.7-3.20090208.el6.x86_64

我尝试了 debuginfo 安装,但收到此消息:

No debuginfo packages available to install
4

2 回答 2

1

从您的命令行输入以下命令: gdb [program name] 这将打开 gdb 调试器。 run [command line arguments] 现在程序将出现段错误。 backtrace 这将显示您的程序在哪里崩溃。

于 2013-06-24T20:53:51.223 回答
1

尝试使用 实际运行程序gdb,而不仅仅是加载核心文件。它可能更有帮助。您也可以尝试使用valgrind它来运行它:它是用于内存调试的绝佳工具。即使没有调试信息,您也可以希望找出源文件中的哪一行触发了崩溃。

确保在启用调试的情况下编译程序 ( gcc -ggdb)。

于 2013-06-24T19:30:10.587 回答