我在微软网站上发现,如果我想逐行调试程序,我需要按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#的初学者。
非常感谢你!
答案 0 :(得分:2)
您的问题与具体语言(标记中为C#
)的较少关系以及有关Visual Studio
环境的更多信息。
您按F11
逐行执行不 ,但指令说明,如果您想通过像这样的代码:
if(condition) { x++; DoSomething(); ...}
,按下F11
不会跳过所有这一行,但会执行
if
x++
DoSomething(..)
并且所有这些都在代码中的同一行,但对于编译器,这些是不同的指令。
如果您想让编辑器可编辑,只需按Pause
按钮即可。但是,点击Pause
按钮,如果在当前函数的范围内没有任何lambda
表达式,您将能够更改Pause
中的代码,他们称之为功能Edit and Continue
希望这有帮助。
答案 1 :(得分:1)
我认为您需要一些有关调试工作原理的提示:
首先,您应该在要调试的代码中的某处插入一个简单的断点(Visual Studio中的 F9 )。假设您有一个Windows窗体应用程序,其中包含一个名为Form1的窗体。在这种形式中,你有一个按钮,当点击它时,它会做一些事情。你会有这样的事情:
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
}
private void button1_Click(object sender, EventArgs e)
{
doSomething(...);
}
}
要在单击按钮时停止执行程序(这样您可以确切地看到正在发生的事情),您可以在click事件上放置一个断点。一旦你有断点,每次触发click事件,程序都会停止,你将能够一步一步地运行它。
通过逐步运行,您可以查看变量的状态和存储的数据。因此,您可以找到代码开始的行为与您的预期不同(通常称为a bug)。
为此,您可以按程序( F10 )或指令逐步执行程序程序( F11 < /强>)。 F10将跳过函数调用,执行它们直到完成。 F11将进入函数调用,逐步执行每个指令。
答案 2 :(得分:0)
您应该标记一个调试点(或断点),然后开始调试您的程序。在我看来,不推荐逐行开始调试程序,你应该只调试抛出异常的部分,并为此在程序上标记断点(如何:http://msdn.microsoft.com/en-us/library/k80ex6de.aspx)。当程序到达该行时,调试器会根据需要逐行启动详细调试。