在 Linux 服务器上检查分段错误的原因

Posted

技术标签:

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

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

【问题讨论】:

允许服务器创建core dump,然后复制它并与调试器一起使用。 【参考方案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 运行它

以上是关于在 Linux 服务器上检查分段错误的原因的主要内容,如果未能解决你的问题,请参考以下文章

R Shiny 服务器分段错误

分段错误 Opencv linux c++

分段错误(核心转储)向 linux 发出窗口

R Shiny服务器分段错误

在 Linux coredump 中发现 Perl 分段错误

分段错误原因未知Opencv