一種可能性似乎如果你寫自己的調試擴展
http://msdn.microsoft.com/en-us/library/ff537943(v=vs.85).aspx
我試圖讓這些與以前的單工作,是合成的符號,但沒有多少運氣。我無法從調試引擎獲得IDebugSymbols3接口,但這可能是我的錯誤。假設您實際上可以從調試擴展中檢索該接口,則想法是通過AddSyntheticSymbol註冊jitted方法。
另一種選擇,可以從單聲道內產生.DBG文件和那些符號加載到調試器(類似於Xdebug的用於GDB):
http://www.microsoft.com/msj/0399/hood/hood0399.aspx
更新
下面的宏意願輸出本機和託管符號的混合調用堆棧從單聲道到命令窗口:
Imports System
Imports EnvDTE
Imports EnvDTE80
Imports EnvDTE90
Imports EnvDTE90a
Imports EnvDTE100
Imports System.Diagnostics
Public Module Module1
Sub PrintStackTrace()
If DTE.Debugger.CurrentProgram Is Nothing Then
DTE.StatusBar.Text = "No program is currently being debugged."
Exit Sub
End If
For index = 1 To DTE.Debugger.CurrentThread.StackFrames.Count
Dim frame = DTE.Debugger.CurrentThread.StackFrames.Item(index)
Try
Dim funcAddr = CLng("&h" & frame.FunctionName)
Dim statement As String
statement = "{,,mono.dll}mono_pmip((void*)" & funcAddr & ")"
DTE.Debugger.ExecuteStatement(statement, 100, False)
Catch E As Exception
Dim win = DTE.Windows.Item(EnvDTE.Constants.vsWindowKindCommandWindow)
win.Object.OutputString(frame.FunctionName & vbCrLf)
End Try
Next
End Sub
End Module