2016-03-08 56 views
1

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

+2

允许服务器创建[*核心转储*](https://en.wikipedia.org/wiki/Core_dump),然后将其复制并与调试器一起使用。 –

回答

3

通过使核心开始了转储:

$ ulimit -c unlimited 

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

接下来,使用GDB(或其中的任何前端)进行调试(请注意,您可以将文件复制到本地机器上,如果你不能在服务器上调试):

$ gdb -c <core_file> 

别别忘了添加符号文件:

GDB> file my-prog 

如果很容易重现该问题,并提供您可以直接在服务器上调试(使用SSH或这样的),你可以简单地潜水,并以启动该进程调试器附件:

$ gdb my-prog 
+0

什么是符号文件,它的用途是什么? –

+0

@Asusgates这是一个GDB用来知道程序引用的某些内存地址的函数,变量等名称的文件。 –

+0

@Asusgates也许同样重要的是要提到最好用'-g' GCC标志编译你的代码。 –