1
// Copyright (c) AlphaSierraPapa for the SharpDevelop Team (for details please see \doc\copyright.txt)
2
// This code is distributed under the GNU LGPL (for details please see \doc\license.txt)
6
namespace Debugger.Tests
8
public class StackFrame_VariablesLifetime
10
public int @class = 3;
12
public static void Main()
14
new StackFrame_VariablesLifetime().Function(1);
15
System.Diagnostics.Debugger.Break(); // 5
18
void Function(int argument)
21
System.Diagnostics.Debugger.Break(); // 1
23
System.Diagnostics.Debugger.Break(); // 3
29
int localInSubFunction = 4;
30
System.Diagnostics.Debugger.Break(); // 2, 4
36
namespace Debugger.Tests {
37
public partial class DebuggerTests
39
[NUnit.Framework.Test]
40
public void StackFrame_VariablesLifetime()
42
Value argument = null;
44
Value localInSubFunction = null;
47
StartTest(); // 1 - Enter program
49
argument = process.SelectedStackFrame.GetArgumentValue(0);
50
local = process.SelectedStackFrame.GetLocalVariableValue("local");
51
@class = process.SelectedStackFrame.GetThisValue().GetMemberValue("class");
52
ObjectDump("argument", argument);
53
ObjectDump("local", local);
54
ObjectDump("@class", @class);
56
process.Continue(); // 2 - Go to the SubFunction
57
localInSubFunction = process.SelectedStackFrame.GetLocalVariableValue("localInSubFunction");
58
ObjectDump("argument", argument);
59
ObjectDump("local", local);
60
ObjectDump("@class", @class);
61
ObjectDump("localInSubFunction", @localInSubFunction);
63
process.Continue(); // 3 - Go back to Function
64
ObjectDump("argument", argument);
65
ObjectDump("local", local);
66
ObjectDump("@class", @class);
67
ObjectDump("localInSubFunction", @localInSubFunction);
69
process.Continue(); // 4 - Go to the SubFunction
70
ObjectDump("argument", argument);
71
ObjectDump("local", local);
72
ObjectDump("@class", @class);
73
ObjectDump("localInSubFunction", @localInSubFunction);
74
localInSubFunction = process.SelectedStackFrame.GetLocalVariableValue("localInSubFunction");
75
ObjectDump("localInSubFunction(new)", @localInSubFunction);
77
process.Continue(); // 5 - Setp out of both functions
78
ObjectDump("argument", argument);
79
ObjectDump("local", local);
80
ObjectDump("@class", @class);
81
ObjectDump("localInSubFunction", @localInSubFunction);
90
<?xml version="1.0" encoding="utf-8"?>
93
name="StackFrame_VariablesLifetime.cs">
95
<ModuleLoaded>mscorlib.dll (No symbols)</ModuleLoaded>
96
<ModuleLoaded>StackFrame_VariablesLifetime.exe (Has symbols)</ModuleLoaded>
97
<DebuggingPaused>Break StackFrame_VariablesLifetime.cs:21,4-21,40</DebuggingPaused>
101
Type="System.Int32" />
106
Type="System.Int32" />
111
Type="System.Int32" />
113
<DebuggingPaused>Break StackFrame_VariablesLifetime.cs:30,4-30,40</DebuggingPaused>
117
IsReference="{Exception: Value is no longer valid}"
118
PrimitiveValue="{Exception: Value is no longer valid}"
119
Type="System.Int32" />
124
IsReference="{Exception: Value is no longer valid}"
125
PrimitiveValue="{Exception: Value is no longer valid}"
126
Type="System.Int32" />
131
IsReference="{Exception: Value is no longer valid}"
132
PrimitiveValue="{Exception: Value is no longer valid}"
133
Type="System.Int32" />
138
Type="System.Int32" />
139
</localInSubFunction>
140
<DebuggingPaused>Break StackFrame_VariablesLifetime.cs:23,4-23,40</DebuggingPaused>
144
IsReference="{Exception: Value is no longer valid}"
145
PrimitiveValue="{Exception: Value is no longer valid}"
146
Type="System.Int32" />
151
IsReference="{Exception: Value is no longer valid}"
152
PrimitiveValue="{Exception: Value is no longer valid}"
153
Type="System.Int32" />
158
IsReference="{Exception: Value is no longer valid}"
159
PrimitiveValue="{Exception: Value is no longer valid}"
160
Type="System.Int32" />
165
IsReference="{Exception: Value is no longer valid}"
166
PrimitiveValue="{Exception: Value is no longer valid}"
167
Type="System.Int32" />
168
</localInSubFunction>
169
<DebuggingPaused>Break StackFrame_VariablesLifetime.cs:30,4-30,40</DebuggingPaused>
173
IsReference="{Exception: Value is no longer valid}"
174
PrimitiveValue="{Exception: Value is no longer valid}"
175
Type="System.Int32" />
180
IsReference="{Exception: Value is no longer valid}"
181
PrimitiveValue="{Exception: Value is no longer valid}"
182
Type="System.Int32" />
187
IsReference="{Exception: Value is no longer valid}"
188
PrimitiveValue="{Exception: Value is no longer valid}"
189
Type="System.Int32" />
194
IsReference="{Exception: Value is no longer valid}"
195
PrimitiveValue="{Exception: Value is no longer valid}"
196
Type="System.Int32" />
197
</localInSubFunction>
198
<localInSubFunction_x0028_new_x0029_>
201
Type="System.Int32" />
202
</localInSubFunction_x0028_new_x0029_>
203
<DebuggingPaused>Break StackFrame_VariablesLifetime.cs:15,4-15,40</DebuggingPaused>
207
IsReference="{Exception: Value is no longer valid}"
208
PrimitiveValue="{Exception: Value is no longer valid}"
209
Type="System.Int32" />
214
IsReference="{Exception: Value is no longer valid}"
215
PrimitiveValue="{Exception: Value is no longer valid}"
216
Type="System.Int32" />
221
IsReference="{Exception: Value is no longer valid}"
222
PrimitiveValue="{Exception: Value is no longer valid}"
223
Type="System.Int32" />
228
IsReference="{Exception: Value is no longer valid}"
229
PrimitiveValue="{Exception: Value is no longer valid}"
230
Type="System.Int32" />
231
</localInSubFunction>
235
#endif // EXPECTED_OUTPUT