Đỉnh NGUYỄN

life's a journey not a destination

Một số thủ thuật gỡ rối mạnh của Visual Studio

Leave a comment


Debug là 1 phần công việc rất quan trọng và không thể thiếu trong quá trình phát triển hần mềm. Quá trình phát triển của các công cụ debug trong những năm qua đã làm cho công việc debug trở nên dễ dàng hơn và đỡ mất thời gian hơn.

Sau đây là tổng hợp 10 thủ thuật và kỹ thuật giúp bạn tiết kiệm thời gian khi dùng Visual Studio

1. Di chuyển chuột để xem giá trị biểu thức

Debug có thể gặp khó khăn. Di chuyển từng bước trong 1 hàm để hiểu code sai chỗ nào, lần ngược để tìm các lời gọi hàm và xem giá trị các biểu thức…Trong trường hợp cần xem giá trị các biểu thức hoặc tìm danh sách các biến cục bộ có thể làm mất thời gian. Tuy nhiên, điều dễ dàng là nếu bạn chỉ cần di chuyển chuột lên vị trí biến, đối tượng, sau đó mở rộng các thành phần bằng cách click, bạn sẽ tìm thấy các thuộc tính nhanh chóng và thuận tiện.

2. Thay đổi giá trị on-the-fly

Trình debug còn là công cụ phân tích các nguy cơ và các hành vi gây lỗi. Nhiều lỗi được ngăn chặn bằng cách di chuyển từng bước trong các hàm mới được viết và kiểm tra hành vi của chúng có như mong đợi không. Đôi khi bạn tự hỏi, “hàm này có chạy đúng không nếu điều kiện là true?”, Và trong hầu hết trường hợp, không cần phải thay đổi mã hoặc debug lại. Chỉ việc di chuyển chuột lên biến, double click lên giá trị và thay đổi thành 1 giá trị mới và tiếp tục debug.

3. Gán câu lệnh kế tiếp

Một trường hợp debug điển hình là phân tích lý do 1 hàm gọi bị lỗi bằng cách di chuyển từng bước vào hàm. Và những gì bạn cần làm khi tìm ra hàm được gọi từ các hàm khác sinh ra lỗi? Restart lại quá trình debug? Có 1 ý tưởng hay hơn: chỉ cần kéo (drag) đánh dấu câu lệnh màu vàng đến dòng mà bạn muốn thực thi tiếp theo giống như hàm vừa bị lỗi, và đơn giản là debug vào hàm.

4. Chỉnh sửa và tiếp tục

Debug 1 chương trình phức tạp,  hoặc 1 plug-in? Tìm thấy 1 lỗi nhưng không muốn mất thời gian ngừng lại, biên dịch và debug trở lại lần nữa; hàm được gọi cũng dùng thủ thuật trước (3). Chỉ việc khắc phục bug và tiếp tục debug. Visual Studio sẽ chỉnh sửa chương trình và tiếp tục debug mà không cần restart quá trình debug.

Tuy nhiên, thủ thuật này có sự giới hạn. Trước tiên, nó không hoạt động trên các đoạn mã được viết cho HĐH 64-bit. Vào Project Settings, Build page, chọn Platform Target là x86. Đừng lo lắng, target platform sẽ do mình quyết định.

Thứ hai, thủ thuật này chỉ thực hiện được trong nội bộ 1 hàm. Nếu bạn thay đổi khai báo hàm, thêm mới hàm hoặc lớp thì phải restart lại quá trình debug.

5. Cửa sổ watch thuận tiện

Có lẽ mỗi debugger hiện đại đều có cửa sổ watch. Tuy nhiên điều tuyệt vời của Visual Studio là sự dễ dàng mà bạn có thể thêm hoặc gỡ bỏ các biến. Chỉ cần click 1 dòng rỗng, nhập biểu thức và nhấn enter. Hoặc đơn giản nhấn phím delete để xóa bỏ 1 biểu thức không còn dùng đến.

Thông tin nhận được từ cửa sổ watch không chỉ giới hạn là các biến bình thường. Bạn có thể nhập $handles để truy vết số lượng handles được mở bởi ứng dụng (và tìm các handle bị leak), $err để xem mã lỗi của hàm sau cùng (và dùng Tools –> Error Lookup để xem mô tả có nghĩa), hoặc @eax (@rax cho 64-bit) để xem thông tin giá trị trả về của 1 hàm.

6. Các breakpoint có điều kiện

Nếu trong chu kỳ tồn tại của ứng dụng cần debug có quá nhiều vị trí cần đặt breakpoint, bạn có thể dễ dàng đặt điều kiện cho chúng. Chỉ đơn giản đặt điều kiện cho 1 breakpoint và Visual Studio tự động bỏ qua breakpoint nếu điều kiện chưa đúng. Điều này đặc biệt hữu ích khi đoạn mã breakpoint được gọi quá nhiều lần rất mất thời gian debug.

7. Go to definition

Tính năng không liên quan trực tiếp đến debug, dùng để khám phá các project lớn. Nếu bạn tìm bug trong đoạn code mà bạn không tự tay viết thì thường bạn sẽ hỏi: “loại nó là gì, được khai báo ở đâu?” hoặc “hàm này làm việc gì?”.

8. Cửa sổ Command

Visual Studio hỗ trợ cửa sổ Command (View –> Other Windows –> Command Windows).

Advertisements

Author: dinhnn

Senior software developer, a technical leader. You can be reached at via email to dinhnguyenngoc@gmail.com, via my blog at dinhnguyenngoc.wordpress.com, and on Twitter @dinhnguyenngoc.

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out /  Change )

Google+ photo

You are commenting using your Google+ account. Log Out /  Change )

Twitter picture

You are commenting using your Twitter account. Log Out /  Change )

Facebook photo

You are commenting using your Facebook account. Log Out /  Change )

Connecting to %s