使用VS2013的奇怪(c++)调试问题

Strange (c++) debug issues using VS2013

本文关键字:c++ 调试 问题 VS2013 使用      更新时间:2023-10-16

我继承了一个要处理的项目,最初的构建是在linux上开发的。我不知道这是否重要,但我想我会分享它。

为了在windows机器上调试该项目,我首先在win7上使用CMakeGUI创建一个Visual Studio解决方案文件,以使用Visual Studio 2013打开该项目,然后设置启动项目并构建我感兴趣的项目。到目前为止,一切都很好。现在是令人困惑的部分。

在加载时,假设程序读取一个文件,并将其称为in.dat,并在const char * inputFileName中声明该变量,然后将该变量传递给一个类,该类试图打开该文件以获取数据。

fstream fs;
fs.open(inputFileName.c_str(), fstream::in);
    if(!fs.is_open())
    {
        std::cout << "Cannot open input file!" << std::endl;
        exit(0);
    }

这是我被难住的地方。。。由于某种原因,当文件被放在调试文件夹中时,无法打开,即当我尝试调试应用程序时fs.is_open() returns false,但如果我直接cd到VS之外的项目调试文件夹中,并运行它按预期运行的可执行文件,即fs.is_open() now returns true

调试器的工作目录默认为项目的根目录,二进制文件位于\debug子目录中,这实际上导致输入文件的路径错误。

将调试器的工作目录设置为\debug。以下是更多信息:https://msdn.microsoft.com/en-us/library/kcw4dzyf(v=vs.120).aspx