2013-06-20 43 views
3

我得到了一些錯誤信息說「錯誤:標識符‘我發現在2012年VS的Visual Studio 2012超出範圍在調試模式

XXXX’超出範圍」,這仍然甚至非常簡單的類發生如下。

// this is header file 
public class IRIS_Database 
{ 
public: 
    int test1; 
    IRIS_Database::IRIS_Database(void); 
    IRIS_Database::~IRIS_Database(void); 
}; 


// this is cpp file 
#include "IRIS_Database.h" 

/******************* 
    Constructor 
********************/ 
IRIS_Database::IRIS_Database(void) 
{ 
    test1 = 5; 
    int test2 = 20; 

} 

/***************** 
    Destructor 
******************/ 
IRIS_Database::~IRIS_Database(void) 
{ 
} 

我在構造函數內部放置了斷點,並在表上添加了test1和test2。這是截圖。即在頭文件中聲明

enter image description here

正如你所看到的圖像,test1的是「超出範圍」。 test2,在構造函數中聲明的局部變量是OK的。我可以跟蹤test2,但不能測試1。

這裏是從main函數啓動這個類的代碼。

/********************* 
    Main Function 
**********************/ 
int _tmain(int argc, _TCHAR* argv[]) 
{ 

    // Initialize Database 
    IRIS_Database* IRDB = new IRIS_Database(); 
} 

我不知道爲什麼...

優化是在項目屬性禁用,這是運行的調試模式。我的代碼是C++/CLI與Windows窗體混合使用。因此,/ clr選項已啓用。平臺工具集v112是VS 2012.以下是屬性頁面的所有選項。如果你想看到具體的選擇,請讓我知道。

/GS/analyze-/W3/Zc:wchar_t /I"../IRDB_Include「/ Zi/Od/sdl- /Fd"Debug\vc110.pdb」/ fp:precise/D「_CRT_SECURE_NO_WARNINGS」/ D 「WIN32」/ D「_DEBUG」/ D「_CONSOLE」/ D「_UNICODE」/ D「UNICODE」/ errorReport:prompt/WX-/Zc:forScope/Oy-/clr/FU「C:\ Program Files \ Reference Assemblies \ Microsoft \ Framework.NETFramework \ v4.0 \ mscorlib.dll「/ FU」C:\ Program Files \ Reference Assemblies \ Microsoft \ Framework.NETFramework \ v4.0 \ System.Data.dll「/ FU」C:\ Program Files \ Reference Assemblies \ Microsoft \ Framework.NETFramework \ v4.0 \ System.dll「/ FU」C:\ Program Files \ Reference Assemblies \ Microsoft \ Framework.NETFramework \ v4.0 \ System.Drawing.dll「/ FU」 C:\ Program Files \ Reference Assemblies \ Microsoft \ Framework.NETFramework \ v4.0 \ System.Windows.Forms.dll「/ FU」C:\ Program Files \ Reference Assemblies \ Microsoft \ Framework.NETFramework \ v4.0 \ System .Xml.dll「/ MDd/Fa」Debug \「/ EHa/nologo/Fo」Debug \「/ Fp」Debug \ Nea rIR.pch「

在此先感謝!

+3

http://connect.microsoft.com/VisualStudio/feedback/details/783004/children-cannot-be-evaluated-on-c-cli-after-vs2012-update-2 –

+0

感謝Hans,我確實更新了將平臺工具集更改爲vs 2010,它工作。 – diehard98

回答

2

在這種特殊情況下,實例變量test1尚未創建。要執行的下一行(用黃色箭頭標記)是該函數的第一行。它尚未實際執行,因此執行路徑尚未完成實例設置,因此test1尚不可用。 (設置test2首先會有所作爲嗎?)

另一方面,test2是構造函數的局部變量,存儲在本地的函數中。因此,它在任何地方都可以訪問。

這只是Watch工具的一個問題。它需要一些額外的工作,但一個好的調試器應該能夠顯示構造函數中存在類的成員變量。 MS表示他們正在處理這個問題。