在 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>
表示在 GDB shell 内部,您可以使用命令 gdb
运行它以上是关于在 Linux 服务器上检查分段错误的原因的主要内容,如果未能解决你的问题,请参考以下文章