ChatGPT解决这个技术问题 Extra ChatGPT

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

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


P
Peter Mortensen

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

自 2008 年以来在 Visual Studio 中:右键单击项目,选择属性,转到调试部分 - 有一个“命令参数”框。 (提示:不是解决方案,而是项目)。


Stackoverflow 是唯一可用的 MS 文档!
小心点。这不会更改实际的项目文件,而是更改 vcxproj.user-file。
注意:如果解决方案中有多个项目,请记住右键单击要运行的项目并“设置为启动项目”。
发现。但显然在VS2017中它不称为“调试”,而是“调试”。我们可能永远不知道为什么。
确保在属性页面顶部的下拉列表中选择了正确的配置,即与您尝试运行的配置相同。
D
Daniel Frederico Lins Leite

Mozilla.org FAQ on debugging Mozilla on Windows 在这里很有趣。

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

这对于 Visual Studio 8 或 9(分别为 Visual Studio 2005 或 Visual Studio 2008)如下所示

devenv /debugexe 'program name' 'program arguments'

也可以使用 explorer action 在 Visual Studio 调试器中启动程序。


L
Lou Franco

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


是的,使用 Ctrl+Alt+P 附加(或单击“调试”>“附加到进程...”)。但这并不能真正回答 OP 问题 ;)
P
Peter Mortensen

微软 Visual Studio 终极版 2013。

您只需转到 DEBUG 菜单 → Main Properties → Configuration properties → Debugging,然后您将看到命令行参数框。

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

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

现在,您可以在不同的模式下执行程序,而不必每次都更改输入参数。


它在 MS VS 2015 中也有点像。在我前往“调试-> {projectname} 属性”之前,我必须打开可通过下拉菜单访问的“配置管理器”,默认情况下包含“调试”和“发布”。弹出一个窗口,我可以在其中添加新的“配置”项目。这些项目在“调试 -> {projectname} 属性”中可用。
j
jpmc26

对于 VS 2015 及更高版本,使用 Smart Command Line Arguments 扩展。这个插件添加了一个窗口,允许您打开和关闭参数:

https://mbulli.gallerycdn.vsassets.io/extensions/mbulli/smartcommandlinearguments/2.1.2/1554395906327/vsix_preview_image.png

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


P
Peter Mortensen

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

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

请注意,它们应该是空格分隔的。


O
O'Neil

这可能会帮助一些仍然有问题的人。我使用 Visual Studio 2015,只有在更改 argv 的定义时才能传递参数。

代替

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

我不得不使用

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

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


有同样的问题,但上面提到的两个声明都不起作用。解决方案是将平台从 x86 更改为 x64,因为我正在使用 64 位机器。
P
Peter Mortensen

在 Visual Studio 的解决方案窗口中右键单击项目,选择“调试”(在左侧),然后在“命令参数”字段中输入参数:

https://i.stack.imgur.com/eMjKA.jpg


u
user1602

在 VS 2022 中,可以调试任何可执行文件。打开包含 .exe 文件的文件夹

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

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

将 args 添加到 launch.vs.json,例如

{
  "version": "0.2.1",
  "defaults": {},
  "configurations": [
    {
      "type": "default",
      "project": "ffprobe.exe",
      "projectTarget": "",
      "name": "ffprobe.exe",
      "args": [ "C:\\Temp\\test-file" ]
    }
  ]
}

右键单击 .exe 文件,然后单击“调试”


P
Peter Mortensen

在 Visual Studio 2010 中,右键单击项目,选择“属性”,单击左侧窗格中的配置属性部分,然后单击“调试”,然后在右侧窗格中有一个命令参数框。

在其中输入命令行参数。你已准备好出发。现在调试并查看结果。如果您厌倦了更改属性,请暂时直接在程序中输入。


L
Lars Pellarin

我发现一些旧的命令行参数存储在我的启动项目源文件夹下的 MyStartUpProject.csproj.user 文件中。删除此文件无效,Visual Studio 将其带回给我。我不得不编辑文件中的参数。

文件中的值没有显示在 VS、项目属性、调试中。在那里输入值会将它们附加到神秘的 MyStartUpProject.csproj.user 文件中的值。


m
mateus_cesar

对于那些使用VS2022并且您没有launchSchema.json的人,如上所述,有一个使用launchSettings.json插入args的解决方案。

输入文件并使用 "commandLineArgs": "argument here", 插入您的参数

这对我有用。