PCDVD數位科技討論區
PCDVD數位科技討論區   註冊 常見問題 標記討論區為已讀

回到   PCDVD數位科技討論區 > 其他群組 > 疑難雜症區
帳戶
密碼
 

  回應
 
主題工具
whatsnew
Senior Member
 
whatsnew的大頭照
 

加入日期: Jun 2002
文章: 1,464
記憶體錯誤導致程式結果出錯

想請問各位有在寫程式的前輩不知道有沒有碰像這類因記憶體有問題, 而導致結果錯誤的情況
我是用shell寫的,情況是在同樣參數指令,出錯時每次都停在不同地方,像是欄位原本是數值但錯誤時多了幾個字母變成字串的情況
但只要再重複幾次同樣的指令就可以順利執行
像這種情況只能換記憶體了嗎?
有碰過類似經驗的前輩可否分享類似經驗跟其他的解決方案
謝謝

我算新手,不然知道有沒有哪種語言對於這種錯誤能夠有效控制的?
     
      

此文章於 2016-07-26 01:38 AM 被 whatsnew 編輯.
舊 2016-07-26, 01:36 AM #1
回應時引用此文章
whatsnew離線中  
tvirus
Golden Member
 
tvirus的大頭照
 

加入日期: Jan 2003
您的住址: 惡運深淵
文章: 2,562
Shell...
不知道你Shell script是做了啥事,抓了啥資料
搞不好根本就抓錯東西

有效控制?那就catch error還是檢查值,東西也許有問題造成的話,變因要先減少才能抓

別到時根本慰錯資料寫錯script就怪記憶體...
 
舊 2016-07-26, 02:35 AM #2
回應時引用此文章
tvirus離線中  
whatsnew
Senior Member
 
whatsnew的大頭照
 

加入日期: Jun 2002
文章: 1,464
謝謝您的意見哦
所有的變數都來自參數及輸入的資料且都是固定形式的,也沒有任何來自像時間這種隨時在變的變數
這樣情況下,跑同樣指令參數,也沒改code,有時跑成功,有時沒有,這樣不會是給錯資料吧
而且我也換到有ECC RAM的電腦跑就沒有出現上面的問題
所以我才認為記憶體有問題所造成

此文章於 2016-07-26 03:41 AM 被 whatsnew 編輯.
舊 2016-07-26, 03:37 AM #3
回應時引用此文章
whatsnew離線中  
jarshen
Amateur Member
 

加入日期: Mar 2013
文章: 38
引用:
作者whatsnew
謝謝您的意見哦
這樣情況下,跑同樣指令參數,也沒改code,有時跑成功,有時沒有,這樣不會是給錯資料吧
而且我也換到有ECC RAM的電腦跑就沒有出現上面的問題
所以我才認為記憶體有問題所造成


一般這種情況首先要懷疑的是自己的code, 可能你的 source code 就出了問題, 例如 記憶體 overflow 之類的, 而不是懷疑硬體, 這機率比起你的code有問題實在低的多.

致於換了 EEC RAM 的電腦就正常, 這可能只是運氣, 因為此台電腦的 OS與記憶體的 configure 都不同, 可能是有問題的code 沒覆蓋到重要的地方, 這種像現在軟體界是常見的.
舊 2016-07-26, 09:12 AM #4
回應時引用此文章
jarshen離線中  
cxh
Major Member
 
cxh的大頭照
 

加入日期: Sep 2001
您的住址: 工廠苦命人
文章: 230
這種情況,你可以先換你懷疑的記憶體,或是換台電腦執行..
但情況應該不會改變...(照樣出包..)

很有可能你的CODE 出問題,只是你不知道而已 ,找找看,指標...
未正確宣告存取大小(範圍),

是不是你有執行類似 存取記憶體區塊,打包,解包的動作..??
自己曾發生過類似問題..情況跟你的一樣
就是打包資料存入,解出來的不是先前存入資料.

後來才知道,方法用錯了..@@


Sample code : Pascal


e.g.
----打包---
Ts.AddObject('1',@sendrc); // 存入結構

--讀取---
rcvrc :=Prc100item(ts.Objects[0])^; //讀取訊息


你參考看看
舊 2016-07-26, 11:11 AM #5
回應時引用此文章
cxh離線中  
whatsnew
Senior Member
 
whatsnew的大頭照
 

加入日期: Jun 2002
文章: 1,464
我的做東西很簡單
只是用awk重複輸出同一筆資料,然後跟另一個檔案paste在一起而己
但awk重複輸出的那N筆資料就有幾行是不是重複的資料
ram最多才用8mb我想不會是ram overflow吧
舊 2016-07-26, 01:08 PM #6
回應時引用此文章
whatsnew離線中  
tvirus
Golden Member
 
tvirus的大頭照
 

加入日期: Jan 2003
您的住址: 惡運深淵
文章: 2,562
先debug吧,跟RAM的關聯性小到想哭
舊 2016-07-26, 04:45 PM #7
回應時引用此文章
tvirus離線中  
jarshen
Amateur Member
 

加入日期: Mar 2013
文章: 38
引用:
作者whatsnew
我的做東西很簡單
只是用awk重複輸出同一筆資料,然後跟另一個檔案paste在一起而己
但awk重複輸出的那N筆資料就有幾行是不是重複的資料
ram最多才用8mb我想不會是ram overflow吧


你這台電腦可以正常執行一般工作嗎? 如果平常都可以正常使用, 那可以確定的說記憶體出問題的機會小的可以忽略.
因為你隨便執行個自己的小程式就記憶體出錯, 那怎麼可能跑一個複雜作業系統還能正常的運作.
舊 2016-07-26, 05:20 PM #8
回應時引用此文章
jarshen離線中  
27681049
Advance Member
 

加入日期: Jul 2012
您的住址: 新竹
文章: 409
懷疑硬體,換台機器是不就知道了!

軟體要去包容硬體錯誤,是本末倒置的做法...
舊 2016-07-26, 05:33 PM #9
回應時引用此文章
27681049離線中  
打工吧魔王大人
*停權中*
 
打工吧魔王大人的大頭照
 

加入日期: May 2014
您的住址: 某個不大不小的島
文章: 628
multi thread/process 的問題?
請不要共用同一個記憶體區塊。
舊 2016-07-26, 07:47 PM #10
回應時引用此文章
打工吧魔王大人離線中  


    回應


POPIN
主題工具

發表文章規則
不可以發起新主題
不可以回應主題
不可以上傳附加檔案
不可以編輯您的文章

vB 代碼打開
[IMG]代碼打開
HTML代碼關閉



所有的時間均為GMT +8。 現在的時間是07:33 PM.


vBulletin Version 3.0.1
powered_by_vbulletin 2025。