最后的Seg故障Main,提供GDB输出

时间:2015-03-04 07:42:32

标签: c segmentation-fault gdb ncurses

抱歉,我是c编程新手

正如标题所说,代码运行完美,直到它返回0的main结尾。然后给出了一个没有理由的seg错误。一些答案说,也许我并没有释放我所提出的所有内容,但我做到了。所以我尝试使用gdb来找出原因。这是我第一次使用它。

这是输出:

Program received signal SIGSEGV, Segmentation fault.
0x00007ffff7644f1d in ?? () from /lib/x86_64-linux-gnu/libc.so.6
(gdb) bt
#0  0x00007ffff7644f1d in ?? () from /lib/x86_64-linux-gnu/libc.so.6
#1  0x00007ffff76450aa in ?? () from /lib/x86_64-linux-gnu/libc.so.6
#2  0x00007ffff760365b in ?? () from /lib/x86_64-linux-gnu/libc.so.6
#3  0x00007ffff76036f5 in exit () from /lib/x86_64-linux-gnu/libc.so.6
#4  0x00007ffff75eaecc in __libc_start_main ()
   from /lib/x86_64-linux-gnu/libc.so.6
#5  0x0000000000400bc9 in _start ()

我的主要人物:

int main(int argc, char *argv[]) {

    if(argv[1] == NULL)
    {
        printf("Please enter the path to the map generating file as an argument.\n");
        exit(0);
    }

    run(getName(), argv[1]);
    return 0;
}

我的程序是一个ncurses程序,我可以(我相信我)成功创建屏幕然后关闭它。我已经检查过所有malloced变量都已被释放。

运行在一个不同的c文件中我绘制ncurses板。

任何帮助将不胜感激。

1 个答案:

答案 0 :(得分:0)

当腐败真的发生时,不确定gdb会给你确切的位置。 (回溯表明它与堆栈有关)

对于这类错误,最好的工具是 Valgrind ,用它运行您的应用。

(根据我的经验,使用Valgrind可以在几分钟内跟踪并消除内存损坏错误)