当我在Mac终端上使用lldb调试我的.c文件时,我有些找不到分段错误的位置。我已经多次调试了代码,但它仍然产生相同的错误。有人可以帮助我为什么可以找到分段错误的位置。在此处输入图像描述
使用 lldb 中的bt
命令查看调用堆栈。 您已经调用了像scanf()
这样的 libc 函数,并且很可能向其传递了无效参数。 当你看到调用堆栈时,你会看到一个堆栈帧,上面有自己的代码,假设它是帧#3。 您可以使用f 3
选择该帧,也可以使用v
命令查看变量,以了解传递给 libc 函数的参数导致了崩溃。
在不知道你的代码在做什么的情况下,我建议使用像valgrind这样的工具,而不仅仅是一个普通的调试器。它旨在查找较低级别语言(如 C/C++/FORTRAN(的内存问题。例如,它会告诉您是否尝试使用对于数组来说太大的索引。
在快速入门指南中,尝试valgrind --leak-check=yes myprog arg1 arg2