2009-07-29 37 views
14

Trình gỡ lỗi C# của tôi không hoạt động bình thường. Nó bỏ qua các điểm ngắt và dòng mã đôi khi. Tôi đã kiểm tra trình quản lý cấu hình. Tôi thậm chí đã thử thêm các dự án của tôi vào các tệp giải pháp mới. Ai đó có thể vui lòng giúp tôi?Tại sao trình gỡ lỗi C# của tôi bỏ qua các điểm ngắt?

+0

Tối ưu hóa có bị vô hiệu hóa không? Gỡ lỗi hoặc phát hành? – Guillaume

+1

'Đôi khi' là gì? –

+0

làm cách nào tôi có thể kiểm tra tối ưu hóa ??? một số lần có nghĩa là mỗi lần tôi sử dụng trình gỡ lỗi nó sẽ bỏ qua sau khi đi qua một số dòng –

Trả lời

8

Đảm bảo tối ưu hóa bị tắt (đây là lỗi cho cấu hình Gỡ lỗi, nhưng chúng được bật trong cấu hình Phát hành). Tối ưu hóa trình biên dịch có thể gây rối với trình gỡ lỗi ...

+0

làm cách nào tôi có thể điều chỉnh tối ưu hóa trình biên dịch –

+0

Nếu bạn đang sử dụng Visual Studio: Nhấp chuột phải vào dự án trong trình khám phá giải pháp, sau đó chọn tab "Xây dựng". Nên có một hộp kiểm có tên là "tối ưu hóa mã". (Ít nhất, điều này áp dụng cho VS 2005 và 2008. Tôi không biết về các phiên bản trước đó). – Odrade

5

Bạn có chắc chắn rằng trình biên dịch đã được biên dịch chính xác không? Nghe có vẻ như tôi đang gỡ lỗi chống lại một phiên bản trước đó, điều này có thể xảy ra nếu việc xây dựng không thành công (có thể là một lỗi mã, có lẽ các tệp đó là chỉ đọc).

+0

i m biên soạn các dự án riêng lẻ trong giải pháp nhưng vẫn cùng một vấn đề –

1

Điều này có vẻ như mã nguồn của bạn không đồng bộ với các tệp PDB. Giải pháp đơn giản nhất là làm sạch giải pháp (xóa tất cả các dll của bạn khỏi thư mục bin). Biên dịch lại, và sau đó thử bước qua một lần nữa.

Nếu vẫn không thành công, hãy thử đóng giải pháp và xóa thư mục "obj". Và sau đó thử lại.

Và cũng kiểm tra xem bạn đang biên soạn trong chế độ gỡ lỗi - một cái gì đó tôi đã thực hiện thường xuyên ("tại sao phải không bước qua ?!") không nhận được điểm break

+0

tôi đã thử nó nhưng vẫn cùng một vấn đề –

23

gỡ lỗi danh sách kiểm tra của tôi:

  • Đảm bảo bạn đính kèm quy trình bằng cách sử dụng đúng loại mã - nếu quá trình của bạn có cả mã không được quản lý và được quản lý thì không dựa vào "tự động" để làm việc cho bạn, nêu rõ loại mã nào bạn đang cố gắng gỡ lỗi
  • Goto modu cửa sổ les (Debug -> Windows -> Modules, bạn có thể cần phải bật nó trong menu "Tùy chỉnh ..."
  • Kiểm tra để đảm bảo rằng bản lắp ráp của bạn đang cố gỡ lỗi đã được tải và các ký hiệu đó đã được tải - nếu chúng chưa được tải thì hãy nhấp chuột phải vào mô-đun đó và chọn "biểu tượng tải"
  • Mở tệp mã và đặt điểm ngắt - nếu xuất hiện với biểu tượng cảnh báo nhỏ, sau đó xem và xem nội dung,
  • Bạn có thể cần phải goto "công cụ -> tùy chọn -> gỡ lỗi -> chung" và bỏ chọn "Chỉ bật Mã của tôi (Chỉ Quản lý)"
  • Bạn cũng có thể bỏ chọn "Yêu cầu tệp nguồn khớp chính xác với phiên bản gốc" , nếu bạn nghĩ rằng nguồn của bạn có thể bị trượt Tuy nhiên, vì điều này có thể dẫn đến việc bạn gỡ lỗi hoàn toàn với các nguồn sai, điều này có thể rất khó hiểu)

Trong một số trường hợp, bạn có thể thấy rằng mô-đun của bạn không được tải tại điểm mà bạn đính kèm trình gỡ lỗi của bạn (ví dụ nếu bạn có một số loại cắm trong archetecutre, và plugin hội đồng chỉ được nạp khi bạn lần đầu tiên sử dụng chúng). Trong những trường hợp này, tất cả những gì bạn có thể làm là thử và đảm bảo mọi thứ đã sẵn sàng cho khi module được tải.

+0

thanx cho một câu trả lời chi tiết như vậy. tôi đã thử tất cả nhưng stilli có cùng một biểu tượng. –

+3

Vô hiệu hóa "Chỉ mã của tôi ..." đã làm cho tôi. Cảm ơn. –

+0

Danh sách tuyệt vời. Giúp tôi. – Arnej65

1

Nếu toàn bộ phương thức đang bị bỏ qua, hãy xem nguồn và xem liệu thuộc tính System.Diagnostics.DebuggerStepThroughAttribute có hiện diện hay không.

Mặc dù tên, nó CHƯA gỡ lỗi trình gỡ lỗi từ bước qua phương pháp.

+0

không bỏ qua một chút thời gian từ giữa mathod và một vài lần toán học hoàn chỉnh. –

+0

Tuyệt vời! Tôi nghĩ rằng tôi đã đi hạt khi một phương pháp tùy chỉnh thêm vào một lớp học được tạo ra từ XSD không muốn gỡ lỗi. Lý do là 'xsd.exe' đã trang trí mã nó được tạo với thuộc tính này. Các điểm ngắt được tạo ra trước khi F5 đôi khi bị trúng, nhưng không phải là các điểm ngắt mới và không phải lúc nào cũng vậy. – ajeh

1

Nếu ít nhất đôi khi điểm ngắt được nhấn, điều đó có nghĩa là tất cả các cài đặt có thể là OK nhất.

Số lần truy cập bị thiếu có thể do một số tác dụng phụ gây ra, ví dụ: đánh giá tài sản của trình gỡ lỗi (ít nhất VS bỏ qua các điểm ngắt trong đánh giá thuộc tính cho trình gỡ lỗi) hoặc một số công cụ gián điệp (nhưng thường).

Nếu bạn nghĩ trường hợp này có thể xảy ra, hãy tắt các công cụ gián điệp và disable the property evaluation by the debugger.

Điều này đôi khi không đủ, ví dụ: Nếu thuộc tính của bạn trả lại bộ sưu tập, hiển thị ví dụ: a Count() sẽ đánh giá thuộc tính - vì vậy, cũng loại bỏ tất cả các tham chiếu về thuộc tính khỏi cửa sổ đồng hồ, v.v.

1

Điều này làm việc cho tôi trong VS 2017, Chuyển đến Công cụ> Tùy chọn sau đó trong cửa sổ Tùy chọn chuyển đến phần Gỡ lỗi. Bật - "Bật nguồn .NET Framework bước"

1

Vô hiệu hóa "Thuộc tính dự án/Xây dựng/Tối ưu hóa mã" đã hoạt động đối với tôi.

Các vấn đề liên quan