【问题标题】:Checking the reason for segmentation fault on Linux server在 Linux 服务器上检查分段错误的原因
【发布时间】:2016-03-08 07:57:37
【问题描述】:

我在远程服务器上部署了一个用 C 语言编写的 Linux 脚本,多个客户端可以连接到该服务器。由于某种原因,脚本崩溃了,当我尝试重新启动它时,我遇到了分段错误。有什么方法可以在服务器端检查是什么阻止了我的脚本启动,并抛出分段错误错误。

【问题讨论】:

  • 允许服务器创建core dump,然后复制它并与调试器一起使用。

标签: c linux


【解决方案1】:

从启用核心转储开始:

$ ulimit -c unlimited

现在运行脚本直到出现段错误。这将在您的工作目录中创建一个核心转储文件。

接下来,使用 GDB(或它的任何前端)对其进行调试(注意,如果无法在服务器上调试,可以将文件复制到本地计算机):

$ gdb -c <core_file>

不要忘记添加符号文件:

GDB> file my-prog

如果很容易重现问题,并且您可以直接在服务器上调试(使用 SSH 等),您可以简单地潜入并使用附加的调试器启动该过程:

$ gdb my-prog

【讨论】:

  • 什么是符号文件,它的用途是什么?
  • @Asusgates 这是一个文件,GDB 使用该文件来了解程序引用的某些内存地址处的函数、变量等的名称。
  • @Asusgates 也许同样重要的是要提到最好使用-g GCC 标志编译您的代码。
  • GDB&gt; 表示在 GDB shell 内部,您可以使用命令 gdb 运行它
猜你喜欢
  • 1970-01-01
  • 2011-07-12
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2018-01-16
  • 2014-08-20
  • 2018-12-20
  • 1970-01-01
相关资源
最近更新 更多