2012-04-15 167 views
0

我在微软网站上发现,如果我想逐行调试一个程序,我需要按F11。 如果我按F11我获得(在一个名为Program.cs的新形式):在c#中逐行调试#

 using System; 
    using System.Collections.Generic; 
    using System.Linq; 
    using System.Windows.Forms; 

    namespace WindowsFormsApplication1 
    { 
     static class Program 
    { 
    /// <summary> 
    /// The main entry point for the application. 
    /// </summary> 
    [STAThread] 
    static void Main() 
    { 
     Application.EnableVisualStyles(); 
     Application.SetCompatibleTextRenderingDefault(false); 
     Application.Run(new Form1()); 
    } 
    } 
    } 

他们补充说,“当通过代码,也就是即将被执行加亮线步进”。在我的情况下突出显示:

 Application.EnableVisualStyles(); 

我应该选择另一条线吗?

然后,他们告诉选择停止调试以使代码编辑器可写。

如果我按照此步骤操作,则看不到任何修改。我应该看到一个新的表单,其中的计算机逐行调试?我应该做另一件事吗?

对不起,如果我的问题看起来很愚蠢。请理解我,我是C#的开始。

非常感谢!

+0

请参阅http://www.hermetic.ch/cfunlib/debug.htm适用于VS也 – 2012-04-15 16:06:02

+0

您确定您明白“调试”代表什么吗?你究竟想达到什么目的? – walther 2012-04-15 16:07:39

+0

我正试图实现一个“指令说明”。我没有用这种调试方式工作,所以我什么都不知道。由于每个人的帮助,现在我知道使用它。 – Bogdan 2012-04-15 20:27:25

回答

0

您应该标记一个调试点(或断点),然后开始调试您的程序。在我看来,不建议您逐行开始调试程序,您应该只调试引发异常的部分,并在程序中标记断点(如何:http://msdn.microsoft.com/en-us/library/k80ex6de.aspx)。当您的程序到达该行时,如果需要,调试器会逐行开始详细的调试。

+0

谢谢你的帮助! – Bogdan 2012-04-15 18:47:18

2

您的问题有较少与具体语言(标记中的C#)有关,更多关于Visual Studio环境。

F11执行逐行,但指令逐instruciton,因为如果你immagin这样的代码:

if(condition) { x++; DoSomething(); ...},对F11按下它不会活蹦乱跳这条线,但仍然执行

  • 第一if
  • x++
  • DoSomething(..)

而这一切是在你的代码在同一行,但对于编译这些都是不同的指令。

如果您想让编辑器可编辑,按下Pause按钮即可。但是,通过点击按钮Pause,在情况下,如果在当前函数的范围没有任何lambda的表情,你就可以改变代码只是在Pause,他们称这个功能Edit and Continue

希望这有助于。

+0

这就是我想要的:按指令执行指令。我插入一个简单的断点,我按了F11但我没有看到我的变量的状态。我在哪里可以看到它? – Bogdan 2012-04-15 17:59:05

+0

您可以在[WatchWindow](http://msdn.microsoft.com/zh-cn/library/0taedcee.aspx)中通过拖放或写入变量[Locals Window](http:// msdn。 microsoft.com/en-us/library/a6td98xe(v=vs.100).aspx),或者当程序处于暂停状态时,通过鼠标悬停在当前执行范围内的任何变量上,您将看到工具提示 - 窗口。 – Tigran 2012-04-15 18:26:37

+0

非常感谢!我找到了! – Bogdan 2012-04-15 18:42:23

1

我认为你需要调试是如何工作的一些建议:

首先,你应该插入一个简单断点(F9在Visual Studio)在要调试代码的某个地方。假设您有一个Windows窗体应用程序,并带有名为Form1的窗体。在这种形式中,你有一个按钮,当点击时,它做了一些事情。您将有这样的事情:

public partial class Form1 : Form 
{ 
    public Form1() 
    { 
     InitializeComponent(); 
    } 

    private void button1_Click(object sender, EventArgs e) 
    { 
     doSomething(...); 
    } 
} 

要停止当您单击按钮,程序的执行(这样你就可以清楚地看到发生了什么),你可以把一个断点上的click事件。一旦你有了断点,每次点击事件被触发,程序就会停止,你将能够一步一步地运行它。

通过逐步运行它,您可以看到变量的状态和存储的数据。因此,您可以找到您的代码开始行为与预期不同的位置(通常称为a bug)。

为了这样做,则可以通过程序程序由程序F10)或通过指令(F11指令步骤。 F10会跳过函数调用,执行它们直到完成。 F11将进入函数调用,逐步执行其中的每条指令。

+0

我按照你的步骤,直到我按下F11。然后,我从button1_Click获得的第一条指令突出显示。在哪里可以看到我的变量的状态?谢谢! – Bogdan 2012-04-15 17:46:47

+0

停止时,可以单击调试> Windows>自动显示范围的数据。我不确定是否这样叫,因为我有西班牙语的VS,而不是英语 – vguzmanp 2012-04-15 17:56:11

+0

以防万一它有帮助,下面是我的版本中的样子:[link](http://i.imgur.com/ yKeLG.jpg) – vguzmanp 2012-04-15 18:02:26