2016-03-08 43 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標誌編譯你的代碼。 –