0

我在 microsoft 网站上发现,如果我想逐行调试程序,我需要按 F11。如果我按 F11,我将获得(以名为 Program.cs 的新形式):

     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# 的初学者。

太感谢了!

4

3 回答 3

2

您的问题与具体语言(在标签中)的关系较少,而与环境的关系更多。C#Visual Studio

您按不是逐行F11执行,而是按指令执行,因为如果您像这样想象代码:

if(condition) { x++; DoSomething(); ...}, 按下F11不会跳过所有这条线,但会执行

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

所有这些都在您的代码中的同一行,但对于编译器,这些是不同的指令。

如果你想让编辑器可编辑,按下Pause按钮就足够了。但是通过点击Pause按钮,如果在当前函数的范围内没有任何lambda表达式,您将能够更改刚刚的代码Pause,他们将此功能称为Edit and Continue

希望这可以帮助。

于 2012-04-15T16:09:33.173 回答
1

我认为您需要一些有关调试工作原理的提示:

首先,您应该在要调试的代码中的某处插入一个简单的断点(Visual Studio 中的F9 )。假设您有一个 Windows 窗体应用程序,其窗体名为 Form1。在此表单中,您有一个 Button,单击该按钮会执行某些操作。你会有这样的事情:

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

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

要在单击按钮时停止程序的执行(这样您就可以确切地看到正在发生的事情),您可以在单击事件上放置一个断点。一旦你在那里有了断点,每次点击事件被触发时,程序都会停止,你将能够一步一步地运行它。

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

为此,您可以逐个程序( F10 ) 或逐个指令( F11 ) 逐步执行程序。F10 将跳过函数调用,执行它们直到它们完成。F11 将进入函数调用,逐步执行其中的每条指令。

于 2012-04-15T16:57:42.707 回答
0

您应该标记一个调试点(或断点),然后开始调试您的程序。在我看来,不建议开始逐行调试程序,您应该只调试引发异常的部分,并为此在程序上标记断点(如何:http: //msdn.microsoft.com/ zh-cn/图书馆/k80ex6de.aspx)。当您的程序到达该行时,如果您愿意,调试器会逐行启动详细调试。

于 2012-04-15T16:07:58.340 回答