为什么我的程序在VS2013中调试时无法打开文件?
Why can't my program open a file when debugging in VS2013?
这是非常简单的,只是为了让程序继续运行,这样我就可以调试更复杂的部分:
//open file
cout << "Input File Name: ";
string fileName;
cin >> fileName;
ifstream file;
file.open(fileName, ios_base::in);
if (!(file.good())){
cout << "File Open Errorn";
return 0;
}
这个程序编译得很好。如果我只需双击或通过cmd浏览,就可以从\Projects\[this project]\debug\[program].exe执行调试可执行文件,它将打开文件(存储在同一目录中),程序的其余部分也会很好地运行(无论如何,直到它到达我真正想要调试的有缺陷的部分)。
但是,如果我尝试从VS2013中"启动调试",则以上操作失败;它打印错误并立即关闭。程序在调试模式下执行的cmd窗口当然会在标题区显示目录,而且它肯定是同一个目录,但我猜它在其他地方寻找文件。我也试着把它复制到卷根,没有乐趣。我确信这在早期版本的VS中运行得很好,但也许我只是在脑子里放屁。有什么想法吗?
在Visual Studio的项目属性中,可以设置启动调试程序的当前目录。默认情况下,这被设置为.vcxproj
文件的位置,即它是而不是可执行文件的位置。
同时,传递给std
文件流构造函数的相对路径是相对于程序的当前目录来解释的,这就是为什么它在调试时会失败,而在直接运行时不会失败。如果您使用以下cmd命令启动程序:
>cd somerandomdir
>C:pathtoyourProjects[this project]Debug[program].exe
它也会以完全相同的方式失败。
要修改Visual Studio在调试时使用的启动目录,请转到Project > Properties > Configuration Properties > Debugging > Working Directory
。请注意,该设置是特定于配置的(即,每个配置可以有不同的启动目录)。如果要将其设置为包含可执行文件的目录,可以使用宏$(OutDir)
。
也许最好将数据文件移到项目源目录中,因为它不是构建工件。
- 从 exe 文件 (Visual Studio ) 启动时调试断言失败
- 如何在添加文件的情况下在VSCode中调试C++程序
- 当前不会命中断点。没有调试器目标代码类型的可执行代码与此文件关联
- OpenCV 3 Visual Studio 2017 调试,调用堆栈没有.pdb文件
- 创建进行生产构建并创建调试信息的C++生成文件的最佳方法?
- 如何使用 lldb 在曼扎罗中调试 lz4 文件格式的核心转储?
- VSCode C++调试文件名中包含中文字符的文件时插件损坏
- 在 Windows 10 下使用 GTest 的 CMake - 致命错误 LNK1104:无法打开文件"gtest.lib",但存在调试"gtestd.lib"
- 使用dll源代码C++调试dll文件
- 如何调试visual studio 2017生成的C++代码.android中的SO文件和其他第三方库
- 在Linux Mint 19下,从哪里提取wxWidgets的源代码(.cpp文件)用于步骤内部调试
- 如何修复使用VScode调试器gcc调试时的"找不到文件"错误
- 错误 VSP1011:无法获取调试信息.与 /配置文件链接器开关链接
- 在h文件上内联发布版本并在cpp上实现调试版本的函数
- Visual Studio控制台调试了错误的文件
- 在使用 vs 代码调试文件时,如何将文件传递到我的程序中
- 从命令提示符使用 MSBuild 调试简单的C++可执行文件
- 调试Visual Studio中可执行文件调用的C 文件
- BS-42e6.gcno 文件调试
- 使用 lib.a 文件调试链接错误