Bên cạnh bài Wilson Kao, bạn cũng có thể thử phương pháp đơn giản nhất mà tôi sử dụng:
- Đặt một breakpoint ở một nơi mà một biến tham chiếu đến đối tượng sẽ được sử dụng.
- Di chuột qua biến khi điểm ngắt được nhấn. Bạn sẽ thấy cửa sổ bật lên hiển thị các thuộc tính cấp cao nhất của đối tượng.
- Sử dụng các nút nhỏ + ở bên trái để đi sâu hơn vào đối tượng. Nó có thể gây nhầm lẫn.
Bạn cũng có thể ghim một số thuộc tính mà bạn tìm thấy trong sâu thẳm, do đó bạn không cần phải tìm kiếm chúng một lần nữa và một lần nữa (nút pin xuất hiện ở bên phải của mỗi tài sản khi bạn di chuột qua bất động sản)
Dưới đây là một exmaple về những gì nó trông giống như (biến là sách):
Nguồn: http://blogesh.wordpress.com/2008/09/09/visual-studio-debugging-tips-and-tricks/
Edit: có một cách để có được tất cả các thuộc tính và giá trị của họ mà bạn truy cập thông qua hướng dẫn phương pháp di chuột và nhấp chuột (ví dụ: trong hình trên, bạn có thể nhận ISBN và giá trị của nó thông qua mã). Tuy nhiên bạn phải sử dụng mã Visual Basic. Sau đó, bạn có thể thực hiện tìm kiếm trên các kết quả cho một giá trị cụ thể.
Trước tiên, bạn cần phải đi đọc lên trên Tracepoints và tùy chỉnh Macros: Click and go to "TracePoints – Running a Custom Macro" Also, here
Tiếp theo, bạn cần phải thực hiện một Macro để làm những gì bạn muốn. Trong Visual Studio, hãy truy cập Công cụ -> Macro -> Macro IDE ... Thêm Macro mới. Nên có một trống đặt trước được gọi là Module 1. Ở đây, bạn thêm các thói quen để làm những gì bạn muốn. Sau đây là một Macro tôi đã thực hiện sẽ đi qua một biến nhất định và xuất ra các thuộc tính của nó (về cơ bản, xuất dữ liệu bạn nhận được trong phương thức cover-and-click). Kết quả đầu ra này cho cửa sổ Output, mà bạn có thể mở thông qua View -> Output.
Sub DisplayAllProperties()
Dim outputWindow As EnvDTE.OutputWindow
outputWindow = DTE.Windows.Item(EnvDTE.Constants.vsWindowKindOutput).Object
Dim currentStackFrame As EnvDTE.StackFrame
currentStackFrame = DTE.Debugger.CurrentStackFrame
outputWindow.ActivePane.OutputString("*Dumping Local Variables*" + vbCrLf)
For Each exp As EnvDTE.Expression In currentStackFrame.Locals
If (exp.Name = "this") Then ' Here, I am only searching in a variable named "this"
outputWindow.ActivePane.OutputString("- " + exp.Name + ": " + exp.Value.ToString() + vbCrLf)
helperDisplay(exp.DataMembers, outputWindow, 1)
End If
Next
End Sub
Private Sub helperDisplay(ByRef exps As EnvDTE.Expressions, ByRef OutputWindow As EnvDTE.OutputWindow, ByVal n As Integer)
For Each ex In exps
helperTabs(n, OutputWindow)
If (ex.Name = "Non-Public members" Or ex.Name = "Static members") Then
OutputWindow.ActivePane.OutputString("~ " + ex.Name + ": There are " + ex.DataMembers.Count.ToString + vbCrLf)
Else
OutputWindow.ActivePane.OutputString("~ " + ex.Name + ": " + ex.Value.ToString() + vbCrLf)
If (ex.DataMembers.Count <> 0) Then
helperDisplay(ex.DataMembers, OutputWindow, n + 1)
End If
End If
Next
End Sub
Private Sub helperTabs(ByVal n As Integer, ByRef OutputWindow As EnvDTE.OutputWindow)
For i = 1 To n Step 1
OutputWindow.ActivePane.OutputString(vbTab)
Next
End Sub
Mã này cho tôi ngoại lệ đối với một số điều khiển DevExpress mà tôi đã thử nghiệm. Tôi nghĩ rằng đó là bởi vì một số giá trị không thể được truy cập.Tôi chưa bao giờ được mã hóa trong VB trước đây vì vậy có thể có lỗi trong đó ... Chơi với nó và xem nếu nó có thể làm những gì bạn muốn (tức là đầu ra chỉ các thuộc tính phù hợp với những gì bạn cần). Phần tốt là, bạn có thể thay đổi mã Macro như bạn đang gỡ lỗi, vì vậy không cần phải dừng dự án của bạn trong khi bạn chỉnh sửa Macro!
Để sử dụng Macro, bạn cần đặt điểm ngắt ở đâu đó trong mã của bạn sẽ bị truy cập và sẽ có thể truy cập đối tượng bạn muốn. -> Nhấp chuột phải vào điểm ngắt và đi đến Khi nhấn ... Hãy kiểm tra Chạy macro: và chọn Macro của bạn từ trình đơn thả xuống.
Hãy thử sử dụng F10 hoặc F11 để tiếp tục sử dụng các đối tượng của bạn. Ngoài ra, có chức năng tích hợp để xem giá trị đối tượng, vv – diceler
Tôi nghĩ bạn cần phải cụ thể hơn những gì bạn muốn nói "tìm kiếm" để có được câu trả lời tốt hơn. Tôi chỉ giả định nó có nghĩa là để có thể truy cập các giá trị. Vậy bạn muốn tìm kiếm điều gì? Loại tài sản? Làm thế nào bạn có thể tìm kiếm các giá trị nếu thuộc tính không phải là chuỗi, số hoặc bool? Đưa ra một ví dụ về những gì bạn muốn có thể làm. – Yuf