使用Visual Studio命令行参数进行调试

599

我正在使用Visual Studio开发C++命令行应用程序,需要使用命令行参数进行调试。目前,我只是使用所需的参数运行生成的EXE文件(例如program.exe -file.txt),但这种方式无法进行调试。是否有地方可以指定调试参数?


如果您使用gdb作为调试器,请输入以下命令:gdb -args ./program -argument - Jesper Juhl
14个回答

876

是的,它在项目属性页面的调试部分。

自2008年以来,在Visual Studio中:右键单击项目节点,选择属性,转到调试部分--有一个名为“命令参数”的框。


388
Stackoverflow是唯一可用的微软文档! - Martin Beckett
15
注意一下,这个操作不会改变实际的项目文件,而是会改变vcxproj.user文件。 - TheTrowser
3
完全正确。但是显然在VS2017中它不叫“Debugging”,而是“Debug”。我们可能永远都不知道为什么这样命名。 - Героям слава
4
请确保在属性页面顶部的下拉菜单中选择了正确的配置,即与您要运行的配置相同。请注意不要改变原意,使语言通俗易懂,不提供额外解释或信息。 - Steve Smith
1
@BernardoSOUSA 抱歉,我不再使用VS了。也许其他人可以帮助你。 - DarkTrick
显示剩余3条评论

60

这里与Mozilla.org关于在Windows上调试Mozilla的常见问题解答有关。

简而言之,Visual Studio调试器可以从命令行调用程序,允许在命令行直接指定命令行参数来调用命令行程序。

对于Visual Studio 8或9(分别是Visual Studio 2005或Visual Studio 2008),看起来像下面这样:

  devenv /debugexe '程序名称' '程序参数'

还可以有一个资源管理器操作以在Visual Studio调试器中启动程序。


21
即使您在Visual Studio之外启动可执行文件,您仍然可以使用“附加”命令将Visual Studio连接到已运行的可执行文件。例如,当您的应用程序作为另一个应用程序中的插件运行时,这可能会很有用。

1
是的,使用 Ctrl+Alt+P 进行附加(或单击“调试”>“附加到进程...”)。但这并没有真正回答 OP 的问题 ;) - T_D

8

微软 Visual Studio Ultima 2013。

您可以直接进入DEBUG菜单→Main PropertiesConfiguration propertiesDebugging,然后您将看到命令行参数的框。

实际上,您可以为所有不同的配置设置相同的输入参数,而不仅仅是调试。

从配置下拉菜单中选择:所有配置,并插入输入参数(每个参数用空格分隔)。

现在,您可以在不更改输入参数的情况下以不同模式执行程序。


在MS VS 2015中,它也是这样工作的。在我前往“调试-> {projectname}属性”之前,我必须打开“配置管理器”,该管理器可通过默认包含“Debug”和“Release”的下拉菜单访问。一个窗口弹出,我可以添加新的“配置”项。这些项目在“Debug -> {projectname}属性”中可用。 - Alexander

6

5

在VS 2022中,可以对任何可执行文件进行调试。

打开包含.exe文件的文件夹:

  • 右键单击.exe文件,然后单击“设置为启动项”

  • 再次右键单击.exe文件,然后单击“添加调试配置”,或者如果已经创建了配置文件,则单击“打开调试和启动设置”。

  • launch.vs.json添加args,例如:

{
  "version": "0.2.1",
  "defaults": {},
  "configurations": [
    {
      "type": "default",
      "project": "ffprobe.exe",
      "projectTarget": "",
      "name": "ffprobe.exe",
      "args": [ "C:\\Temp\\test-file" ]
    }
  ]
}
  • 右击 .exe 文件,然后点击 "调试"

5

使用VS 2015及以上版本,使用智能命令行参数扩展。该插件添加了一个窗口,允许您打开和关闭参数:

Smart Command Line Arguments interface

该扩展还会将参数存储在一个JSON文件中,使您能够将它们提交到源代码控制。除了确保您不必每次都输入所有参数之外,这也作为对其他开发人员发现可用选项的文档的有用补充。

3
在使用带有 .NET Core 控制台应用程序的 Visual Studio 2017 中,请执行以下操作:

右键单击“解决方案”窗口中的项目,选择“属性”,选择左侧的 “调试(Debug)”,并将参数输入到“应用程序参数(Application Arguments)”字段中。

注意它们应该以空格分隔。


3

在Visual Studio的Solution窗口中右键单击项目,选择左侧的"Debugging",并将参数输入到"Command Arguments"字段中:

在此输入图片描述


2
这可能对一些仍然存在问题的人有所帮助。我使用的是Visual Studio 2015,只有在更改argv的定义时才能传递参数。
而不是:
int main(int argc, char **argv){
}

我必须使用

int main(int argc, char *argv[]){
}

我不知道为什么这是必要的,但它有效。

1
遇到了相同的问题,但是上面提到的两个声明都没有起作用。解决方案是将平台从x86更改为x64,因为我正在使用64位机器。 - hfrmobile

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