diff --git a/src/AddIns/Misc/Debugger/Debugger.AddIn/Project/Src/Service/WindowsDebugger.cs b/src/AddIns/Misc/Debugger/Debugger.AddIn/Project/Src/Service/WindowsDebugger.cs
index dd9b0ccef7..755ce75fa4 100644
--- a/src/AddIns/Misc/Debugger/Debugger.AddIn/Project/Src/Service/WindowsDebugger.cs
+++ b/src/AddIns/Misc/Debugger/Debugger.AddIn/Project/Src/Service/WindowsDebugger.cs
@@ -607,7 +607,13 @@ namespace ICSharpCode.SharpDevelop.Services
// Need to intercept now so that we can evaluate properties
if (e.Process.SelectedThread.InterceptCurrentException()) {
msg.AppendLine(e.Exception.ToString());
- msg.Append(e.Exception.GetStackTrace(StringParser.Parse("${res:MainWindow.Windows.Debug.ExceptionForm.LineFormat.EndOfInnerException}")));
+ string stackTrace;
+ try {
+ stackTrace = e.Exception.GetStackTrace(StringParser.Parse("${res:MainWindow.Windows.Debug.ExceptionForm.LineFormat.EndOfInnerException}"));
+ } catch (GetValueException) {
+ stackTrace = e.Process.SelectedThread.GetStackTrace(StringParser.Parse("${res:MainWindow.Windows.Debug.ExceptionForm.LineFormat.Symbols}"), StringParser.Parse("${res:MainWindow.Windows.Debug.ExceptionForm.LineFormat.NoSymbols}"));
+ }
+ msg.Append(stackTrace);
} else {
// For example, happens on stack overflow
msg.AppendLine(StringParser.Parse("${res:MainWindow.Windows.Debug.ExceptionForm.Error.CannotInterceptException}"));
diff --git a/src/AddIns/Misc/Debugger/Debugger.Core/Project/Src/Debugger/Exception.cs b/src/AddIns/Misc/Debugger/Debugger.Core/Project/Src/Debugger/Exception.cs
index 6857646bee..96a4f9e1fa 100644
--- a/src/AddIns/Misc/Debugger/Debugger.Core/Project/Src/Debugger/Exception.cs
+++ b/src/AddIns/Misc/Debugger/Debugger.Core/Project/Src/Debugger/Exception.cs
@@ -79,6 +79,9 @@ namespace Debugger
return GetStackTrace("--- End of inner exception stack trace ---");
}
+ /// Returs formated stacktrace for the exception
+ /// Getting the stacktrace involves property
+ /// evaluation so GetValueException can be thrown in some cicumstances.
public string GetStackTrace(string endOfInnerExceptionFormat)
{
StringBuilder sb = new StringBuilder();