Browse Source
git-svn-id: svn://svn.sharpdevelop.net/sharpdevelop/trunk@1538 1ccf3a8d-04fe-1044-b7c0-cef0b8235c61shortcuts
12 changed files with 223 additions and 124 deletions
@ -0,0 +1,59 @@
@@ -0,0 +1,59 @@
|
||||
// <file>
|
||||
// <copyright see="prj:///doc/copyright.txt"/>
|
||||
// <license see="prj:///doc/license.txt"/>
|
||||
// <owner name="David Srbecký" email="dsrbecky@gmail.com"/>
|
||||
// <version>$Revision: 1534 $</version>
|
||||
// </file>
|
||||
|
||||
using System; |
||||
using System.Collections.Generic; |
||||
using System.Runtime.InteropServices; |
||||
using System.Threading; |
||||
|
||||
using Debugger.Wrappers.CorDebug; |
||||
|
||||
namespace Debugger |
||||
{ |
||||
/// <summary>
|
||||
/// Identifies frame on thread callstack
|
||||
/// </summary>
|
||||
struct FrameID { |
||||
uint chainIndex; |
||||
uint frameIndex; |
||||
|
||||
public uint ChainIndex { |
||||
get { |
||||
return chainIndex; |
||||
} |
||||
} |
||||
|
||||
public uint FrameIndex { |
||||
get { |
||||
return frameIndex; |
||||
} |
||||
} |
||||
|
||||
public FrameID(uint chainIndex, uint frameIndex) |
||||
{ |
||||
this.chainIndex = chainIndex; |
||||
this.frameIndex = frameIndex; |
||||
} |
||||
|
||||
public override int GetHashCode() |
||||
{ |
||||
return chainIndex.GetHashCode() ^ frameIndex.GetHashCode(); |
||||
} |
||||
|
||||
public override bool Equals(object obj) |
||||
{ |
||||
if (!(obj is FrameID)) return false; |
||||
FrameID myFrameID = (FrameID)obj; |
||||
return this.chainIndex == myFrameID.chainIndex && this.frameIndex == myFrameID.frameIndex; |
||||
} |
||||
|
||||
public override string ToString() |
||||
{ |
||||
return string.Format("{0},{1}", this.chainIndex, this.frameIndex); |
||||
} |
||||
} |
||||
} |
@ -0,0 +1,27 @@
@@ -0,0 +1,27 @@
|
||||
// <file>
|
||||
// <copyright see="prj:///doc/copyright.txt"/>
|
||||
// <license see="prj:///doc/license.txt"/>
|
||||
// <owner name="David Srbecký" email="dsrbecky@gmail.com"/>
|
||||
// <version>$Revision$</version>
|
||||
// </file>
|
||||
|
||||
namespace Debugger.Wrappers.CorDebug |
||||
{ |
||||
using System; |
||||
using System.Collections.Generic; |
||||
|
||||
|
||||
public partial class ICorDebugChain |
||||
{ |
||||
uint index; |
||||
|
||||
public uint Index { |
||||
get { |
||||
return index; |
||||
} |
||||
set { |
||||
index = value; |
||||
} |
||||
} |
||||
} |
||||
} |
@ -0,0 +1,27 @@
@@ -0,0 +1,27 @@
|
||||
// <file>
|
||||
// <copyright see="prj:///doc/copyright.txt"/>
|
||||
// <license see="prj:///doc/license.txt"/>
|
||||
// <owner name="David Srbecký" email="dsrbecky@gmail.com"/>
|
||||
// <version>$Revision$</version>
|
||||
// </file>
|
||||
|
||||
namespace Debugger.Wrappers.CorDebug |
||||
{ |
||||
using System; |
||||
using System.Collections.Generic; |
||||
|
||||
|
||||
public partial class ICorDebugFrame |
||||
{ |
||||
uint index; |
||||
|
||||
public uint Index { |
||||
get { |
||||
return index; |
||||
} |
||||
set { |
||||
index = value; |
||||
} |
||||
} |
||||
} |
||||
} |
@ -0,0 +1,7 @@
@@ -0,0 +1,7 @@
|
||||
== Notes == |
||||
- During evaluation some chains may be temporarly removed |
||||
- When two events are invoked and JMC is active, step out skips the second function |
||||
- Step out and step over works properly for exceptions |
||||
- Evaluation kills stepper overs on active frame |
||||
- StepRange callbacks go first (probably in order), StepOut callback are called after that |
||||
- StepRange is much slower then StepOut |
Loading…
Reference in new issue