【问题标题】:how do I get the line number which is causing segmentation fault? [duplicate]如何获取导致分段错误的行号? [复制]
【发布时间】:2018-05-18 09:10:25
【问题描述】:

我想知道如何才能知道哪一行在 unix 终端中导致 c 语言中的分段错误

【问题讨论】:

  • 在调试器(例如 GDB)中运行您的代码。
  • 一次一行地浏览你的代码,直到它崩溃。
  • 分段错误是未定义行为的症状。正在发生的线路不一定是导致它的线路。
  • 代码崩溃的地方不一定是崩溃的原因。通过valgrind 运行您的代码,它将准确地告诉您您做错了什么。
  • @oliverCharlesworth 你能告诉我如何在mac终端上使用gdb吗?

标签: c debugging error-handling segmentation-fault


【解决方案1】:
  1. 使用调试符号重建(编译时添加-g标志)。
  2. 通过gdb 运行。
    • gdb <binary name>
    • (在gdbrun <binary name> <args>
  3. 崩溃时,使用backtrace 命令查看堆栈跟踪。有问题的行将位于堆栈的顶部,但您可能需要进一步往下看,以防段错误出现在某些库代码中。

【讨论】:

    猜你喜欢
    • 2011-11-22
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-12-29
    • 2021-11-06
    • 2013-10-27
    • 1970-01-01
    • 2019-09-25
    相关资源
    最近更新 更多