Làm cách nào để đặt điểm dừng có điều kiện trong Visual Studio?


133

Có cách nào dễ dàng để đặt các điểm dừng có điều kiện trong Visual Studio không?

Nếu tôi chỉ muốn đạt điểm dừng khi giá trị của biến trở thành thứ gì đó, tôi phải làm thế nào?


11
Lưu ý rằng phiên bản Express không có chức năng này.
Alexei Levenkov

1
Tôi đang sử dụng Express 2015 và nó có khả năng cho các điểm dừng có điều kiện
mark.monteiro 8/12/2015

1
Phiên bản cộng đồng năm 2017 cũng có các điểm dừng có điều kiện
PentiumPro200

Câu trả lời:


174

Đặt điểm dừng như bình thường. Nhấp chuột phải vào nó. Nhấp vào Điều kiện.


1
Trong VS 2015, bạn cần di chuột qua điểm dừng và nhấp vào biểu tượng bánh răng để đặt điều kiện
mark.monteiro 8/12/2015

Ý bạn là, nhấp chuột phải, đặt điều kiện, nhận lỗi "Điều kiện cho điểm dừng không thành công" .. phải không?
Toby Caulk

1
Câu trả lời cũng nên bao gồm cú pháp cho các câu điều kiện hoặc liên kết thông tin.
Andrew

50

Khi bạn đang sử dụng phiên bản Express, bạn có thể thử điều này:

#if DEBUG
    if( fooVariable == true )
        System.Diagnostics.Debugger.Break();
#endif

if statement đảm bảo rằng trong bản phát hành, breakepoint sẽ không xuất hiện.


3
Điều này có một lợi thế hiệu suất / tiết kiệm thời gian tuyệt vời. Tôi đã lặp đi lặp lại qua mọi 'id' tiềm năng trong một chương trình của tôi (chỉ khoảng 3,5 triệu), chỉ mất vài giây. Tôi đã cố gắng sử dụng điểm dừng có điều kiện nhưng vì nó không nằm trong nhánh có điều kiện nên nó đã làm chậm tốc độ thực thi đến mức sau vài phút tôi sẽ chấm dứt phiên gỡ lỗi. Sử dụng các điểm dừng được biên dịch làm cho nó ngay lập tức.
Sandwich cá vàng

35

Visual Studio cung cấp nhiều tùy chọn cho các điểm dừng có điều kiện:

Để đặt bất kỳ trong số này bạn

  1. Đặt điểm dừng.
  2. Nhấp chuột phải vào điểm dừng và trong menu bật lên, bạn chọn một tùy chọn phù hợp với bạn.

Các tùy chọn này như sau:

  • Bạn có thể đặt điều kiện, dựa trên biểu thức mã mà bạn cung cấp (chọn Điều kiện từ menu bật lên). Ví dụ, bạn có thể chỉ định rằng foo == 8hoặc một số biểu thức khác.
  • Bạn có thể kích hoạt điểm dừng sau khi chúng bị tấn công một số lần nhất định. (chọn Lượt đếm từ menu bật lên). Đây là một tùy chọn thú vị để chơi vì bạn thực sự không bị giới hạn trong việc phá vỡ một số lần truy cập nhất định, nhưng bạn cũng có các tùy chọn cho một vài tình huống khác. Tôi sẽ để nó cho bạn khám phá các khả năng.
  • Bạn có thể Đặt bộ lọc trên ID tiến trình, ID luồng và tên máy (chọn Bộ lọc từ menu bật lên)

16

Chỉ là một cách khác để làm điều đó, (hoặc nếu bạn đang sử dụng express) thêm điều kiện trong mã:

if(yourCondition)
{
    System.Diagnostics.Debugger.Break();
}

9
  1. Đặt điểm dừng trên đường
  2. Phải clik trên bóng ĐỎ
  3. Lựa chọn điểm dừng conditioal
  4. Điều kiện thiết lập

8

Viết điều kiện thực tế có thể là phần khó khăn, vì vậy tôi có xu hướng

  1. Đặt điểm dừng thông thường .
  2. Chạy mã cho đến khi điểm dừng được nhấn lần đầu tiên.
  3. Sử dụng Cửa sổ ngay lập tức (Gỡ lỗi> Windows> Ngay lập tức) để kiểm tra biểu thức của bạn .
  4. Bấm chuột phải vào điểm dừng, bấm Điều kiện và dán vào biểu thức của bạn .

Ưu điểm của việc sử dụng cửa sổ Ngay lập tức:

  • Nó có IntelliSense .
  • Bạn có thể chắc chắn rằng các biến trong biểu thức nằm trong phạm vi khi biểu thức được ước tính.
  • Bạn có thể chắc chắn biểu thức của bạn trả về đúng hay sai .

Ví dụ này bị phá vỡ khi mã đang đề cập đến một bảng có tên "Cài đặt":

table.GetTableName().Contains("Setting")

5

Tạo một điểm dừng như bình thường, nhấp chuột phải vào dấu chấm màu đỏ và chọn "điều kiện".


4
  1. Đặt điểm dừng như bình thường
  2. Nhấp chuột phải vào điểm dừng và chọn Điều kiện
  3. Bạn sẽ thấy một hộp thoại có nội dung "Điều kiện điểm dừng"
  4. Đặt một điều kiện trong trường, ví dụ: "i == 5"

Điểm dừng sẽ chỉ bị tấn công khi tôi 5 tuổi.


4
  1. Đặt điểm dừng như bình thường.
  2. Nhấp chuột phải vào điểm đánh dấu
  3. Nhấp vào "Điều kiện ..."
  4. Viết một điều kiện, bạn có thể sử dụng tên biến
  5. Chọn "Đúng" hoặc "Đã thay đổi"

4

Trên Visual Studio 6.0

Alt+ F9!!!


1
-1) Điều này không hoạt động trong VS 2012 2) Câu hỏi này đã có rất nhiều câu trả lời (tốt hơn) khác và 3) ai trên trái đất quan tâm đến VS 6.0 (phát hành năm 1998)? 4) Ngay cả khi ai đó quan tâm đến VS 6, câu hỏi được gắn thẻ .Net không có hỗ trợ cho đến phiên bản tiếp theo của VS (Visual Studio .Net)
Tim Medora

7
Chà, các câu trả lời khác không hoạt động trên VS 6.0. Vì vậy, tôi đã đăng một giải pháp.
Vorac

1

Đặt breakpointnhư bạn làm bình thường, nhấp chuột phải vào điểm dừng và chọn condiontùy chọn và đặt điều kiện của bạn.


1

Tạo một điểm dừng chức năng có điều kiện:

  1. Trong cửa sổ Breakpoint, nhấp vào Mới để tạo điểm dừng mới.

  2. Trên tab Chức năng, nhập Reverse cho Chức năng. Loại 1 cho Dòng, loại 1 cho Ký tự, sau đó đặt Ngôn ngữ thành Cơ bản.

  3. Nhấp vào Điều kiện và đảm bảo rằng hộp kiểm Điều kiện được chọn. Nhập instr.length > 0cho Điều kiện, đảm bảo rằng tùy chọn đúng được chọn, sau đó bấm OK.

  4. Trong hộp thoại Breakpoint mới, bấm OK.

  5. Trên menu Gỡ lỗi, bấm Bắt đầu.


0

Nếu bạn đến từ Google, câu trả lời này có thể là những gì bạn đang tìm kiếm.

  1. Nhấp vào Gỡ lỗi> Điểm dừng mới> Điểm dừng chức năng nhập mô tả hình ảnh ở đây

  2. ở đó chọn Breakpoint có điều kiện.

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.