程式出現 Segmentation fault (core dumped) [論壇 - Ubuntu 程式設計]


正在瀏覽:   1 名遊客


 到底部   前一個主題   下一個主題  [無發表權] 請登錄或者註冊

« 1 (2) 3 »


回覆: 程式出現 Segmentation fault (core dumped)

註冊日期:
2009/12/6 10:32
所屬群組:
已註冊使用者
等級: 71
HP : 1404 / 1756
MP : 4456 / 51336
EXP: 24
離線
A segmentation fault (often shortened to segfault), bus error, or access violation is generally an attempt to access memory that the CPU cannot physically address.

segmentation fault 就是企圖存取 記憶體 但是無法實體定位址

2013/9/12 17:15
應用擴展 工具箱
回覆: 程式出現 Segmentation fault (core dumped)
會員一級
註冊日期:
2013/9/12 9:18
所屬群組:
已註冊使用者
等級: 3
HP : 0 / 57
MP : 7 / 1053
EXP: 31
離線
poloshiao 寫到:
在同一臺電腦
先使用 server 版本的 ISO 安裝
再安裝 桌面套件
例如
Ubuntu 桌面 安裝 ubuntu-desktop
Xubuntu 桌面 安裝 xubuntu-desktop
等等

進一步參閱
http://www.ubuntu-tw.org/modules/newbb/viewtopic.php?viewmode=flat&type=&topic_id=72818&forum=15

如果你要在不同電腦中 通用這個程式
要在程式中考慮到 不同電腦中 RAM 的差異

您好:
看起來似乎很麻煩的樣子。
一般 Linux 下的程式應該也是隨便在一套系統開發完,再 release 到各個不同的系統吧,理論上除非 library 內的函式完全不同(應該可以向下相容吧),不然應該都可以執行才是吧?第一次寫 linux 的程式,不知道這樣的理解對不對…

一般在 window 下開發的程式,只要在任意一台編譯好,就可以在 win xp/win7 下作業了,並不需要去理會 RAM 的差異

不知道 linux 跟 window 是否差異有那麼大?

謝謝您

2013/9/12 17:23
應用擴展 工具箱
回覆: 程式出現 Segmentation fault (core dumped)
會員一級
註冊日期:
2013/9/12 9:18
所屬群組:
已註冊使用者
等級: 3
HP : 0 / 57
MP : 7 / 1053
EXP: 31
離線
UGP 寫到:
個人想法不同,不見得是記憶體的問題

你的Desktop和Server使用的作業系統位元是一樣32或64bit嗎?機器架構(x86、ARM等等)有相同嗎?C函式庫版本有一樣嗎?

只從原本的資訊很難猜測出發生問題的實際原因
建議用gdb去分析程式在Server執行時產生的Core dump,從裡面找出crash的原因

關於分析Core dump請參考:
http://blog.ddup.us/?p=176
http://www.cppblog.com/kongque/archive/2011/03/07/141262.aspx

您好:
Desktop: Intel Core2 雙核心
Server: Intel 應該是單核心
gcc: 4:4.7.3-1ubu
(Server 跟 Desktop 會用不一樣的函式庫?)

嗯,我會試著用 gdb 試試看

謝謝您

2013/9/12 17:31
應用擴展 工具箱
回覆: 程式出現 Segmentation fault (core dumped)
會員一級
註冊日期:
2013/9/12 9:18
所屬群組:
已註冊使用者
等級: 3
HP : 0 / 57
MP : 7 / 1053
EXP: 31
離線
幻影火 寫到:
你有重新再server上面編譯?

雖然理論上系統一樣,但是如果你程式沒有重新編譯。是非常有可能問題的。

您好:
如果把程式碼放到 server 上編譯執行是沒有問題的!

因為我想在 desktop 上寫程式,寫好之後再上傳到 server 執行,萬一以後的 server 是利用的,跟我現在的系統是不一樣的時候,那是否就不能執行了,必須用跟 server 一樣的系統編譯程式才行?如果是這樣就很麻煩了…

謝謝您

2013/9/12 17:35
應用擴展 工具箱
回覆: 程式出現 Segmentation fault (core dumped)

註冊日期:
2009/12/6 10:32
所屬群組:
已註冊使用者
等級: 71
HP : 1404 / 1756
MP : 4456 / 51336
EXP: 24
離線
一般 Linux 下的程式應該也是隨便在一套系統開發完,再 release 到各個不同的系統吧

如果未來要發佈程式的到不同作業系統的 server(如:Ubuntu, Debian, RadHat...)時,是否也會有這種問題?

CPU / RAM 一般應該是 linux-kernel 在負責

請詳細參閱
Linux kernel / History

Linux 許多發行版
每個發行版都把 Linus Torvalds 發行的 Linux kernel 原版稍加修改 作爲其 發行版的 kernel
所以 每個發行版的 linux-kernel 可能都稍微不同
但是 稍用一些 功夫 就可以知道 這些不同 在哪裏 不會很難

Preemption
是 程式設計人員 需要關心的差異

Ubuntu 基於 debian
Ubuntu 的 Linux-kernel
與 debian 的 linux-kernel 稍有不同
與 Linux 其它版本 也是不同

表面看起來 好像很複雜
但是因爲 Linux 的程式源碼 都是 Open 網路上大都可以取得
反而是 很容易就能夠學會的

2013/9/12 17:47
應用擴展 工具箱
回覆: 程式出現 Segmentation fault (core dumped)
會員一級
註冊日期:
2013/9/12 9:18
所屬群組:
已註冊使用者
等級: 3
HP : 0 / 57
MP : 7 / 1053
EXP: 31
離線
我試著用 gdb 除錯,得到的結果是

Core was generated by `./test'.
Program terminated with signal 11, Segmentation fault.
#0 0x04831608 in ?? ()
(gdb)

這個應該是指程式的第一行就錯了嗎
int main(void)
{
printf("hello\n");
return 0;
}

int main(void) 這個會有問題嗎?

2013/9/12 17:54
應用擴展 工具箱
回覆: 程式出現 Segmentation fault (core dumped)
管理員
註冊日期:
2012/1/14 18:41
所屬群組:
討論區管理群
等級: 20
HP : 0 / 480
MP : 159 / 11099
EXP: 23
離線
seeing350 寫到:
幻影火 寫到:
你有重新再server上面編譯?

雖然理論上系統一樣,但是如果你程式沒有重新編譯。是非常有可能問題的。

您好:
如果把程式碼放到 server 上編譯執行是沒有問題的!

因為我想在 desktop 上寫程式,寫好之後再上傳到 server 執行,萬一以後的 server 是利用的,跟我現在的系統是不一樣的時候,那是否就不能執行了,必須用跟 server 一樣的系統編譯程式才行?如果是這樣就很麻煩了…

謝謝您


建議是在server版本上面編譯會比較好,這樣會確保他不會有問題,畢竟系統不是完全一樣,所以再程式方面會有差距

2013/9/12 20:58
應用擴展 工具箱
回覆: 程式出現 Segmentation fault (core dumped)
管理員
註冊日期:
2012/1/14 18:41
所屬群組:
討論區管理群
等級: 20
HP : 0 / 480
MP : 159 / 11099
EXP: 23
離線
seeing350 寫到:
我試著用 gdb 除錯,得到的結果是

Core was generated by `./test'.
Program terminated with signal 11, Segmentation fault.
#0 0x04831608 in ?? ()
(gdb)

這個應該是指程式的第一行就錯了嗎
int main(void)
{
printf("hello\n");
return 0;
}

int main(void) 這個會有問題嗎?

出錯之後輸入bt,再把顯示的訊息給我。

2013/9/12 20:59
應用擴展 工具箱
回覆: 程式出現 Segmentation fault (core dumped)
會員一級
註冊日期:
2013/9/12 9:18
所屬群組:
已註冊使用者
等級: 3
HP : 0 / 57
MP : 7 / 1053
EXP: 31
離線
您好:
輸入 bt 後還是出現一樣的訊息
#0 0x04831608 in ?? ()

謝謝

2013/9/12 21:24
應用擴展 工具箱
回覆: 程式出現 Segmentation fault (core dumped)
會員五級
註冊日期:
2008/10/7 21:19
所屬群組:
已註冊使用者
等級: 36
HP : 0 / 896
MP : 661 / 29251
EXP: 85
離線
用gcc編譯時可以加上參數-g,這樣編譯好的執行檔會包含方便gdb使用的除錯訊息

2013/9/12 21:38
I′m UGP
應用擴展 工具箱

« 1 (2) 3 »

 [無發表權] 請登錄或者註冊


可以查看帖子.
不可發帖.
不可回覆.
不可編輯自己的帖子.
不可刪除自己的帖子.
不可發起投票調查.
不可在投票調查中投票.
不可上傳附件.
不可不經審核直接發帖.