2013-06-10 31 views
11

Tôi biết lớp Debugger trong không gian tên System.Diagnostics có thuộc tính IsAttached.Phát hiện xem Trình gỡ lỗi có được đính kèm * và * bước qua

Có một bất động sản, ở đâu đó, có thể làm tăng thêm cuộc gọi này và cho tôi biết nếu chúng ta đang thực sự bước qua mã, chứ không phải chỉ đơn giản là chỉ được kèm theo? Tôi hiểu điều này có thể rất khó xảy ra, nhưng sẽ hữu ích nếu bạn biết.

EDIT

Có lẽ một câu hỏi tốt hơn, chứ không phải là "bước" đang chạy một số mã:

  1. Khi gỡ rối "phá vỡ" cho lần đầu tiên (vào chế độ debug, sau khi được gắn liền)
  2. Khi nó chạy lại (nhưng vẫn còn dính, nhưng không phải "bước qua").
+0

Trông thú vị ... em đang cố gắng để làm gì? –

+0

Tôi tò mò muốn sử dụng điều này? Bạn có thể đưa ra một ví dụ không? Bạn chỉ có thể phát hiện nếu bạn đang bước qua (nếu có thể) nếu bạn đang bước qua đường dây đang phát hiện. – hatchet

+0

@hatchet, tôi có một số mã chạy trên một bộ hẹn giờ tương đối ngắn hết hạn một số đối tượng gộp chung. Thời gian chạy, điều này hoạt động tốt - khi bước qua mã nó có thể gây ra vấn đề. Có những lựa chọn thay thế, cái mà tôi rất có thể sẽ sử dụng cho mục đích mạnh mẽ - nhưng tôi nghĩ tôi sẽ đặt ra câu hỏi này. :) –

Trả lời

2

Bạn có thể nhận trạng thái trình gỡ lỗi từ thuộc tính Debugger.CurrentMode. Nhưng điều đó sẽ chỉ cho bạn biết liệu nó hiện đang ở trạng thái ngắt hay chương trình đang chạy. Không có chế độ "bước", đó là một khoảnh khắc thoáng qua mà khá nhiều đảm bảo rằng, nếu bạn có thể tìm thấy về nó, mà hành động trên nó đã là quá muộn. Thực tế đảm bảo là một cuộc đua luồng.

+0

Tuyệt vời. Về bản chất, trạng thái phá vỡ là những gì tôi đã hy vọng. Tuy nhiên, tôi sẽ không được thiết kế xung quanh nó - nhưng nó chắc chắn là một tốt đẹp để biết và kinda những gì tôi đang tìm kiếm. –

+0

'System.Diagnostics.Debugger' không có thuộc tính' CurrentMode', chỉ [EnvDTE.Debugger] (https://msdn.microsoft.com/en-us/library/envdte.debugger.currentmode.aspx) có nó. Tôi sợ điều này chỉ có thể truy cập cho các phần mở rộng VS, chứ không phải chương trình đang được gỡ lỗi. – robert4

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