Browse Source

add support for async methods in debug info

pull/18/head
Siegfried Pammer 14 years ago
parent
commit
54ee299513
  1. 4
      src/AddIns/Debugger/Debugger.Core/MetaData/DebugMethodInfo.cs
  2. 10
      src/AddIns/Debugger/Debugger.Core/MetaData/DebugType.cs

4
src/AddIns/Debugger/Debugger.Core/MetaData/DebugMethodInfo.cs

@ -548,7 +548,7 @@ namespace Debugger.MetaData @@ -548,7 +548,7 @@ namespace Debugger.MetaData
return new List<DebugLocalVariableInfo>();
localVariables = GetLocalVariablesInScope(this.SymMethod.GetRootScope());
if (declaringType.IsDisplayClass || declaringType.IsYieldEnumerator) {
if (declaringType.IsDisplayClass || declaringType.IsYieldEnumerator || declaringType.IsAsyncStateMachine) {
// Get display class from self
AddCapturedLocalVariables(
localVariables,
@ -593,7 +593,7 @@ namespace Debugger.MetaData @@ -593,7 +593,7 @@ namespace Debugger.MetaData
static void AddCapturedLocalVariables(List<DebugLocalVariableInfo> vars, int scopeStartOffset, int scopeEndOffset, ValueGetter getCaptureClass, DebugType captureClassType)
{
if (captureClassType.IsDisplayClass || captureClassType.IsYieldEnumerator) {
if (captureClassType.IsDisplayClass || captureClassType.IsYieldEnumerator || captureClassType.IsAsyncStateMachine) {
foreach(DebugFieldInfo fieldInfo in captureClassType.GetFields()) {
DebugFieldInfo fieldInfoCopy = fieldInfo;
if (fieldInfo.Name.StartsWith("CS$")) continue; // Ignore

10
src/AddIns/Debugger/Debugger.Core/MetaData/DebugType.cs

@ -818,6 +818,16 @@ namespace Debugger.MetaData @@ -818,6 +818,16 @@ namespace Debugger.MetaData
}
}
public bool IsAsyncStateMachine {
get {
if (this.IsCompilerGenerated) {
// TODO : replace this by typeof(...).FullName in later releases
return GetInterface("System.Runtime.CompilerServices.IAsyncStateMachine") != null;
}
return false;
}
}
bool IDebugMemberInfo.IsAssembly {
get { return false; }
}

Loading…
Cancel
Save