??? 在linux下進行C程序時,難免會出現這里那里的錯誤,對于像段錯誤的調試,對于生手可能比較麻煩,無從下手,我想這是一個C程序員的必經的經歷。一旦出現這樣的錯誤是相當棘手的。相信調試過幾次樣的錯誤后再次遇到就能很輕松的解決了。
??? 段錯誤的產生主要是由于內存操作有誤,如訪問的數組越界,向空地址賦值,取值等。調試段錯誤是要借助gdb調試工具。對于那些立即出現的錯誤很好調試,如果是很時間才出現的錯誤,就可以通過生成core文件。通過調試core文件定位錯誤產生的地方,而有些錯誤并非是一眼能看出來。像在多線程情況下,在沒有保護的情況下操作數據庫時也會產生段錯誤。一個不可重入函數在單線程下運行沒有問題。可能到多線程情況下就會出現越界的情況。因而意識到多線程下的并發機制。
??? 對于死循環的調試,也可以借助gdb,當程序出現死循環時,將gdb attach到程序上,如果 是主進程序出現死循環,可以通過設斷點方法跟蹤,而對于多線程程序可以通過查看哪個線程在運行,基本上能定位錯誤出現的地方。