2008-09-16 13 views
12

में "परिणाम ढूंढें" विंडो में प्रदर्शित लाइनों में डीबग ब्रेकपॉइंट्स को मैं कैसे दिखा सकता हूं विजुअल स्टूडियो 2005-2015 में कुछ संदर्भों वाली सभी पंक्तियां ढूंढना संभव है और उन्हें "परिणाम ढूंढें" विंडो में प्रदर्शित करना संभव है।विजुअल स्टूडियो

अब ये परिणाम लाइन प्रदर्शित होती हैं, क्या कोई कीबोर्ड शॉर्टकट है जो उन सभी को डीबग ब्रेकपॉइंट जोड़ने की अनुमति देगा?

उत्तर

14

आप एक दृश्य स्टूडियो मैक्रो के साथ काफी आसानी से ऐसा कर सकते हैं।

Imports System 
Imports System.IO 
Imports System.Text.RegularExpressions 
Imports EnvDTE 
Imports EnvDTE80 
Imports EnvDTE90 
Imports System.Diagnostics 

Public Module CustomMacros 
    Sub BreakpointFindResults() 
     Dim findResultsWindow As Window = DTE.Windows.Item(Constants.vsWindowKindFindResults1) 

     Dim selection As TextSelection 
     selection = findResultsWindow.Selection 
     selection.SelectAll() 

     Dim findResultsReader As New StringReader(selection.Text) 
     Dim findResult As String = findResultsReader.ReadLine() 

     Dim findResultRegex As New Regex("(?<Path>.*?)\((?<LineNumber>\d+)\):") 

     While Not findResult Is Nothing 
      Dim findResultMatch As Match = findResultRegex.Match(findResult) 

      If findResultMatch.Success Then 
       Dim path As String = findResultMatch.Groups.Item("Path").Value 
       Dim lineNumber As Integer = Integer.Parse(findResultMatch.Groups.Item("LineNumber").Value) 

       Try 
        DTE.Debugger.Breakpoints.Add("", path, lineNumber) 
       Catch ex As Exception 
        ' breakpoints can't be added everywhere 
       End Try 
      End If 

      findResult = findResultsReader.ReadLine() 
     End While 
    End Sub 
End Module 
: मॉड्यूल जोड़ें ...

स्रोत संपादक में निम्नलिखित पेस्ट करें | दृश्य स्टूडियो के भीतर, मैक्रो आईडीई खोलने के लिए और MyMacros पर राइट क्लिक करके एक नया मॉड्यूल जोड़ने और का चयन करें Alt-F11 मारा

इस उदाहरण में "परिणाम खोजें 1" खिड़की परिणाम उपयोग करता है; आप प्रत्येक परिणाम विंडो के लिए एक व्यक्तिगत शॉर्टकट बनाना चाहते हैं। विकल्प ... और बाईं ओर स्थित नेविगेशन में पर्यावरण धारा के तहत कीबोर्ड का चयन |

आप टूल पर जाकर एक कुंजीपटल शॉर्टकट बना सकते हैं। अपने मैक्रो का चयन करें और अपनी पसंद के शॉर्टकट को असाइन करें।

आप उपकरण पर जाकर मेनू या टूलबार में अपने मैक्रो को भी जोड़ सकते हैं। अनुकूलित करें ... और बाईं ओर नेविगेशन में मैक्रोज़ अनुभाग का चयन कर सकते हैं। एक बार जब आप सूची में अपने मैक्रो का पता लगा लेते हैं, तो आप उसे किसी भी मेनू या टूलबार पर खींच सकते हैं, जहां यह टेक्स्ट या आइकन को जो कुछ भी आप चाहते हैं उसे अनुकूलित किया जा सकता है।

3

आप शब्द के लिए वास्तव में खोज कर सकते हैं, तो आप इसे जल्दी करने के लिए कीबोर्ड शॉर्टकट की एक जोड़ी का उपयोग कर सकते हैं।

उपकरण -> विकल्प -> पर्यावरण -> कीबोर्ड

  • Edit.GoToFindResults1NextLocation
  • EditorContextMenus.CodeWindow.Breakpoint.InsertBreakpoint

उन्हें निरुपित नियंत्रित करने के लिए + Alt + F11 और F10 और आप सभी परिणामों के माध्यम से बहुत जल्दी जा सकते हैं। हालांकि मुझे अगले संदर्भ में जाने के लिए शॉर्टकट नहीं मिला है।

+2

F3 के लिए काम करता है और F9 किसी शॉर्टकट को फिर से आवंटित करने के लिए बिना यह करते हैं। – StuperUser

+0

F3 वर्तमान परिणाम में अगले परिणाम पर जाता है, न कि खोज परिणामों में अगली पंक्ति।खोज परिणाम फलक में F3 का उपयोग करना संभव है लेकिन आपको कोड और परिणाम पैन के बीच एंटर और टैब को भी हिट करने की आवश्यकता है। यह उत्तर बहुत सारे कीस्ट्रोक बचाता है। –

3

मुझे सभी ब्रेकपॉइंट्स को अक्षम करने के समान कुछ चाहिए और प्रत्येक "अपवाद के रूप में पूर्व को पकड़ें" पर ब्रेकपॉइंट रखें। हालांकि, मैंने इसे थोड़ा बढ़ाया ताकि यह आपके द्वारा चुने गए स्ट्रिंग के हर मौके पर ब्रेकपॉइंट रखे। इसके साथ आपको केवल उस स्ट्रिंग को हाइलाइट करना है जिसे आप ब्रेकपॉइंट करना चाहते हैं और मैक्रो चलाएं।

Sub BreakPointAtString() 

    Try 
     DTE.ExecuteCommand("Debug.DisableAllBreakpoints") 
    Catch ex As Exception 

    End Try 

    Dim tsSelection As String = DTE.ActiveDocument.Selection.text 
    DTE.ActiveDocument.Selection.selectall() 
    Dim AllText As String = DTE.ActiveDocument.Selection.Text 

    Dim findResultsReader As New StringReader(AllText) 
    Dim findResult As String = findResultsReader.ReadLine() 
    Dim lineNum As Integer = 1 

    Do Until findResultsReader.Peek = -1 
     lineNum += 1 
     findResult = findResultsReader.ReadLine() 
     If Trim(findResult) = Trim(tsSelection) Then 
      DTE.ActiveDocument.Selection.GotoLine(lineNum) 
      DTE.ExecuteCommand("Debug.ToggleBreakpoint") 
     End If 
    Loop 

End Sub 

आशा है कि यह काम करता है आप के लिए :)

+0

यह बहुत अच्छा है; धन्यवाद पॉल – Noah

1

पॉल, बहुत बहुत शुक्रिया, लेकिन मैं निम्नलिखित त्रुटि (संदेश बॉक्स) है, हो सकता है मैं अपने पीसी को पुनः आरंभ करने की जरूरत है:

Error 
--------------------------- 
Error HRESULT E_FAIL has been returned from a call to a COM component. 
--------------------------- 
OK 
--------------------------- 

मैं निम्नलिखित समाधान है कि बहुत आसान है का प्रस्ताव है लेकिन यह मेरे

Sub BreakPointsFromSearch() 
    Dim n As Integer = InputBox("Enter the number of search results") 

    For i = 1 To n 
     DTE.ExecuteCommand("Edit.GoToNextLocation") 
     DTE.ExecuteCommand("Debug.ToggleBreakpoint")    
    Next 
End Sub 
संबंधित मुद्दे