使用Visual Studio调试时如何使用重定向标准输入进行调试。

23

我正在使用Visual Studio调试C++控制台应用程序。每次调试此程序时,我都厌倦了插入相同的输入。我想要多次使用相同的输入。

在命令行中不进行调试,我可以使用以下命令:Program.exe < 1.in

是否可能使用重定向自文件的标准输入进行调试?

我已经尝试查看项目属性。 我尝试将Command设置为$(TargetPath) < 1.in,而不是$(TargetPath)。我还尝试将Command Arguments设置为< 1.in, 但这两种方法都不起作用。

我正在使用Visual Studio 2012。但在所有版本的Studio中,此问题可能都是相同的。


我认为这就是你要找的 https://dev59.com/1HVC5IYBdhLWcg3wbgdS - Zeph
3个回答

40

这是一个被支持的调试场景。你需要确保调试器能找到该文件。将Command设置为$(TargetPath),Command Arguments设置的可能值为:

 < "$(ProjectDir)test.txt"

如果输入文件“test.txt”位于项目目录中,请使用该文件的名称。或者为了确保正确性,输入该文件的完整路径。描述此功能的MSDN文章在此处可用

1
注意事项:对我有效的“命令行参数”字段是:< test.txt,其中 test.txt 位于 .../<solution>/<package>/bin/Debug/ 中。请务必检查您的确切文件名。使用命令行参数和标准输入时,我的“命令行参数”字段为:-hello < test.txt - 3ygun
1
这是一个C++问题。但是,它同样适用于C#或VB.NET项目。 - Hans Passant
在VS Code中,launch.json中的参数应该是分开的: "program": "${workspaceFolder}/robot_strategy.exe", "args": ["<", "${workspaceFolder}/robot_strategy.in"], - vSzemkel

2

我刚刚在项目中创建了一个名为stdin.txt的文件

1)将Build Action设置为Content

2)复制到输出目录:如果较新则复制

然后当您构建时,stdin.txt会被复制到可执行文件所在的同一文件夹中。

然后在项目属性debug|command line arguements中输入以下内容< stdin.txt

无需使用路径宏。


0

如果您不想处理路径问题,可以通过在“解决方案资源管理器”中的“源文件”文件夹上右键单击并添加一个“新文件”,然后将所需文件的内容粘贴到其中。然后更改命令参数为新文件名。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接