pure virtual finction call 及 abnormal program termination錯誤 |
答題得分者是:aftcast
|
GGL
資深會員 ![]() ![]() ![]() ![]() ![]() 發表:104 回覆:600 積分:335 註冊:2006-11-05 發送簡訊給我 |
程式是放在工廠的電腦,用來判別面板是否有任何異常,透過攝影鏡頭取像
程式內有使用thread以及virtual function,因為是接手別人寫的程式,執行時不定期會出現 R6025-pure virtual finction call的錯誤訊息 按確定之後程式就會被關閉 因為是工廠電腦,出錯當時人都不再旁邊,而且是隨機發生,只能根據操作員的回報,實在很難判斷當時的情況 已經參考過關於Pure Virtual Function Call的除錯問題 但是因為工廠電腦並無安裝bcb,因此無法利用pwipwi版主提供的方法(觀看call stack)來解決 請問有什麼方法或工具可以查出出現這種錯誤的可能原因嗎? 看上述這篇討論,問題點似乎在multi-thread,但是又不太確定,工廠沒辦法帶電腦進去測試 ![]() 或者我還需要提供那些資訊給各位先進,還請指教,非常感謝 ps.程式使用BCB6開發,作業系統為XP SP3 |
aftcast
站務副站長 ![]() ![]() ![]() ![]() ![]() 發表:81 回覆:1485 積分:1763 註冊:2002-11-21 發送簡訊給我 |
根據經驗來看。應該是如同dllee副站長所遇到的一樣。是屬於thread未死時object A就先死的情形。
結決的辦法可以例用critical section 放在thread 一開始時(即第一行)Acquire,而在thread結束前一刻把critical section Release。此外,在objectA 的 delete 前也放同一個critical section並Acquire。 如此就可以讓確保 object A一定會於 thread結束時才被delete,否則就會因為 critical section還保護中而暫時hang住直到thread結束。 此類問題正確講應該是歸類至 thread 的同步問題。 比如 A object 正在run 該object 的某方法(不一定要是實作pure virtual),而另一個thrad(比如主thread),就任意的把該object給 delete…
------
蕭沖 --All ideas are worthless unless implemented-- C++ Builder Delphi Taiwan G+ 社群 http://bit.ly/cbtaiwan
編輯記錄
aftcast 重新編輯於 2010-08-30 18:24:47, 註解 無‧
|
GGL
資深會員 ![]() ![]() ![]() ![]() ![]() 發表:104 回覆:600 積分:335 註冊:2006-11-05 發送簡訊給我 |
感謝affcast的回覆,debug超久的,終於找到問題,果然是thread同步出了問題
===================引 用 aftcast 文 章=================== 根據經驗來看。應該是如同dllee副站長所遇到的一樣。是屬於thread未死時object A就先死的情形。 結決的辦法可以例用critical section 放在thread 一開始時(即第一行)Acquire,而在thread結束前一刻把critical section Release。此外,在objectA 的 delete 前也放同一個critical section並Acquire。 如此就可以讓確保 object A一定會於 thread結束時才被delete,否則就會因為 critical section還保護中而暫時hang住直到thread結束。 此類問題正確講應該是歸類至 thread 的同步問題。 比如 A object 正在run 該object 的某方法(不一定要是實作pure virtual),而另一個thrad(比如主thread),就任意的把該object給 delete… |
本站聲明 |
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。 2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。 3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇! |