--- a/tests/GDBDebuggerTestsR.st Sun Feb 04 21:18:15 2018 +0000
+++ b/tests/GDBDebuggerTestsR.st Sun Feb 04 23:37:35 2018 +0000
@@ -77,7 +77,7 @@
!GDBDebuggerTestsR methodsFor:'tests - basic'!
test_02
- | inferior1 thread1 frame1 frame2 |
+ | inferior1 thread1 frame1 frame2 seqNo1 seqNo2 |
debugger := GDBDebugger new.
self assert: debugger isConnected.
@@ -115,15 +115,19 @@
self assert: frame2 variables third name = 'i'.
self assert: frame2 variables fourth name = 'f'.
+ seqNo1 := debugger currentInferiorStateSequnceNumber.
+
debugger send: 'd'.
debugger send: 'c' andWaitFor: GDBThreadGroupExitedEvent.
self assert: thread1 isDead.
+ seqNo2 := debugger currentInferiorStateSequnceNumber.
+ self assert: seqNo1 ~~ seqNo2.
debugger send: 'quit' andWait: false.
"Created: / 28-02-2015 / 00:55:55 / Jan Vrany <jan.vrany@fit.cvut.cz>"
- "Modified: / 12-07-2017 / 13:55:19 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+ "Modified: / 12-02-2018 / 22:50:52 / Jan Vrany <jan.vrany@fit.cvut.cz>"
"Modified: / 19-01-2018 / 09:23:24 / jv"
!
@@ -374,6 +378,30 @@
"Modified: / 01-02-2018 / 21:04:23 / Jan Vrany <jan.vrany@fit.cvut.cz>"
!
+test_stack_02
+ | stack1 stack2 |
+
+ debugger := GDBDebugger new.
+ self assert: debugger isConnected.
+ debugger executable: GDBDebuggeesResource current binaryVariables.
+ debugger send: 'b set_data_i'.
+ debugger send: 'r' andWaitFor: GDBStoppedEvent.
+
+ stack1 := debugger selectedInferior threads first stack.
+ debugger send: 'c' andWaitFor: GDBStoppedEvent.
+ stack2 := debugger selectedInferior threads first stack.
+ self assert: stack1 size == 2.
+ self assert: stack2 size == 2.
+ self assert: stack1 first ~~ stack2 first.
+
+ debugger send: 'd'.
+ debugger send: 'c' andWaitFor: GDBThreadGroupExitedEvent.
+ debugger send: 'quit' andWait: false.
+
+ "Created: / 12-02-2018 / 21:46:48 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+ "Modified: / 15-02-2018 / 09:16:05 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+!
+
test_variables_01
| variables d |
@@ -466,6 +494,7 @@
debugger send: 'b set_data_i'.
debugger send: 'r' andWaitFor: GDBStoppedEvent.
+ debugger send: 'del'.
self assert: debugger selectedInferior threads first stack second func = 'main'.
variables := debugger selectedInferior threads first stack second variables.
@@ -497,6 +526,92 @@
debugger send: 'quit' andWait: false.
"Created: / 01-02-2018 / 21:57:01 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+ "Modified: / 12-02-2018 / 22:36:53 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+!
+
+test_variables_04
+ "
+ Tests that the variable object get's invalid after
+ inferior terminated.
+ "
+ | variables d d_as_i_a events seqNo1 seqNo2 |
+
+ debugger := GDBDebugger new.
+ events := OrderedCollection new.
+ debugger announcer when: GDBEvent send: #add: to: events.
+
+ debugger executable: GDBDebuggeesResource current binaryVariables.
+
+
+ debugger send: 'b set_data_i'.
+ debugger send: 'r' andWaitFor: GDBStoppedEvent.
+ seqNo1 := debugger currentInferiorStateSequnceNumber.
+
+ self assert: debugger selectedInferior threads first stack second func = 'main'.
+ variables := debugger selectedInferior threads first stack second variables.
+ d := variables third varobj.
+ self assert: d expression = 'd'.
+ self assert: d isValid.
+ d_as_i_a := d children third children first children first.
+ self assert: d_as_i_a expression = 'a'.
+ self assert: d_as_i_a isValid.
+
+ debugger send: 'dis 1'.
+ debugger send: 'c' andWaitFor: GDBThreadGroupExitedEvent.
+ seqNo2 := debugger currentInferiorStateSequnceNumber.
+
+ self assert: seqNo1 ~~ seqNo2.
+ self assert: d isValid not.
+ self assert: d value = '<invalid>'.
+ self assert: d children isEmpty.
+ self assert: d_as_i_a isValid not.
+ self assert: d_as_i_a value = '<invalid>'.
+ self assert: debugger isConnected.
+
+ debugger send: 'quit' andWait: false.
+
+ "Created: / 04-02-2018 / 22:04:59 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+ "Modified: / 13-02-2018 / 10:15:18 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+!
+
+test_variables_05
+ "
+ Tests that the variable object get's invalid after
+ frame returned
+ "
+ | variables d |
+
+ debugger := GDBDebugger new.
+ debugger executable: GDBDebuggeesResource current binaryVariables.
+
+ debugger send: 'b set_data_i'.
+ debugger send: 'r' andWaitFor: GDBStoppedEvent.
+
+ self assert: debugger selectedInferior threads first stack first func = 'set_data_i'.
+ variables := debugger selectedInferior threads first stack first variables.
+ d := variables second varobj.
+ self assert: d expression = 'i'.
+ self assert: d isValid.
+ self assert: d inScope.
+
+ debugger send: 'finish' andWaitFor: GDBStoppedEvent.
+
+ self assert: d isValid.
+ self assert: d inScope not.
+ self assert: d hasChanged.
+ self assert: d value = '<out-of-scope>'.
+
+ debugger send: 'continue' andWaitFor: GDBStoppedEvent.
+
+ self assert: d isValid.
+ self assert: d inScope.
+ self assert: d hasChanged.
+ self assert: d value = '24'.
+ self assert: debugger isConnected.
+
+ debugger send: 'quit' andWait: false.
+
+ "Created: / 12-02-2018 / 21:34:04 / Jan Vrany <jan.vrany@fit.cvut.cz>"
! !
!GDBDebuggerTestsR class methodsFor:'documentation'!