当你的程序出现 “段错误 (核心已转储)” 的错误时,这通常意味着你的程序访问了无效的内存地址,导致程序崩溃。
你可以使用 gdb 调试器来查找在程序的哪一行代码导致了这个错误。下面是使用 gdb 调试器查找错误的一般步骤:
在编译你的程序时,使用 -g 选项生成调试信息。这样 gdb 就能够找到程序中的源代码和行号,如:
$(CC) -o AVencoder $(SRCS) $(CFLAGS) $(LDFLAGS) -g
使用 gdb 运行你的程序。你可以在命令行中输入以下命令来运行程序:
gdb <程序名>
使用 run 命令运行你的程序。你可以在 gdb 的命令提示符下输入以下命令来运行程序:
run
当程序崩溃时,gdb 会提示你 “段错误 (核心已转储)”。你可以使用 bt 命令查看调用堆栈,找到在程序中哪一行代码导致了这个错误。你可以在 gdb 的命令提示符下输入以下命令来查看调用堆栈:
bt
使用 list 命令查看源代码。你可以在 gdb 的命令提示符下输入以下命令来查看源代码:
Copy code
list
使用 up 命令查看上一个函数的源代码,使用 down 命令查看下一个函数的源代码。你可以在 gdb 的命令提示符下输入以下命令来查看上一个函数的源代码:
up
你可以在 gdb 的命令提示符下输入以下命令来查看下一个函数的源代码:
down
使用 where 命令查看当前行号。你可以在 gdb 的命令提示符下输入以下命令来查看当前行号:
where
使用 print 命令查看变量的值。你可以在 gdb 的命令提示符下输入以下命令来查看变量的值:
print <变量名>
使用 watch 命令设置断点。你可以在 gdb 的命令提示符下输入以下命令来设置断点:
watch <表达式>
使用 next 命令单步调试。你可以在 gdb 的命令提示符下输入以下命令来单步调试:
next