Browse Source

Getting properties for generic types.

Updated generic test.

git-svn-id: svn://svn.sharpdevelop.net/sharpdevelop/trunk@2868 1ccf3a8d-04fe-1044-b7c0-cef0b8235c61
shortcuts
David Srbecký 18 years ago
parent
commit
59a57f12c7
  1. 24
      src/AddIns/Misc/Debugger/Debugger.Core/Project/Src/Evals/Eval.cs
  2. 6
      src/AddIns/Misc/Debugger/Debugger.Core/Project/Src/Interop/CorDebug/ICorDebugEval2.cs
  3. 9
      src/AddIns/Misc/Debugger/Debugger.Core/Project/Src/Metadata/DebugType.cs
  4. 112
      src/AddIns/Misc/Debugger/Debugger.Core/Project/Src/Wrappers/CorDebug/Autogenerated/ICorDebugEval2.cs
  5. 337
      src/AddIns/Misc/Debugger/Debugger.Tests/Project/Src/TestPrograms/Generics.cs

24
src/AddIns/Misc/Debugger/Debugger.Core/Project/Src/Evals/Eval.cs

@ -96,6 +96,8 @@ namespace Debugger @@ -96,6 +96,8 @@ namespace Debugger
return this.corEval == corEval;
}
#region Convenience methods
/// <summary> Synchronously calls a function and returns its return value </summary>
public static Value InvokeMethod(Process process, System.Type type, string name, Value thisValue, Value[] args)
{
@ -108,11 +110,13 @@ namespace Debugger @@ -108,11 +110,13 @@ namespace Debugger
return AsyncInvokeMethod(method, thisValue, args).EvaluateNow();
}
#endregion
public static Eval AsyncInvokeMethod(MethodInfo method, Value thisValue, Value[] args)
{
return new Eval(
method.Process,
"Function call: " + method.DeclaringType.FullName + "." + method.Name,
"Function call: " + method.FullName,
delegate(ICorDebugEval corEval) { StartMethodInvoke(corEval, method, thisValue, args); }
);
}
@ -121,6 +125,9 @@ namespace Debugger @@ -121,6 +125,9 @@ namespace Debugger
{
List<ICorDebugValue> corArgs = new List<ICorDebugValue>();
args = args ?? new Value[0];
if (args.Length != method.ParameterCount) {
throw new EvalSetupException("Invalid parameter count");
}
try {
if (thisValue != null) {
if (!(thisValue.IsObject)) {
@ -138,14 +145,23 @@ namespace Debugger @@ -138,14 +145,23 @@ namespace Debugger
throw new EvalSetupException(e.Message);
}
corEval.CallFunction(method.CorFunction, (uint)corArgs.Count, corArgs.ToArray());
ICorDebugType[] genericArgs = method.DeclaringType.GetGenericArgumentsAsCorDebugType();
corEval.CastTo<ICorDebugEval2>().CallParameterizedFunction(
method.CorFunction,
(uint)genericArgs.Length, genericArgs,
(uint)corArgs.Count, corArgs.ToArray()
);
}
#region Convenience methods
public static Value NewString(Process process, string textToCreate)
{
return AsyncNewString(process, textToCreate).EvaluateNow();
}
#endregion
public static Eval AsyncNewString(Process process, string textToCreate)
{
return new Eval(
@ -155,11 +171,15 @@ namespace Debugger @@ -155,11 +171,15 @@ namespace Debugger
);
}
#region Convenience methods
public static Value NewObject(Process process, ICorDebugClass classToCreate)
{
return AsyncNewObject(process, classToCreate).EvaluateNow();
}
#endregion
public static Eval AsyncNewObject(Process process, ICorDebugClass classToCreate)
{
return new Eval(

6
src/AddIns/Misc/Debugger/Debugger.Core/Project/Src/Interop/CorDebug/ICorDebugEval2.cs

@ -17,13 +17,13 @@ namespace Debugger.Interop.CorDebug @@ -17,13 +17,13 @@ namespace Debugger.Interop.CorDebug
public interface ICorDebugEval2
{
[MethodImpl(MethodImplOptions.InternalCall, MethodCodeType=MethodCodeType.Runtime)]
void CallParameterizedFunction([In, MarshalAs(UnmanagedType.Interface)] ICorDebugFunction pFunction, [In] uint nTypeArgs, [In, MarshalAs(UnmanagedType.Interface)] ref ICorDebugType ppTypeArgs, [In] uint nArgs, [In, MarshalAs(UnmanagedType.Interface)] ref ICorDebugValue ppArgs);
void CallParameterizedFunction([In, MarshalAs(UnmanagedType.Interface)] ICorDebugFunction pFunction, [In] uint nTypeArgs, [In, MarshalAs(UnmanagedType.LPArray)] ICorDebugType[] ppTypeArgs, [In] uint nArgs, [In, MarshalAs(UnmanagedType.LPArray)] ICorDebugValue[] ppArgs);
[MethodImpl(MethodImplOptions.InternalCall, MethodCodeType=MethodCodeType.Runtime)]
void CreateValueForType([In, MarshalAs(UnmanagedType.Interface)] ICorDebugType pType, [MarshalAs(UnmanagedType.Interface)] out ICorDebugValue ppValue);
[MethodImpl(MethodImplOptions.InternalCall, MethodCodeType=MethodCodeType.Runtime)]
void NewParameterizedObject([In, MarshalAs(UnmanagedType.Interface)] ICorDebugFunction pConstructor, [In] uint nTypeArgs, [In, MarshalAs(UnmanagedType.Interface)] ref ICorDebugType ppTypeArgs, [In] uint nArgs, [In, MarshalAs(UnmanagedType.Interface)] ref ICorDebugValue ppArgs);
void NewParameterizedObject([In, MarshalAs(UnmanagedType.Interface)] ICorDebugFunction pConstructor, [In] uint nTypeArgs, [In, MarshalAs(UnmanagedType.LPArray)] ICorDebugType[] ppTypeArgs, [In] uint nArgs, [In, MarshalAs(UnmanagedType.LPArray)] ICorDebugValue[] ppArgs);
[MethodImpl(MethodImplOptions.InternalCall, MethodCodeType=MethodCodeType.Runtime)]
void NewParameterizedObjectNoConstructor([In, MarshalAs(UnmanagedType.Interface)] ICorDebugClass pClass, [In] uint nTypeArgs, [In, MarshalAs(UnmanagedType.Interface)] ref ICorDebugType ppTypeArgs);
void NewParameterizedObjectNoConstructor([In, MarshalAs(UnmanagedType.Interface)] ICorDebugClass pClass, [In] uint nTypeArgs, [In, MarshalAs(UnmanagedType.LPArray)] ICorDebugType[] ppTypeArgs);
[MethodImpl(MethodImplOptions.InternalCall, MethodCodeType=MethodCodeType.Runtime)]
void NewParameterizedArray([In, MarshalAs(UnmanagedType.Interface)] ICorDebugType pElementType, [In] uint rank, [In] ref uint dims, [In] ref uint lowBounds);
[MethodImpl(MethodImplOptions.InternalCall, MethodCodeType=MethodCodeType.Runtime)]

9
src/AddIns/Misc/Debugger/Debugger.Core/Project/Src/Metadata/DebugType.cs

@ -148,6 +148,15 @@ namespace Debugger @@ -148,6 +148,15 @@ namespace Debugger
}
}
internal ICorDebugType[] GetGenericArgumentsAsCorDebugType()
{
List<ICorDebugType> types = new List<ICorDebugType>();
foreach(DebugType arg in this.GetGenericArguments()) {
types.Add(arg.CorType);
}
return types.ToArray();
}
/// <summary> Gets a value indicating whether the type is a class </summary>
public bool IsClass {
get {

112
src/AddIns/Misc/Debugger/Debugger.Core/Project/Src/Wrappers/CorDebug/Autogenerated/ICorDebugEval2.cs

@ -95,13 +95,45 @@ namespace Debugger.Wrappers.CorDebug @@ -95,13 +95,45 @@ namespace Debugger.Wrappers.CorDebug
}
public void CallParameterizedFunction(ICorDebugFunction pFunction, uint nTypeArgs, ref ICorDebugType ppTypeArgs, uint nArgs, ref ICorDebugValue ppArgs)
public void CallParameterizedFunction(ICorDebugFunction pFunction, uint nTypeArgs, ICorDebugType[] ppTypeArgs, uint nArgs, ICorDebugValue[] ppArgs)
{
Debugger.Interop.CorDebug.ICorDebugType ref_ppTypeArgs = ppTypeArgs.WrappedObject;
Debugger.Interop.CorDebug.ICorDebugValue ref_ppArgs = ppArgs.WrappedObject;
this.WrappedObject.CallParameterizedFunction(pFunction.WrappedObject, nTypeArgs, ref ref_ppTypeArgs, nArgs, ref ref_ppArgs);
ppTypeArgs = ICorDebugType.Wrap(ref_ppTypeArgs);
ppArgs = ICorDebugValue.Wrap(ref_ppArgs);
Debugger.Interop.CorDebug.ICorDebugType[] array_ppTypeArgs = new Debugger.Interop.CorDebug.ICorDebugType[ppTypeArgs.Length];
for (int i = 0; (i < ppTypeArgs.Length); i = (i + 1))
{
if ((ppTypeArgs[i] != null))
{
array_ppTypeArgs[i] = ppTypeArgs[i].WrappedObject;
}
}
Debugger.Interop.CorDebug.ICorDebugValue[] array_ppArgs = new Debugger.Interop.CorDebug.ICorDebugValue[ppArgs.Length];
for (int i = 0; (i < ppArgs.Length); i = (i + 1))
{
if ((ppArgs[i] != null))
{
array_ppArgs[i] = ppArgs[i].WrappedObject;
}
}
this.WrappedObject.CallParameterizedFunction(pFunction.WrappedObject, nTypeArgs, array_ppTypeArgs, nArgs, array_ppArgs);
for (int i = 0; (i < ppTypeArgs.Length); i = (i + 1))
{
if ((array_ppTypeArgs[i] != null))
{
ppTypeArgs[i] = ICorDebugType.Wrap(array_ppTypeArgs[i]);
} else
{
ppTypeArgs[i] = null;
}
}
for (int i = 0; (i < ppArgs.Length); i = (i + 1))
{
if ((array_ppArgs[i] != null))
{
ppArgs[i] = ICorDebugValue.Wrap(array_ppArgs[i]);
} else
{
ppArgs[i] = null;
}
}
}
public ICorDebugValue CreateValueForType(ICorDebugType pType)
@ -113,20 +145,68 @@ namespace Debugger.Wrappers.CorDebug @@ -113,20 +145,68 @@ namespace Debugger.Wrappers.CorDebug
return ppValue;
}
public void NewParameterizedObject(ICorDebugFunction pConstructor, uint nTypeArgs, ref ICorDebugType ppTypeArgs, uint nArgs, ref ICorDebugValue ppArgs)
public void NewParameterizedObject(ICorDebugFunction pConstructor, uint nTypeArgs, ICorDebugType[] ppTypeArgs, uint nArgs, ICorDebugValue[] ppArgs)
{
Debugger.Interop.CorDebug.ICorDebugType ref_ppTypeArgs = ppTypeArgs.WrappedObject;
Debugger.Interop.CorDebug.ICorDebugValue ref_ppArgs = ppArgs.WrappedObject;
this.WrappedObject.NewParameterizedObject(pConstructor.WrappedObject, nTypeArgs, ref ref_ppTypeArgs, nArgs, ref ref_ppArgs);
ppTypeArgs = ICorDebugType.Wrap(ref_ppTypeArgs);
ppArgs = ICorDebugValue.Wrap(ref_ppArgs);
Debugger.Interop.CorDebug.ICorDebugType[] array_ppTypeArgs = new Debugger.Interop.CorDebug.ICorDebugType[ppTypeArgs.Length];
for (int i = 0; (i < ppTypeArgs.Length); i = (i + 1))
{
if ((ppTypeArgs[i] != null))
{
array_ppTypeArgs[i] = ppTypeArgs[i].WrappedObject;
}
}
Debugger.Interop.CorDebug.ICorDebugValue[] array_ppArgs = new Debugger.Interop.CorDebug.ICorDebugValue[ppArgs.Length];
for (int i = 0; (i < ppArgs.Length); i = (i + 1))
{
if ((ppArgs[i] != null))
{
array_ppArgs[i] = ppArgs[i].WrappedObject;
}
}
this.WrappedObject.NewParameterizedObject(pConstructor.WrappedObject, nTypeArgs, array_ppTypeArgs, nArgs, array_ppArgs);
for (int i = 0; (i < ppTypeArgs.Length); i = (i + 1))
{
if ((array_ppTypeArgs[i] != null))
{
ppTypeArgs[i] = ICorDebugType.Wrap(array_ppTypeArgs[i]);
} else
{
ppTypeArgs[i] = null;
}
}
for (int i = 0; (i < ppArgs.Length); i = (i + 1))
{
if ((array_ppArgs[i] != null))
{
ppArgs[i] = ICorDebugValue.Wrap(array_ppArgs[i]);
} else
{
ppArgs[i] = null;
}
}
}
public void NewParameterizedObjectNoConstructor(ICorDebugClass pClass, uint nTypeArgs, ref ICorDebugType ppTypeArgs)
public void NewParameterizedObjectNoConstructor(ICorDebugClass pClass, uint nTypeArgs, ICorDebugType[] ppTypeArgs)
{
Debugger.Interop.CorDebug.ICorDebugType ref_ppTypeArgs = ppTypeArgs.WrappedObject;
this.WrappedObject.NewParameterizedObjectNoConstructor(pClass.WrappedObject, nTypeArgs, ref ref_ppTypeArgs);
ppTypeArgs = ICorDebugType.Wrap(ref_ppTypeArgs);
Debugger.Interop.CorDebug.ICorDebugType[] array_ppTypeArgs = new Debugger.Interop.CorDebug.ICorDebugType[ppTypeArgs.Length];
for (int i = 0; (i < ppTypeArgs.Length); i = (i + 1))
{
if ((ppTypeArgs[i] != null))
{
array_ppTypeArgs[i] = ppTypeArgs[i].WrappedObject;
}
}
this.WrappedObject.NewParameterizedObjectNoConstructor(pClass.WrappedObject, nTypeArgs, array_ppTypeArgs);
for (int i = 0; (i < ppTypeArgs.Length); i = (i + 1))
{
if ((array_ppTypeArgs[i] != null))
{
ppTypeArgs[i] = ICorDebugType.Wrap(array_ppTypeArgs[i]);
} else
{
ppTypeArgs[i] = null;
}
}
}
public void NewParameterizedArray(ICorDebugType pElementType, uint rank, ref uint dims, ref uint lowBounds)

337
src/AddIns/Misc/Debugger/Debugger.Tests/Project/Src/TestPrograms/Generics.cs

@ -15,15 +15,15 @@ namespace Debugger.Tests.TestPrograms @@ -15,15 +15,15 @@ namespace Debugger.Tests.TestPrograms
{
GenericClass<int, string> gClass = new GenericClass<int, string>();
gClass.Metod(1, "1!");
gClass.GenericMethod<bool>(1, "1!");
GenericClass<int, string>.StaticMetod(1, "1!");
GenericClass<int, string>.StaticGenericMethod<bool>(1, "1!");
gClass.GenericMethod<bool>(2, "2!");
GenericClass<int, string>.StaticMetod(3, "3!");
GenericClass<int, string>.StaticGenericMethod<bool>(4, "4!");
GenericStruct<int, string> gStruct = new GenericStruct<int, string>();
gStruct.Metod(1, "1!");
gStruct.GenericMethod<bool>(1, "1!");
GenericStruct<int, string>.StaticMetod(1, "1!");
GenericStruct<int, string>.StaticGenericMethod<bool>(1, "1!");
gStruct.Metod(5, "5!");
gStruct.GenericMethod<bool>(6, "6!");
GenericStruct<int, string>.StaticMetod(7, "7!");
GenericStruct<int, string>.StaticGenericMethod<bool>(8, "8!");
System.Diagnostics.Debugger.Break();
}
@ -31,6 +31,18 @@ namespace Debugger.Tests.TestPrograms @@ -31,6 +31,18 @@ namespace Debugger.Tests.TestPrograms
public class GenericClass<V, K>
{
public V Prop {
get {
return default(V);
}
}
public static V StaticProp {
get {
return default(V);
}
}
public K Metod(V v, K k)
{
System.Diagnostics.Debugger.Break();
@ -93,19 +105,22 @@ namespace Debugger.Tests { @@ -93,19 +105,22 @@ namespace Debugger.Tests {
{
ExpandProperties(
"StackFrame.MethodInfo",
"MemberInfo.DeclaringType",
"StackFrame.Arguments"
"MemberInfo.DeclaringType"
);
StartTest("Generics.cs");
for(int i = 0; i < 8; i++) {
WaitForPause();
ObjectDump("SelectedStackFrame", process.SelectedStackFrame);
ObjectDump("SelectedStackFrame-GetArguments", process.SelectedStackFrame.GetArgumentValues());
process.Continue();
}
WaitForPause();
ObjectDump("Prop", process.SelectedStackFrame.GetLocalVariableValue("gClass").GetMemberValue("Prop"));
ObjectDump("StaticProp", process.SelectedStackFrame.GetLocalVariableValue("gClass").GetMemberValue("StaticProp"));
process.Continue();
process.WaitForExit();
CheckXmlOutput();
}
@ -146,9 +161,41 @@ namespace Debugger.Tests { @@ -146,9 +161,41 @@ namespace Debugger.Tests {
</MethodInfo>
<HasSymbols>True</HasSymbols>
<HasExpired>False</HasExpired>
<NextStatement>Start=36,4 End=36,40</NextStatement>
<NextStatement>Start=48,4 End=48,40</NextStatement>
<ArgumentCount>2</ArgumentCount>
</SelectedStackFrame>
<SelectedStackFrame-GetArguments Type="Value[]" ToString="Debugger.Value[]">
<Item Type="Value" ToString="v = 1">
<IsArray>False</IsArray>
<ArrayLenght exception="Value is not an array" />
<ArrayRank exception="Value is not an array" />
<ArrayDimensions exception="Value is not an array" />
<Expression>v</Expression>
<IsNull>False</IsNull>
<AsString>1</AsString>
<HasExpired>False</HasExpired>
<Type>System.Int32</Type>
<IsObject>False</IsObject>
<IsPrimitive>True</IsPrimitive>
<IsInteger>True</IsInteger>
<PrimitiveValue>1</PrimitiveValue>
</Item>
<Item Type="Value" ToString="k = 1!">
<IsArray>False</IsArray>
<ArrayLenght exception="Value is not an array" />
<ArrayRank exception="Value is not an array" />
<ArrayDimensions exception="Value is not an array" />
<Expression>k</Expression>
<IsNull>False</IsNull>
<AsString>1!</AsString>
<HasExpired>False</HasExpired>
<Type>System.String</Type>
<IsObject>False</IsObject>
<IsPrimitive>True</IsPrimitive>
<IsInteger>False</IsInteger>
<PrimitiveValue>1!</PrimitiveValue>
</Item>
</SelectedStackFrame-GetArguments>
<DebuggingPaused>Break</DebuggingPaused>
<SelectedStackFrame Type="StackFrame" ToString="Debugger.Tests.TestPrograms.GenericClass&lt;System.Int32,System.String&gt;.GenericMethod">
<MethodInfo Type="MethodInfo" ToString="GenericMethod">
@ -175,9 +222,41 @@ namespace Debugger.Tests { @@ -175,9 +222,41 @@ namespace Debugger.Tests {
</MethodInfo>
<HasSymbols>True</HasSymbols>
<HasExpired>False</HasExpired>
<NextStatement>Start=42,4 End=42,40</NextStatement>
<NextStatement>Start=54,4 End=54,40</NextStatement>
<ArgumentCount>2</ArgumentCount>
</SelectedStackFrame>
<SelectedStackFrame-GetArguments Type="Value[]" ToString="Debugger.Value[]">
<Item Type="Value" ToString="v = 2">
<IsArray>False</IsArray>
<ArrayLenght exception="Value is not an array" />
<ArrayRank exception="Value is not an array" />
<ArrayDimensions exception="Value is not an array" />
<Expression>v</Expression>
<IsNull>False</IsNull>
<AsString>2</AsString>
<HasExpired>False</HasExpired>
<Type>System.Int32</Type>
<IsObject>False</IsObject>
<IsPrimitive>True</IsPrimitive>
<IsInteger>True</IsInteger>
<PrimitiveValue>2</PrimitiveValue>
</Item>
<Item Type="Value" ToString="k = 2!">
<IsArray>False</IsArray>
<ArrayLenght exception="Value is not an array" />
<ArrayRank exception="Value is not an array" />
<ArrayDimensions exception="Value is not an array" />
<Expression>k</Expression>
<IsNull>False</IsNull>
<AsString>2!</AsString>
<HasExpired>False</HasExpired>
<Type>System.String</Type>
<IsObject>False</IsObject>
<IsPrimitive>True</IsPrimitive>
<IsInteger>False</IsInteger>
<PrimitiveValue>2!</PrimitiveValue>
</Item>
</SelectedStackFrame-GetArguments>
<DebuggingPaused>Break</DebuggingPaused>
<SelectedStackFrame Type="StackFrame" ToString="Debugger.Tests.TestPrograms.GenericClass&lt;System.Int32,System.String&gt;.StaticMetod">
<MethodInfo Type="MethodInfo" ToString="StaticMetod">
@ -204,9 +283,41 @@ namespace Debugger.Tests { @@ -204,9 +283,41 @@ namespace Debugger.Tests {
</MethodInfo>
<HasSymbols>True</HasSymbols>
<HasExpired>False</HasExpired>
<NextStatement>Start=48,4 End=48,40</NextStatement>
<NextStatement>Start=60,4 End=60,40</NextStatement>
<ArgumentCount>2</ArgumentCount>
</SelectedStackFrame>
<SelectedStackFrame-GetArguments Type="Value[]" ToString="Debugger.Value[]">
<Item Type="Value" ToString="v = 3">
<IsArray>False</IsArray>
<ArrayLenght exception="Value is not an array" />
<ArrayRank exception="Value is not an array" />
<ArrayDimensions exception="Value is not an array" />
<Expression>v</Expression>
<IsNull>False</IsNull>
<AsString>3</AsString>
<HasExpired>False</HasExpired>
<Type>System.Int32</Type>
<IsObject>False</IsObject>
<IsPrimitive>True</IsPrimitive>
<IsInteger>True</IsInteger>
<PrimitiveValue>3</PrimitiveValue>
</Item>
<Item Type="Value" ToString="k = 3!">
<IsArray>False</IsArray>
<ArrayLenght exception="Value is not an array" />
<ArrayRank exception="Value is not an array" />
<ArrayDimensions exception="Value is not an array" />
<Expression>k</Expression>
<IsNull>False</IsNull>
<AsString>3!</AsString>
<HasExpired>False</HasExpired>
<Type>System.String</Type>
<IsObject>False</IsObject>
<IsPrimitive>True</IsPrimitive>
<IsInteger>False</IsInteger>
<PrimitiveValue>3!</PrimitiveValue>
</Item>
</SelectedStackFrame-GetArguments>
<DebuggingPaused>Break</DebuggingPaused>
<SelectedStackFrame Type="StackFrame" ToString="Debugger.Tests.TestPrograms.GenericClass&lt;System.Int32,System.String&gt;.StaticGenericMethod">
<MethodInfo Type="MethodInfo" ToString="StaticGenericMethod">
@ -233,9 +344,41 @@ namespace Debugger.Tests { @@ -233,9 +344,41 @@ namespace Debugger.Tests {
</MethodInfo>
<HasSymbols>True</HasSymbols>
<HasExpired>False</HasExpired>
<NextStatement>Start=54,4 End=54,40</NextStatement>
<NextStatement>Start=66,4 End=66,40</NextStatement>
<ArgumentCount>2</ArgumentCount>
</SelectedStackFrame>
<SelectedStackFrame-GetArguments Type="Value[]" ToString="Debugger.Value[]">
<Item Type="Value" ToString="v = 4">
<IsArray>False</IsArray>
<ArrayLenght exception="Value is not an array" />
<ArrayRank exception="Value is not an array" />
<ArrayDimensions exception="Value is not an array" />
<Expression>v</Expression>
<IsNull>False</IsNull>
<AsString>4</AsString>
<HasExpired>False</HasExpired>
<Type>System.Int32</Type>
<IsObject>False</IsObject>
<IsPrimitive>True</IsPrimitive>
<IsInteger>True</IsInteger>
<PrimitiveValue>4</PrimitiveValue>
</Item>
<Item Type="Value" ToString="k = 4!">
<IsArray>False</IsArray>
<ArrayLenght exception="Value is not an array" />
<ArrayRank exception="Value is not an array" />
<ArrayDimensions exception="Value is not an array" />
<Expression>k</Expression>
<IsNull>False</IsNull>
<AsString>4!</AsString>
<HasExpired>False</HasExpired>
<Type>System.String</Type>
<IsObject>False</IsObject>
<IsPrimitive>True</IsPrimitive>
<IsInteger>False</IsInteger>
<PrimitiveValue>4!</PrimitiveValue>
</Item>
</SelectedStackFrame-GetArguments>
<DebuggingPaused>Break</DebuggingPaused>
<SelectedStackFrame Type="StackFrame" ToString="Debugger.Tests.TestPrograms.GenericStruct&lt;System.Int32,System.String&gt;.Metod">
<MethodInfo Type="MethodInfo" ToString="Metod">
@ -262,9 +405,41 @@ namespace Debugger.Tests { @@ -262,9 +405,41 @@ namespace Debugger.Tests {
</MethodInfo>
<HasSymbols>True</HasSymbols>
<HasExpired>False</HasExpired>
<NextStatement>Start=63,4 End=63,40</NextStatement>
<NextStatement>Start=75,4 End=75,40</NextStatement>
<ArgumentCount>2</ArgumentCount>
</SelectedStackFrame>
<SelectedStackFrame-GetArguments Type="Value[]" ToString="Debugger.Value[]">
<Item Type="Value" ToString="v = 5">
<IsArray>False</IsArray>
<ArrayLenght exception="Value is not an array" />
<ArrayRank exception="Value is not an array" />
<ArrayDimensions exception="Value is not an array" />
<Expression>v</Expression>
<IsNull>False</IsNull>
<AsString>5</AsString>
<HasExpired>False</HasExpired>
<Type>System.Int32</Type>
<IsObject>False</IsObject>
<IsPrimitive>True</IsPrimitive>
<IsInteger>True</IsInteger>
<PrimitiveValue>5</PrimitiveValue>
</Item>
<Item Type="Value" ToString="k = 5!">
<IsArray>False</IsArray>
<ArrayLenght exception="Value is not an array" />
<ArrayRank exception="Value is not an array" />
<ArrayDimensions exception="Value is not an array" />
<Expression>k</Expression>
<IsNull>False</IsNull>
<AsString>5!</AsString>
<HasExpired>False</HasExpired>
<Type>System.String</Type>
<IsObject>False</IsObject>
<IsPrimitive>True</IsPrimitive>
<IsInteger>False</IsInteger>
<PrimitiveValue>5!</PrimitiveValue>
</Item>
</SelectedStackFrame-GetArguments>
<DebuggingPaused>Break</DebuggingPaused>
<SelectedStackFrame Type="StackFrame" ToString="Debugger.Tests.TestPrograms.GenericStruct&lt;System.Int32,System.String&gt;.GenericMethod">
<MethodInfo Type="MethodInfo" ToString="GenericMethod">
@ -291,9 +466,41 @@ namespace Debugger.Tests { @@ -291,9 +466,41 @@ namespace Debugger.Tests {
</MethodInfo>
<HasSymbols>True</HasSymbols>
<HasExpired>False</HasExpired>
<NextStatement>Start=69,4 End=69,40</NextStatement>
<NextStatement>Start=81,4 End=81,40</NextStatement>
<ArgumentCount>2</ArgumentCount>
</SelectedStackFrame>
<SelectedStackFrame-GetArguments Type="Value[]" ToString="Debugger.Value[]">
<Item Type="Value" ToString="v = 6">
<IsArray>False</IsArray>
<ArrayLenght exception="Value is not an array" />
<ArrayRank exception="Value is not an array" />
<ArrayDimensions exception="Value is not an array" />
<Expression>v</Expression>
<IsNull>False</IsNull>
<AsString>6</AsString>
<HasExpired>False</HasExpired>
<Type>System.Int32</Type>
<IsObject>False</IsObject>
<IsPrimitive>True</IsPrimitive>
<IsInteger>True</IsInteger>
<PrimitiveValue>6</PrimitiveValue>
</Item>
<Item Type="Value" ToString="k = 6!">
<IsArray>False</IsArray>
<ArrayLenght exception="Value is not an array" />
<ArrayRank exception="Value is not an array" />
<ArrayDimensions exception="Value is not an array" />
<Expression>k</Expression>
<IsNull>False</IsNull>
<AsString>6!</AsString>
<HasExpired>False</HasExpired>
<Type>System.String</Type>
<IsObject>False</IsObject>
<IsPrimitive>True</IsPrimitive>
<IsInteger>False</IsInteger>
<PrimitiveValue>6!</PrimitiveValue>
</Item>
</SelectedStackFrame-GetArguments>
<DebuggingPaused>Break</DebuggingPaused>
<SelectedStackFrame Type="StackFrame" ToString="Debugger.Tests.TestPrograms.GenericStruct&lt;System.Int32,System.String&gt;.StaticMetod">
<MethodInfo Type="MethodInfo" ToString="StaticMetod">
@ -320,9 +527,41 @@ namespace Debugger.Tests { @@ -320,9 +527,41 @@ namespace Debugger.Tests {
</MethodInfo>
<HasSymbols>True</HasSymbols>
<HasExpired>False</HasExpired>
<NextStatement>Start=75,4 End=75,40</NextStatement>
<NextStatement>Start=87,4 End=87,40</NextStatement>
<ArgumentCount>2</ArgumentCount>
</SelectedStackFrame>
<SelectedStackFrame-GetArguments Type="Value[]" ToString="Debugger.Value[]">
<Item Type="Value" ToString="v = 7">
<IsArray>False</IsArray>
<ArrayLenght exception="Value is not an array" />
<ArrayRank exception="Value is not an array" />
<ArrayDimensions exception="Value is not an array" />
<Expression>v</Expression>
<IsNull>False</IsNull>
<AsString>7</AsString>
<HasExpired>False</HasExpired>
<Type>System.Int32</Type>
<IsObject>False</IsObject>
<IsPrimitive>True</IsPrimitive>
<IsInteger>True</IsInteger>
<PrimitiveValue>7</PrimitiveValue>
</Item>
<Item Type="Value" ToString="k = 7!">
<IsArray>False</IsArray>
<ArrayLenght exception="Value is not an array" />
<ArrayRank exception="Value is not an array" />
<ArrayDimensions exception="Value is not an array" />
<Expression>k</Expression>
<IsNull>False</IsNull>
<AsString>7!</AsString>
<HasExpired>False</HasExpired>
<Type>System.String</Type>
<IsObject>False</IsObject>
<IsPrimitive>True</IsPrimitive>
<IsInteger>False</IsInteger>
<PrimitiveValue>7!</PrimitiveValue>
</Item>
</SelectedStackFrame-GetArguments>
<DebuggingPaused>Break</DebuggingPaused>
<SelectedStackFrame Type="StackFrame" ToString="Debugger.Tests.TestPrograms.GenericStruct&lt;System.Int32,System.String&gt;.StaticGenericMethod">
<MethodInfo Type="MethodInfo" ToString="StaticGenericMethod">
@ -349,10 +588,74 @@ namespace Debugger.Tests { @@ -349,10 +588,74 @@ namespace Debugger.Tests {
</MethodInfo>
<HasSymbols>True</HasSymbols>
<HasExpired>False</HasExpired>
<NextStatement>Start=81,4 End=81,40</NextStatement>
<NextStatement>Start=93,4 End=93,40</NextStatement>
<ArgumentCount>2</ArgumentCount>
</SelectedStackFrame>
<SelectedStackFrame-GetArguments Type="Value[]" ToString="Debugger.Value[]">
<Item Type="Value" ToString="v = 8">
<IsArray>False</IsArray>
<ArrayLenght exception="Value is not an array" />
<ArrayRank exception="Value is not an array" />
<ArrayDimensions exception="Value is not an array" />
<Expression>v</Expression>
<IsNull>False</IsNull>
<AsString>8</AsString>
<HasExpired>False</HasExpired>
<Type>System.Int32</Type>
<IsObject>False</IsObject>
<IsPrimitive>True</IsPrimitive>
<IsInteger>True</IsInteger>
<PrimitiveValue>8</PrimitiveValue>
</Item>
<Item Type="Value" ToString="k = 8!">
<IsArray>False</IsArray>
<ArrayLenght exception="Value is not an array" />
<ArrayRank exception="Value is not an array" />
<ArrayDimensions exception="Value is not an array" />
<Expression>k</Expression>
<IsNull>False</IsNull>
<AsString>8!</AsString>
<HasExpired>False</HasExpired>
<Type>System.String</Type>
<IsObject>False</IsObject>
<IsPrimitive>True</IsPrimitive>
<IsInteger>False</IsInteger>
<PrimitiveValue>8!</PrimitiveValue>
</Item>
</SelectedStackFrame-GetArguments>
<DebuggingPaused>Break</DebuggingPaused>
<DebuggingPaused>EvalComplete</DebuggingPaused>
<Prop Type="Value" ToString="gClass.Prop = 0">
<IsArray>False</IsArray>
<ArrayLenght exception="Value is not an array" />
<ArrayRank exception="Value is not an array" />
<ArrayDimensions exception="Value is not an array" />
<Expression>gClass.Prop</Expression>
<IsNull>False</IsNull>
<AsString>0</AsString>
<HasExpired>False</HasExpired>
<Type>System.Int32</Type>
<IsObject>False</IsObject>
<IsPrimitive>True</IsPrimitive>
<IsInteger>True</IsInteger>
<PrimitiveValue>0</PrimitiveValue>
</Prop>
<DebuggingPaused>EvalComplete</DebuggingPaused>
<StaticProp Type="Value" ToString="Debugger.Tests.TestPrograms.GenericClass&lt;System.Int32,System.String&gt;.StaticProp = 0">
<IsArray>False</IsArray>
<ArrayLenght exception="Value is not an array" />
<ArrayRank exception="Value is not an array" />
<ArrayDimensions exception="Value is not an array" />
<Expression>Debugger.Tests.TestPrograms.GenericClass&lt;System.Int32,System.String&gt;.StaticProp</Expression>
<IsNull>False</IsNull>
<AsString>0</AsString>
<HasExpired>False</HasExpired>
<Type>System.Int32</Type>
<IsObject>False</IsObject>
<IsPrimitive>True</IsPrimitive>
<IsInteger>True</IsInteger>
<PrimitiveValue>0</PrimitiveValue>
</StaticProp>
<ProcessExited />
</Test>
</DebuggerTests>

Loading…
Cancel
Save