तहत परियोजना -> गुण -> डीबग -> प्रारंभ कार्रवाई आप बाहरी कार्यक्रम प्रारंभ करें और अपनी app.exe का पथ दर्ज करें विकल्प निर्दिष्ट करना चाहिए। यह संलग्न डीबगर के साथ app.exe लॉन्च करना चाहिए।
भी देखें How to: Change the Start Action for Application Debugging
अपडेट: दृश्य स्टूडियो में ब्रेकप्वाइंट या तो एक निश्चित स्थान (एक स्रोत फ़ाइल में कोड की अर्थात एक विशिष्ट लाइन) या एक समारोह नाम के लिए बाध्य कर रहे हैं। इसलिए मूल रूप से आपके असेंबली में किसी फ़ंक्शन को तोड़ने के लिए दो विकल्प होते हैं: या तो सभी फ़ंक्शन घोषणाओं पर या सभी फ़ंक्शन नामों पर ब्रेकपॉइंट्स डालें (डीबग -> नया ब्रेकपॉइंट -> फ़ंक्शन नाम पर ब्रेक करें)। दुर्भाग्य से, बाद वाले विकल्प को पूर्ण फ़ंक्शन नाम की आवश्यकता होती है और वाइल्डकार्ड की अनुमति नहीं देती है।
आपके अन्य लाइब्रेरी फ़ंक्शंस की शुरुआत में Debug.Assert(false)
स्थान पर रखने का एक और विकल्प है।
फिर भी एक और विकल्प विजुअल स्टूडियो मैक्रो का उपयोग करना होगा। अपने कोड डोम से अधिक दोहराता नीचे मैक्रो और सभी सार्वजनिक तरीकों और गुण के लिए एक ब्रेकपाइंट जोड़ता है:
Option Strict Off
Option Explicit Off
Imports System
Imports EnvDTE
Imports EnvDTE80
Imports EnvDTE90
Imports System.Diagnostics
Imports System.Windows.Forms
Public Module Breakpoints
Sub AddBreakpointsToAllFunctionsAndProperties()
Try
If DTE.ActiveSolutionProjects.Length <> 1 Then
MsgBox("Select one project within the Solution Explorer, then re-run this macro.")
Exit Sub
End If
AddBreakpointsToProject(DTE.ActiveSolutionProjects(0))
Catch ex As System.Exception
MessageBox.Show(ex.ToString)
End Try
End Sub
Private Sub AddBreakpointsToProject(ByVal proj As Project)
For i As Integer = 1 To proj.ProjectItems.Count
If Not proj.ProjectItems.Item(i).FileCodeModel Is Nothing Then
AddBreakpointsToProjectItems(proj.ProjectItems.Item(i).FileCodeModel.CodeElements)
End If
Next
End Sub
Private Sub AddBreakpointsToProjectItems(ByVal colCodeElements As CodeElements)
Dim objCodeElement As EnvDTE.CodeElement
If Not (colCodeElements Is Nothing) Then
For Each objCodeElement In colCodeElements
AddBreakpointsToProjectItem(objCodeElement)
Next
End If
End Sub
Private Sub AddBreakpointsToProjectItem(ByVal objCodeElement As CodeElement)
Dim objCodeNamespace As EnvDTE.CodeNamespace
Dim objCodeType As EnvDTE.CodeType
Dim objCodeFunction As EnvDTE.CodeFunction
Dim objCodeProperty As EnvDTE.CodeProperty
Try
'MessageBox.Show(objCodeElement.FullName & " (Kind: " & objCodeElement.Kind.ToString & ")")
If objCodeElement.Kind = vsCMElement.vsCMElementFunction Then
objCodeFunction = DirectCast(objCodeElement, EnvDTE.CodeFunction)
If objCodeFunction.Access = vsCMAccess.vsCMAccessPublic Then
DTE.Debugger.Breakpoints.Add(objCodeElement.FullName)
End If
ElseIf objCodeElement.Kind = vsCMElement.vsCMElementProperty Then
objCodeProperty = DirectCast(objCodeElement, EnvDTE.CodeProperty)
DTE.Debugger.Breakpoints.Add(objCodeElement.FullName)
End If
Catch ex As System.Exception
' Ignore
End Try
If TypeOf objCodeElement Is EnvDTE.CodeNamespace Then
objCodeNamespace = CType(objCodeElement, EnvDTE.CodeNamespace)
AddBreakpointsToProjectItems(objCodeNamespace.Members)
ElseIf TypeOf objCodeElement Is EnvDTE.CodeType Then
objCodeType = CType(objCodeElement, EnvDTE.CodeType)
AddBreakpointsToProjectItems(objCodeType.Members)
ElseIf TypeOf objCodeElement Is EnvDTE.CodeFunction Then
objCodeFunction = DirectCast(objCodeElement, EnvDTE.CodeFunction)
AddBreakpointsToProjectItems(CType(objCodeElement, CodeFunction).Parameters)
End If
End Sub
End Module
स्रोत
2010-04-12 12:40:09
विजुअल स्टूडियो का कौन सा संस्करण और किस भाषा के लिए यह है? – ChrisF
वीएस 2008 में सी # के लिए जांच की गई, लेकिन अगर मुझे सही याद है तो यह बहुत ही समान है या वीएस 2005 में और वीबी के लिए भी समान है। ध्यान दें कि यह एक्सप्रेस संस्करणों में समर्थित नहीं है। –
ठीक है, हाँ यह उपयोगी जानकारी है। धन्यवाद। लेकिन मेरा वास्तविक सवाल यह है कि जब भी app.exe कॉल * mylib.dll की किसी * विधि को डीबगर में डीबगर * स्वचालित रूप से * ब्रेक (यानी बिना किसी ब्रेकपॉइंट्स) को डीबगर में चाहिए। मान लें कि mylib.dll में कई एंट्री पॉइंट फ़ंक्शंस हो सकते हैं जिन्हें कॉल किया जा सकता है, इसलिए सभी विधियों पर मैन्युअल रूप से ब्रेकपॉइंट डालना मुश्किल है :) – mishal153