private static void ExceptionTest(VisualStudioApp app, string filename, string expectedTitle, string expectedDescription, string exceptionType, int expectedLine) { var debug3 = (Debugger3)app.Dte.Debugger; using (new DebuggingGeneralOptionsSetter(app.Dte, enableJustMyCode: true)) { OpenDebuggerProject(app, filename); var exceptionSettings = debug3.ExceptionGroups.Item("Python Exceptions"); exceptionSettings.SetBreakWhenThrown(true, exceptionSettings.Item(exceptionType)); app.Dte.ExecuteCommand("Debug.Start"); WaitForMode(app, dbgDebugMode.dbgBreakMode); exceptionSettings.SetBreakWhenThrown(false, exceptionSettings.Item(exceptionType)); exceptionSettings.SetBreakWhenThrown(true, exceptionSettings.Item(exceptionType)); debug3.ExceptionGroups.ResetAll(); var excepAdorner = app.WaitForExceptionAdornment(); AutomationWrapper.DumpElement(excepAdorner.Element); Assert.AreEqual(expectedDescription, excepAdorner.Description.TrimEnd()); Assert.AreEqual(expectedTitle, excepAdorner.Title.TrimEnd()); Assert.AreEqual((uint)expectedLine, ((StackFrame2)debug3.CurrentThread.StackFrames.Item(1)).LineNumber); debug3.Go(WaitForBreakOrEnd: true); WaitForMode(app, dbgDebugMode.dbgDesignMode); } }