MSVS2013调试器不工作(汽车,本地和手表)

时间:2014-11-29 17:45:13

标签: c++ visual-studio-2013 visual-studio-debugging

VS2013信息:

Microsoft Visual Studio Professional 2013 版本12.0.30723.00更新3 Microsoft .NET Framework 版本4.5.51209

所以这是正在发生的事情。前几天我安装了VS2013只是为了看看已经做了哪些改进,并对C ++环境的变化感到惊喜和满意。然而,一旦我开始编写代码并进行调试,我发现VS2013的监视窗口存在一个主要问题。

无论出于何种原因,几乎没有变量可以在任何选项卡的监视窗口中检查。大多数情况下,Autos选项卡为空,在Watch选项卡中,几乎任何我在其中拍摄的变量都被报告为超出了当前断点的范围。

例如,在它之前使用这个小的语句和几行:

cout << "Number of ship classes: " << sCTypes << endl << endl;

cout << sIDS.size() << endl;

for (i1 = 0; i1 < sIDS.size(); i1++)
{
     cout << sClasses.at(i1) << " ID Range: Low: " << sIDS.at(i1).vRange.iLow << "| High: " << sIDS.at(i1).vRange.iHigh << endl;
}

断点位于for循环定义的开头,但是我的监视条目:

sIDS.size()

出现,因为标识符“sIDS”即使在多次尝试刷新监视窗口中的单元格后仍未定义。

到目前为止,监视窗口(任何选项卡)将处理的唯一内容是函数参数。任何类似于类或结构成员的东西,就好像它甚至不存在一样。

这似乎只影响了这个特定的项目。如果我开始一个新的事情,他们应该工作。代码来自VS2012,但我只是复制了headers / cpp文件并将它们作为现有文件添加到项目中,没有从2012项目转换到2013.

我会在整个项目中添加一个链接,以防有人想下载它并尝试解决这个问题:http://www.lmpgames.com/ov_0.6a_new.zip

以下是上述问题区域的完整代码以及从中调用特定函数的位置:

globalVars.cpp:

void printData()
{
        //TODO: Raname variable labels to ini file keys instead

        //Ship ID Ranges By Class
        cout << "Format: Description: name of low entry from scSettings.ini: imported value |" << endl;
        cout << "name of high entry from scSettings.ini: imported value" << endl << endl;

        cout << "Number of ship classes: " << sCTypes << endl << endl;

        //cout << ssIDS.size() << endl;


        cout <<  "Starter Ship ID Range: Low: " << ssIDS.iLow << "| High: " << ssIDS.iHigh << endl;


        system("Pause");
        system("CLS");


        cout << sIDS.size() << endl;
        for (i1 = 0; i1 < sIDS.size(); i1++)
        {
            cout << sClasses.at(i1) << " ID Range: Low: " << sIDS.at(i1).vRange.iLow << "| High: " << sIDS.at(i1).vRange.iHigh << endl;
        }

        system("Pause");
        system("CLS");

        cout << "Class names imported:" << endl;

        for (i1 = 0; i1 < sClasses.size(); i1++)
        {
            cout << sClasses.at(i1) << endl;
        }

        system("Pause");
        system("CLS");
}

main.cpp中:

int main()
{
    srand( time(0) );

    int pChoice;
    int gSRows;
    int pID;
    int sID;

    char pCChoice;

    bool gQuit;
    bool gMMenu = true;
    bool bErrors;
    bool lStation;
    bool locked = false; //Use this to lock the main menu from the player during certain events such as using a clone

    string eResult; //Event result; used for any time a loop is done where multiple outcomes, more than two, can be achieved

    //Get data from configuration file
    gv::getCData();
    gv::printData();

...
return 0;
}

1 个答案:

答案 0 :(得分:0)

弄清楚我做错了什么。您必须在监视窗口中使用namepsace访问这些类型的变量,否则它无法找到符号。在sIDS.size()前添加gVars ::就可以了。