我在编写的c程序中遇到过段错误。通常,我能够在gdb中运行该程序,这将让我知道问题发生在哪一行,以便我能够修复它。但是,无论出于何种原因,此时没有错误提供行号。
什么原因可能导致gdb无法返回段错误的行号?
我通常使用-g进行编译,在这种情况下我也尝试了-ggdb,这会得到相同的结果。 Gdb确实说线程已退出代码3221225477,这是一个段错误,但这并没有真正提供足够的信息才有用。
编辑:gdb的输出:
[Thread 10064.0x2aa0 exited with code 3221225477]
[Thread 10064.0x2c3c exited with code 3221225477]
[Thread 10064.0x1e40 exited with code 3221225477]
[Inferior 1 (process 10064) exited with code 030000000005]
编译器选项(来自sublime text 2 build文件):
gcc $file_base_name.c -std=gnu99 -I../zdk -L../zdk -lzdk -lncurses -g -o $file_base_name
编辑:事实证明我正在尝试访问释放的内存。问题仍然存在:为什么gdb没有告诉我这是发生了哪一行?