2010-07-03 85 views
1

如果我理解正確,那麼釋放模式使程序運行速度快於在調試模式下運行程序。AdaGide:調試模式和釋放模式

如果必須先在調試模式下運行程序,然後切換到在釋放模式下運行程序,以便釋放模式在調試模式下正常運行時進行「跳過」檢查?還是能夠在開始時直接在發佈模式下直接運行程序?

現在談到AdaGide時,我在Compile下看到了選項調試模式和釋放模式。在釋放模式下放置複選標記是否需要讓AdaGide在發佈模式下運行程序?我正在使用GNAT GPL編譯器。

非常感謝...

回答

1

聲明:我不熟悉AdaGide的發佈和調試模式的細節。

一般來說,雖然...當至少調試標誌(-g)傳遞到編譯器,生成的目標文件將保留符號信息以供調試器使用

調試模式。它可能會傳遞其他選項,如啓用斷言的-gnata,以及用於將回調堆棧存儲在異常中的binder -E選項。

除非您使用了很多斷言(編譯指示斷言),否則調試和發佈模式之間在性能方面可能不存在顯着差異。調試版本的目標文件和可執行文件可能會因保留符號信息而顯着增大。

發佈模式可能會禁用運行時檢查 - 這可能會有明顯的性能影響,但將其作爲名義「發佈」模式的一部分將幾乎總是非常差 Ada要做的事情。作爲一般慣例,只有在性能要求要求時纔會禁止運行時檢查其中它實質上影響性能,並且只有在正式證明和/或徹底測試並驗證了這些代碼段以正確執行之後。

優化選項-O2等會對性能產生更大的影響,但最終的數量取決於代碼的結構和執行方式。因人而異。

0

您無法在調試模式下運行發佈程序。代碼可以用調試符號和狀態消息編譯,也可以在沒有它們的情況下編譯。如果代碼在調試模式下編譯,它將運行得更慢並佔用更多空間;如果它是在發佈模式下編譯的,它會很快運行並且更加緊湊。代碼編譯完成後,其模式不能更改。

我不熟悉AdaGide或GNAT編譯器,但我假設如果您選中「發佈模式」框,代碼將以發佈模式編譯。

+0

感謝您的回答。 – yCalleecharan 2010-07-03 17:28:06

1

當然,您可以在開始時直接在發佈模式下運行程序。但這不可取。當你開發你的程序時,在Debug模式下執行它更聰明。如果它是一個性能驅動的程序,則不會阻止您經常測試發佈模式,以查看運行時是否存在瓶頸。

在釋放模式旁放置複選標記將使AdaGIDE 構建下次您的程序處於「快速」模式。如果你已經定義了不同的Target目錄,那麼也會有兩個不同的.exe的,所以AdaGIDE會運行的適當版本。

+0

感謝您的評論。 1投票。 – yCalleecharan 2011-01-12 09:14:56

相關問題