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 @@ |
|||||||
|
// <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 @@ |
|||||||
|
// <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 @@ |
|||||||
|
// <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 @@ |
|||||||
|
== 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