如何在Visual Studio外接程序中获得断点/异常处的当前行号
本文关键字:异常 断点 Visual Studio 程序 | 更新日期: 2023-09-27 17:51:06
我正在摆弄Visual Studio插件API,试图看看我想做的事情是否可能。我现在正在做的一件事是:
public void Exec(string commandName, vsCommandExecOption executeOption, ref object varIn, ref object varOut, ref bool handled)
{
_applicationObject.Events.DebuggerEvents.OnExceptionThrown += DebuggerEvents_OnExceptionThrown;
handled = false;
if(executeOption == vsCommandExecOption.vsCommandExecOptionDoDefault)
{
if(commandName == "MyAddin1.Connect.MyAddin1")
{
handled = true;
return;
}
}
}
void DebuggerEvents_OnExceptionThrown(string ExceptionType, string Name, int Code, string Description, ref dbgExceptionAction ExceptionAction)
{
//how to get line number here?
}
理想情况下,我希望能够获得当前函数和行号,无论何时异常抛出的程序正在调试。这可能吗?
这些信息显然是从调试信息中获取的。因此,它并不总是可用的,我想这就是为什么在这种情况下StackFrames
对象不实现它是有意义的。
GetExpression
来做这个。在简介:var tmp = dte.Debugger.GetExpression(
"new System.Diagnostics.StackTrace(true).ToString();", true);
这将返回一个带有堆栈跟踪的字符串,包括文件和行号…但是,您必须解析这个返回的字符串才能实际使用它,我认为这比更常见的