Sử dụng công cụ lập trình Debug

You want to see the values of the local variables in your C# program as it executes. This is useful for when you want to make sure the values are correct. Here we see an example of how you can debug your variables in the Visual Studio 2008 integrated development environment.

Debug menu.

Tip: This tutorial provides steps for looking at variables as your C# program executes.

Debug C# with Visual Studio

First here we look at a short program written in the C# language that has several local variables in it. To look inside your locals, you need to set a breakpoint somewhere in the block of C# code you have. For the example, I will use this simple program.

Program that uses local variables [C#]

using System;

class Program
    static void Main()
	// A. // An integer is local.
	int cat = 1;

	// B. // A string is local.
	string dog = "cute";

	// C. // An array is local.
	bool[] b = new bool[]

Add debugging breakpoint

Here in the tutorial we will add a breakpoint near the end of the above program. On the far left of your source code tab, you will see a narrow gray strip. Click on it in the line you want to debug. The red circle on the left is where you need to click to set the debugging breakpoint. The red block over the code line is where the debugger will open.

Screenshot of breakpoint in Visual Studio.

When the debugger will open

When you set the breakpoint red circle on your code, the debugger will open only if that point is hit. This makes it possible to use breakpoints to alert you if something unexpected happens.

Start debugging

Here we note how you can initialize the debugger at the same time as starting your program in Visual Studio. To do this, click on the green arrow in your Visual Studio toolbar. The icons on your setup will look a little different depending on your preferences and OS.

Wait for breakpoint to be hit

The breakpoint will be hit as the program executes. The red blocks will turn yellow and you may see different panes such as the Call Stack pane. See the screenshot at the top of this article for what this will look like. Next, open the Locals window. Like many windows in Visual Studio 2008, you can open the Locals pane in more than one way. Go to Debug -> Windows -> Locals.

Locals features

Here we look at some features in the Visual Studio integrated development environment related to local variable debugging. In Visual Studio 2008, you can see Locals’ values. You can browse hierarchies of the locals’ internals. You can visualize data in a few ways too.

Locals window in Visual Studio.

Name The name of your variable.

Value The data stored in your variable.

Type The data type of your variable, such as int, string, bool[].

Text Visualizer Allows you to see the plain text value in the variable.

XML Visualizer For XML files. Probably uses the XML engine from Internet Explorer.

HTML Visualizer Use to view the data in Internet Explorer as HTML.

Expression This is on the Visualizer windows. Shows the variable name.

Step over statements

In this part of the debugging tutorial, we look at step options in the Visual Studio debugger. Often when debugging, you want to advance one step. Clicking the green arrow in the toolbar to Continue will take you to the next breakpoint.

Debug menu in Visual Studio.

Step Into (F11) “Step Into executes only the call itself, then halts at the first line of code inside the function.” (MSDN)
Use Step Into to go inside your method and stop immediately inside it.

Step Over Moves to the next step in your code also, but doesn’t break inside any methods.

Step Out Ignores the rest of the current method and goes to the calling method.

Step example in this tutorial. In our example, we want to use Step Over. This will enable us to see the values of all of the variables. The final variable is assigned at the end of the method.

Arrays (debugger)

Here we example the array type in the C# programming language as it appears during execution in the Visual Studio debugger. The screenshot shows what local arrays will look like. Each element in the array is referenced by an index. Look inside an array by clicking on the + box.

- b              - name of the array
    [0] true     - first value in array
    [1] false    - second value in array
    [2] true     - third
    [3] true     - fourth

Locals window showing bools.

More information

Here we note that the Visual Studio 2008 debugger is very thorough and effective for most problems. It has many more options, including Call Stack, Command Window, Exceptions, and Autos. You can configure breakpoints to simply write messages to the console, or to keep counts of how many times they are hit. This is great for performance testing.

Disable debugger

Before you ever deploy your web site or Windows Forms application, disable debugging. This will eliminate the features in this article but you can re-enable it later. The debugger causes significant performance overhead. In my experience it takes close to twice the time to execute Debug programs.

How to disable debugging

There are three ways to disable debugging. In your ASP.NET website, open Web.config and change the compilation tag’s debug attribute to false. In Windows Forms or Console applications, go to Project -> MyApplication Properties… Then change the Configure dropdown to Release. The third way is to change the toolbar dropdown when it is available.


Here we mention other methods available to you for debugging complex or simple programs written in the C# programming language. If you are using a console program, the Console.WriteLine method (or Console.Write) are very useful. This doesn’t involve the Visual Studio debugging environment so can be used when testing release builds and for accurate performance testing.

Console.WriteLine Use.NET Framework information.

Debug methods

Here we note that the .NET Framework provides a variety of useful methods in the Debug class that can be used to hard-code debugging facilities in your programs. Some methods that you can use are Debug.Write and Debug.Assert. The benefit to these methods over the Console methods is that they are removed in Release builds of your application. You can find more details on these methods.

Debug.Write Method


We saw how to look inside the variables in methods using the Visual Studio debugger. Local variables are part of every program, and writing them out with Console.Write is very cumbersome. With the debugger, we eliminate lots of manual work. In the C language, programmers use ‘printf’ statements, which are like Console.Write in the C# language. However, using Locals in the debugger is easier for many developers.

Visual Studio Content

Đây là bản lược dịch


Khi học lập trình có rất nhiều sinh viên rất ít sử dụng đến công cụ Debug của Visual Studio. Khi chương trình gặp lỗi hay cho ra kết quả sai, bạn không biết tại sao và cắm đầu vào đọc lại từng dòng code. Trong khi công cụ Debug của Visual Studio (VS 2010) là một công cụ mạnh để thực hiện việc trên. Do đó chúng ta sẽ tìm hiểu cách sử dụng công cụ này.


Bạn muốn xem một biến cục bộ trong chương trình C# khi nó thực thi thay đổi giá trị như thế nào, điều này rất hữu ích khi bạn muốn đảm bảo các giá trị kết quả của bạn được chính xác. Ở đây chúng ta sẽ tìm hiểu thông qua ví dụ về cách Debug các biến của bạn trong môi trường Visual Studio 2010.


1. Debug C# với Visual Studio 2010

Đầu tiên chúng ta nhìn vào một chương trình ngắn viết bằng ngôn ngữ C# có nhiều biến cục bộ trong đó. Để xem bên trong một hàm bạn cần sử dụng một Break Point(Điểm dừng) ở một nơi trong khối lệnh C# mà bạn có. Ví dụ tôi sẽ sử dụng Chương trình đơn giản  là:

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;

namespace Debugging
    class Program
        static void Main(string[] args)
            int a;
            int b;
            a = b = 10;
            int c = 90;
            String s = "Hello Thanh Cuong!";
            Console.WriteLine(" a + b + c = {0}", a + b + c);

2. Add Debugging BreakPoint

Ở đây tôi sẽ thêm một Breackpoint vào đầu chương trình ở trên. Trên bên trái của tab mã nguồn bạn nhấp chuột vào dòng muốn debug hoặc đưa con nháy tới dòng muốn debug và nhấn F9 sẽ thấy một dấu hình tròn màu xám trước dòng đó. Như hình bên dưới. Nhấn F5 để chạy chương trình, khi chương trình chạy đến dòng lệnh  mà bạn đặt breakpoint nó sẽ dừng lại và chương trình debug sẽ được mở ra.


3. Khi Debugger được mở:

Khi bạn thiết lập Breakpoint (vòng tròn nhỏ màu xám) trên mã lệnh của bạn, công cụ debug sẽ mở ra khi chương trình chạy tới điểm mà bạn đặt BreakPoint. Chương trình sẽ tạm dừng ở đó. Để bạn có thể sử dụng để kiểm tra các biến mà mình nghi ngờ là chương trình có thể chạy sai ở đó.

4. Bắt đầu Debug

Để bắt đầu Debug bạn nhấp chuột vào nút có mũi tên màu xanh ở thanh công cụ trong Visual Studio của bạn hoặc nhấn F5 như hình bên dưới


5. Chờ chương trình chạy đến BreakPoint

Khi chương trình thực thi đến Breackpoint mà bạn đã đánh dấu thì dòng đó sẽ chuyển sang màu vàng như hình bên dưới.


Bây giờ bạn có thể kiểm tra các biến cục bộ của chương trình bằng cách vào menu Debug –> Windows –> Locals (hoặc ấn Alt F4 )


6. Sử dụng tính năng locals để xem giá trị của các biến cục bộ


Bây giờ bạn có thể thấy các biến cục bộ trong chương trình của mình và giá trị của nó khi chương trình chạy đến đó. Bạn có thể sử dụng chức năng này để biết được mỗi giá trị thay đổi như thế nào khi chương trình chạy đến đó.

7. Step over statements

Trong phần này, chúng ta sẽ tìm hiểu cách lựa chọn trong visual studio debugger. Thông thường trong chương trình Debug bạn muốn tiến một bước , bạn nhấn vào nút màu xanh ở thanh công cụ để đến điểm breakpoint tiếp theo.

– Step into (F11): Step into thực thi chỉ gọi chính nó, sau đó dừng ở dòng đầu tiên của mã lệnh trong hàm.

– Step over (F10): Di chuyển đến bước kế tiếp trong mã của bạn, nhưng không dừng bên trong mỗi phương thức.

– Step out: bỏ qua phần còn lại của các phương thức hiện hành và đi vào các phương thức được gọi.


Các bước thực hiện trong ví dụ này, tôi sử dụng step over (F10), điều này cho phép chúng ta xem giá trị của tất của tất cả các biến.

8. Thông tin thêm

Công cụ Debug của visual 2010 là khá toàn diện và hiệu quả cho hầu hết các vấn đề. Nó bao gồm nhiều sự lựa chọn hơn, bao gồm: Call Stack, Command Windows, Exception, Autos. Bạn có thể cấu hình các breakpoint chỉ đơn giản là viết một thông điệp trong console… Điều này rất tốt để thử nghiệm hiệu suất.

9.  Nếu các công cụ khác không có trình Debug bạn nên làm gì?

Khi sử dụng các trình biên dịch không có công cụ Debug hoặc công cụ debug yếu. Bạn có thể sử dụng các lệnh để in kết quả của các biến ra màn hình để kiểm tra việc hoạt động của các biến đó. Tuy cách này hơi lâu hơn công cụ Debug của Visual Studio nhưng nó cũng khá hiệu quả trong việc kiểm tra và theo dõi các biến.



Trả lời

Mời bạn điền thông tin vào ô dưới đây hoặc kích vào một biểu tượng để đăng nhập:

WordPress.com Logo

Bạn đang bình luận bằng tài khoản WordPress.com Đăng xuất /  Thay đổi )

Google+ photo

Bạn đang bình luận bằng tài khoản Google+ Đăng xuất /  Thay đổi )

Twitter picture

Bạn đang bình luận bằng tài khoản Twitter Đăng xuất /  Thay đổi )

Facebook photo

Bạn đang bình luận bằng tài khoản Facebook Đăng xuất /  Thay đổi )


Connecting to %s