Browse Source

My recent improvements to the Debugger Exception handling code now manifests itself in a slightly more useful Exception form.

git-svn-id: svn://svn.sharpdevelop.net/sharpdevelop/trunk@3093 1ccf3a8d-04fe-1044-b7c0-cef0b8235c61
shortcuts
Justin Dearing 17 years ago
parent
commit
0a0ceb58ed
  1. 3
      src/AddIns/Misc/Debugger/Debugger.AddIn/Project/Src/Pads/LocalVarPad.cs
  2. 26
      src/AddIns/Misc/Debugger/Debugger.AddIn/Project/Src/Service/ExceptionForm.cs
  3. 4
      src/AddIns/Misc/Debugger/Debugger.AddIn/Project/Src/TreeModel/Adapters/TreeViewExceptionNode.cs
  4. 5
      src/AddIns/Misc/Debugger/Debugger.AddIn/Project/Src/TreeModel/Adapters/TreeViewVarNode.cs
  5. 3
      src/AddIns/Misc/Debugger/Debugger.Core/Project/Src/Debugger/DebugeeInnerException.cs

3
src/AddIns/Misc/Debugger/Debugger.AddIn/Project/Src/Pads/LocalVarPad.cs

@ -151,6 +151,9 @@ namespace ICSharpCode.SharpDevelop.Gui.Pads @@ -151,6 +151,9 @@ namespace ICSharpCode.SharpDevelop.Gui.Pads
TreeColumn valColumn = new TreeColumn();
TreeColumn typeColumn = new TreeColumn();
/// <remarks>
/// This is not used anywhere, but it is neccessary to be overridden in children of AbstractPadContent.
/// </remarks>
public override Control Control {
get {
return localVarList;

26
src/AddIns/Misc/Debugger/Debugger.AddIn/Project/Src/Service/ExceptionForm.cs

@ -64,11 +64,29 @@ namespace ICSharpCode.SharpDevelop.Services @@ -64,11 +64,29 @@ namespace ICSharpCode.SharpDevelop.Services
public static Result Show(Debugger.Exception exception)
{
IDebugeeException ex = exception;
StringBuilder msg = new StringBuilder();
msg.AppendFormat(ResourceService.GetString("MainWindow.Windows.Debug.ExceptionForm.Message"), ex.Type);
msg.AppendLine();
msg.AppendLine("Message:");
msg.Append("\t");
msg.AppendLine(ex.Message);
msg.AppendLine();
while(ex.InnerException != null) {
ex = ex.InnerException;
msg.AppendLine("Inner Exception:");
msg.AppendFormat("Type: [{0}]", ex.Type);
msg.AppendLine();
msg.AppendLine("Message:");
msg.Append("\t");
if (ex.Message != "null") { msg.AppendLine(ex.Message); }
msg.AppendLine();
}
msg.AppendLine("StackTrace:");
msg.AppendLine(exception.Callstack.Replace("\n","\r\n"));
using (ExceptionForm form = new ExceptionForm()) {
form.textBox.Text =
ResourceService.GetString("MainWindow.Windows.Debug.ExceptionForm.Message").Replace("{0}", exception.Type) + "\r\n" +
exception.Message + "\r\n\r\n" +
exception.Callstack.Replace("\n","\r\n");
form.textBox.Text = msg.ToString();
form.pictureBox.Image = ResourceService.GetBitmap((exception.ExceptionType != ExceptionType.DEBUG_EXCEPTION_UNHANDLED)?"Icons.32x32.Warning":"Icons.32x32.Error");
form.buttonContinue.Enabled = exception.ExceptionType != ExceptionType.DEBUG_EXCEPTION_UNHANDLED;
form.ShowDialog(ICSharpCode.SharpDevelop.Gui.WorkbenchSingleton.MainForm);

4
src/AddIns/Misc/Debugger/Debugger.AddIn/Project/Src/TreeModel/Adapters/TreeViewExceptionNode.cs

@ -19,7 +19,9 @@ using ICSharpCode.SharpDevelop.Gui.Pads; @@ -19,7 +19,9 @@ using ICSharpCode.SharpDevelop.Gui.Pads;
namespace Debugger.AddIn.TreeModel
{
// This TreeNodeAdv displays exception data.
/// <summary>
/// This TreeNodeAdv displays exception data.
/// </summary>
public class TreeViewExceptionNode: TreeNodeAdv
{
private static Dictionary<string, bool> expandedNodes = new Dictionary<string, bool>();

5
src/AddIns/Misc/Debugger/Debugger.AddIn/Project/Src/TreeModel/Adapters/TreeViewVarNode.cs

@ -19,7 +19,10 @@ using ICSharpCode.SharpDevelop.Gui.Pads; @@ -19,7 +19,10 @@ using ICSharpCode.SharpDevelop.Gui.Pads;
namespace Debugger.AddIn.TreeModel
{
public partial class TreeViewVarNode: TreeNodeAdv
/// <summary>
/// A child class of TreeNodeAdv that displays exceptions.
/// </summary>
public class TreeViewVarNode: TreeNodeAdv
{
static Dictionary<string, bool> expandedNodes = new Dictionary<string, bool>();

3
src/AddIns/Misc/Debugger/Debugger.Core/Project/Src/Debugger/DebugeeInnerException.cs

@ -19,7 +19,8 @@ namespace Debugger @@ -19,7 +19,8 @@ namespace Debugger
{
Debugger.Value exceptionValue;
internal DebugeeInnerException (Debugger.Value exception) {
internal DebugeeInnerException (Debugger.Value exception)
{
this.exceptionValue = exception;
}

Loading…
Cancel
Save