From 99bb0a198ee0d8dceb69d41fded92bc522b6dbdc Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?David=20Srbeck=C3=BD?= Date: Thu, 17 Jul 2008 21:59:04 +0000 Subject: [PATCH] Fixed breakpoints for whitespace lines git-svn-id: svn://svn.sharpdevelop.net/sharpdevelop/trunk@3236 1ccf3a8d-04fe-1044-b7c0-cef0b8235c61 --- .../Project/Src/TreeModel/ValueNode.cs | 2 +- .../Project/Src/Debugger/SourcecodeSegment.cs | 4 +- .../Project/Src/Values/Value.Primitive.cs | 3 - .../Debugger.Core/Project/Src/Values/Value.cs | 8 ++ .../Project/Src/TestPrograms/Breakpoint.cs | 76 ++++++++++++++----- 5 files changed, 66 insertions(+), 27 deletions(-) diff --git a/src/AddIns/Misc/Debugger/Debugger.AddIn/Project/Src/TreeModel/ValueNode.cs b/src/AddIns/Misc/Debugger/Debugger.AddIn/Project/Src/TreeModel/ValueNode.cs index 0b278908ce..195d000e49 100644 --- a/src/AddIns/Misc/Debugger/Debugger.AddIn/Project/Src/TreeModel/ValueNode.cs +++ b/src/AddIns/Misc/Debugger/Debugger.AddIn/Project/Src/TreeModel/ValueNode.cs @@ -76,7 +76,7 @@ namespace Debugger.AddIn.TreeModel if (DebuggingOptions.Instance.ShowValuesInHexadecimal && val.Type.IsInteger) { this.Text = String.Format("0x{0:X}", val.PrimitiveValue); } else if (val.Type.IsPointer) { - this.Text = String.Format("0x{0:X}", val.PrimitiveValue); + this.Text = String.Format("0x{0:X}", val.PointerAddress); } else { this.Text = val.AsString; } diff --git a/src/AddIns/Misc/Debugger/Debugger.Core/Project/Src/Debugger/SourcecodeSegment.cs b/src/AddIns/Misc/Debugger/Debugger.Core/Project/Src/Debugger/SourcecodeSegment.cs index 1c73f1b3be..46aa96e8ac 100644 --- a/src/AddIns/Misc/Debugger/Debugger.Core/Project/Src/Debugger/SourcecodeSegment.cs +++ b/src/AddIns/Misc/Debugger/Debugger.Core/Project/Src/Debugger/SourcecodeSegment.cs @@ -147,8 +147,8 @@ namespace Debugger ISymUnmanagedMethod symMethod; try { - //uint validLine = symDoc.FindClosestLine((uint)StartLine); - symMethod = symReader.GetMethodFromDocumentPosition(symDoc, (uint)line, (uint)column); + uint validLine = symDoc.FindClosestLine((uint)line); + symMethod = symReader.GetMethodFromDocumentPosition(symDoc, (uint)validLine, (uint)column); } catch { return null; //Not found } diff --git a/src/AddIns/Misc/Debugger/Debugger.Core/Project/Src/Values/Value.Primitive.cs b/src/AddIns/Misc/Debugger/Debugger.Core/Project/Src/Values/Value.Primitive.cs index d1b571fa61..69f0e00fc4 100644 --- a/src/AddIns/Misc/Debugger/Debugger.Core/Project/Src/Values/Value.Primitive.cs +++ b/src/AddIns/Misc/Debugger/Debugger.Core/Project/Src/Values/Value.Primitive.cs @@ -35,9 +35,6 @@ namespace Debugger /// public object PrimitiveValue { get { - if (this.Type.IsPointer) { - return this.CorValue.CastTo().Address; - } if (!this.Type.IsPrimitive) throw new DebuggerException("Value is not a primitive type"); if (this.Type.IsString) { if (this.IsNull) return null; diff --git a/src/AddIns/Misc/Debugger/Debugger.Core/Project/Src/Values/Value.cs b/src/AddIns/Misc/Debugger/Debugger.Core/Project/Src/Values/Value.cs index c335ffe071..127608510e 100644 --- a/src/AddIns/Misc/Debugger/Debugger.Core/Project/Src/Values/Value.cs +++ b/src/AddIns/Misc/Debugger/Debugger.Core/Project/Src/Values/Value.cs @@ -143,6 +143,14 @@ namespace Debugger } } + [Tests.Ignore] + public ulong PointerAddress { + get { + if (!this.Type.IsPointer) throw new DebuggerException("Not a pointer"); + return this.CorValue.CastTo().Value; + } + } + /// Dereferences a pointer type /// Returns null for a null pointer public Value Dereference() diff --git a/src/AddIns/Misc/Debugger/Debugger.Tests/Project/Src/TestPrograms/Breakpoint.cs b/src/AddIns/Misc/Debugger/Debugger.Tests/Project/Src/TestPrograms/Breakpoint.cs index 47cab0bc45..1f5b1445bf 100644 --- a/src/AddIns/Misc/Debugger/Debugger.Tests/Project/Src/TestPrograms/Breakpoint.cs +++ b/src/AddIns/Misc/Debugger/Debugger.Tests/Project/Src/TestPrograms/Breakpoint.cs @@ -16,6 +16,8 @@ namespace Debugger.Tests.TestPrograms System.Diagnostics.Debugger.Break(); System.Diagnostics.Debug.WriteLine("Main 1"); System.Diagnostics.Debug.WriteLine("Main 2"); // Breakpoint + // Breakpoint + System.Diagnostics.Debug.WriteLine("Main 3"); System.Diagnostics.Debugger.Break(); } } @@ -30,17 +32,23 @@ namespace Debugger.Tests { [NUnit.Framework.Test] public void Breakpoint() { - Breakpoint breakpoint = debugger.AddBreakpoint(@"Breakpoint.cs", 18); + Breakpoint breakpoint1 = debugger.AddBreakpoint(@"Breakpoint.cs", 18); + Breakpoint breakpoint2 = debugger.AddBreakpoint(@"Breakpoint.cs", 19); StartTest("Breakpoint.cs"); - Assert.IsTrue(breakpoint.IsSet); - ObjectDump(breakpoint); + Assert.IsTrue(breakpoint1.IsSet); + Assert.IsTrue(breakpoint2.IsSet); + ObjectDump("Breakpoint1", breakpoint1); + ObjectDump("Breakpoint2", breakpoint2); + + process.Continue(); process.Continue(); process.Continue(); process.AsyncContinue(); process.WaitForExit(); - ObjectDump(breakpoint); + ObjectDump("Breakpoint1", breakpoint1); + ObjectDump("Breakpoint2", breakpoint2); EndTest(); } @@ -58,29 +66,55 @@ namespace Debugger.Tests { Breakpoint.exe (Has symbols) System.dll (No symbols) Break Breakpoint.cs:16,4-16,40 - + + + + + + System.Configuration.dll (No symbols) System.Xml.dll (No symbols) Main 1\r\n Breakpoint Breakpoint.cs:18,4-18,49 Main 2\r\n - Break Breakpoint.cs:19,4-19,40 + Breakpoint Breakpoint.cs:20,4-20,49 + Main 3\r\n + Break Breakpoint.cs:21,4-21,40 - + + + + + + #endif // EXPECTED_OUTPUT