2013-10-18 20 views
0

我正在使用flag/check編譯我的Fortran代碼:uninit,在屬性 - > Fortran - > runtime下激活 - >檢查未初始化的變量。未在intel visual studio 2010中檢測到未初始化的變量(Fortran編譯器2011)

我注意到,當我運行我的代碼時,有時執行正常停止指示未初始化的變量,其他時候它保持運行沒有問題,只通過我的代碼步進我知道我有一個變量值-6.277438562204192D 066。爲什麼編譯器不能始終檢測未初始化的變量?

在特定的情況下,我提到未檢測到的變量是一個模塊中定義的全局變量,我不確定這是否是一個問題,也許編譯器只能檢測到本地未初始化變量?如果是這樣的話,我該如何檢測全局未初始化的變量?

回答

0

通常,我使用valgrind在運行時檢測未初始化的變量

我不知道什麼ifort需要作爲參數編譯時,但gfortran您需要啓用優化,以及:-Wuninitialized -O

This可能是有幫助的。

編輯:According to Intel您必須禁用優化時檢查未初始化的變量與ifort

編輯:我不知道如何找到使用的Windows未初始化的變量,但我沿着post from the Intel forum傳來:

我們目前提供的運行時間未初始化變量 檢查的限量表,儘管它可能太有限而無法使用。 具有Fortran Studio XE或Parallel Studio XE許可證的用戶(或 Cluster Studio XE)可以使用靜態分析功能來執行整個程序的正確性檢查,包括未初始化的變量 檢測。它也不完美,但它可以非常有幫助。

也許您可以訪問該工具。

+0

謝謝,但我忘了提及我使用的是Windows而不是Linux,而Valgrind只能在Linux上運行。 – Lupocci