【问题标题】:Segmentation Fault Using LLDB使用 LLDB 的分段错误
【发布时间】:2020-02-09 19:57:02
【问题描述】:

当我在 Mac 终端上使用 lldb 调试我的 .c 文件时,我无法找到分段错误的位置。我已经多次调试代码,但仍然产生相同的错误。有人可以帮我解释为什么我可以找到分段错误的位置。 enter image description here

【问题讨论】:

  • 你能把你的调试器输出复制为代码吗?这样会更容易阅读。

标签: debugging segmentation-fault lldb


【解决方案1】:

在不知道您的代码在做什么的情况下,我建议使用像 valgrind 这样的工具,而不仅仅是普通的调试器。它旨在查找 C/C++/FORTRAN 等低级语言的内存问题。例如,它会告诉您是否尝试使用对于数组来说太大的索引。

quick start guide,试试valgrind --leak-check=yes myprog arg1 arg2

【讨论】:

    【解决方案2】:

    使用 lldb 中的bt 命令查看调用堆栈。您已经调用了像 scanf() 这样的 libc 函数,并且很可能向它传递了一个无效的参数。当你看到调用堆栈时,你会看到一个堆栈帧,上面有你自己的代码,比如说它是第 3 帧。您可以使用f 3 选择该框架,并可以使用v 命令查看变量以了解传递给导致崩溃的libc 函数的参数。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-03-05
      • 2015-02-28
      • 2015-11-16
      • 2012-01-06
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多