如何调试C#命令行程序

时间:2010-09-04 22:38:09

标签: c# debugging command-line

我正在尝试使用VS2010在C#中构建命令行工具。

我的问题是:我如何调试这个,就像我会胜利一样 使用winforms,我可以单步执行代码,查看每个步骤的值等等......

但是,程序只在我从命令行与它通信时才响应。我无法启动调试会话,因为这将首先完全启动该程序。由于程序的性质,它将自行关闭,因为没有命令行参数。

因此无法进行调试。

我需要在这做什么?

编辑:一个例子,因为有人发表评论让我觉得需要这样的解释。

C:\ Path \ To \ File \ file.exe -help

这是该计划如何得到解决的一个例子。命令-help在程序启动的同一行中给出。换句话说,我不能先启动程序,然后在它运行时给它一个命令...因为它不会再运行了。它会启动,看它在启动时没有参数,因此,关闭。这就是命令行工具的工作原理。

  1. 激活
  2. 处理可能的论点
  3. 输出结果
  4. 自动关机
  5. 在点击右上角的小x之前,这不是一直持续运行的。

6 个答案:

答案 0 :(得分:46)

在Project属性中,在Debug下,您可以输入您想要的任何命令行参数,然后使用F5运行应用程序,调试器将自动附加。

答案 1 :(得分:8)

您可以在启动代码中添加对Debugger.Launch的调用。然后,您可以编译,并从命令行启动您的应用程序。您将收到一个提示,询问您要附加哪个调试器(通常这将是您已安装的Visual Studio的不同版本的列表),然后就可以了。

(但实际上,在项目属性>调试选项卡中设置命令行参数是大多数情况下更好的方法。如果这对您不起作用,您应该找出原因。)

答案 2 :(得分:1)

一旦调试器正在使用正确的参数,您就可以使用Visual Studio将调试器附加到命令行应用程序。我不确定您的应用程序是否会快速终止或者给您任何附加调试器的机会,但如果可以的话,这应该可行。

我正在使用VS2008,但我敢打赌这个过程在2010年类似:

  1. 在VS中,转到Tools,然后点击Attach to Process
  2. 从列表中选择您的应用,然后按Attach
  3. 现在VS应该能够进入你的应用程序并打破错误。

答案 3 :(得分:1)

您只需要在main函数的第一行添加断点(可以通过单击Visual Studio编辑器中的行并点击F9来执行此操作)并按F5启动调试会话。

答案 4 :(得分:1)

将断点添加到{的开头Main,或者进入程序(Debug菜单)。此时在main(命令行参数)的参数上设置一个监视,通过选择它并右键单击/添加监视或将参数拖到监视窗口(如果它已经打开)。双击Watch窗口中的Value列,将其设置为您想要的值。

注意:添加的值必须是有效代码 - 也就是说,要在字符串[]中添加 -help ,您必须输入new string[] {"-help"}new [] {"-help"}取决于您使用的版本。

这比在属性窗口的“调试”选项卡中设置参数更有优势,它允许每次运行的不同参数,而不必返回“属性”窗口。

答案 5 :(得分:-1)

当你有命令行参数时,你需要遵循不同的路线来调试。转到项目,然后选择属性。在那里,您将看到调试部分,然后提供所需的参数。因此它将负责将参数传递给程序。如果您有多个参数,则用空格分隔它们。之后,如果您调试它将直接达到断点。有关详情,请点击此处how to debug c# through command line arguments in visual studio