2012-01-12 164 views
3

在很多情況下,在調試版本中工作的代碼在發佈版本中無法正常工作。我經常遇到這些問題,就像發生地震一樣。哪個大啤酒可以幫我給點想法?Qt調試版本和Qt發佈版本有什麼區別?

+1

調試版本通常比較慢,大,並且佔用更多的內存。它們具有調試符號,這使得調試變得可能和簡單。發佈版本中沒有所有非生產信息。 – Blender 2012-01-12 04:06:13

+0

謝謝你回答 – 2012-01-12 04:13:39

+0

這是Qt特有的問題,還是調試/發佈版本的* any *軟件? – spraff 2012-01-12 12:23:44

回答

4

通常,如果一個應用程序在調試中工作,但不在釋放中,這是因爲某些變量或內存未正確設置爲初始值。

在調試版本中,變量和內存通常設置爲零,但在發佈時跳過此步驟以節省時間。還會在對象和分配的內存周圍添加額外的數據,作爲檢測內存覆蓋的障礙。

有時(很少)在發佈版本的優化引入錯誤

+2

所以真的!有人可以補充說,使用valgrind可以幫助確定這些問題的根源。 – FFox 2012-01-12 06:38:46

+0

@FFox所以真的!我在2個月的時間裏發現了一個bug(顯然是無害的),valgrind發現我的像素陣列溢出是由於錯誤地實現了輪迴函數。 – UmNyobe 2012-01-12 14:50:46

+0

@Martin偶爾在QT中發現了你的一個msg,但是前些天跟蹤器發現了這個msg。 :) – karlphillip 2012-01-13 11:52:22

相關問題