tests/GDBDebuggerTestsR.st
author Jan Vrany <jan.vrany@fit.cvut.cz>
Mon, 04 Jun 2018 14:34:44 +0100
changeset 122 c939f8a4c3cd
parent 120 73877848ea7f
child 123 1e2c548b0cde
permissions -rw-r--r--
Added support for dynamic varobjs
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
91
472a4841a8b6 License this package under 'GNU Lesser General Public License'
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 87
diff changeset
     1
"
472a4841a8b6 License this package under 'GNU Lesser General Public License'
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 87
diff changeset
     2
jv:libgdbs - GNU Debugger Interface Library
472a4841a8b6 License this package under 'GNU Lesser General Public License'
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 87
diff changeset
     3
Copyright (C) 2015-now Jan Vrany
472a4841a8b6 License this package under 'GNU Lesser General Public License'
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 87
diff changeset
     4
472a4841a8b6 License this package under 'GNU Lesser General Public License'
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 87
diff changeset
     5
This library is free software; you can redistribute it and/or
472a4841a8b6 License this package under 'GNU Lesser General Public License'
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 87
diff changeset
     6
modify it under the terms of the GNU Lesser General Public
472a4841a8b6 License this package under 'GNU Lesser General Public License'
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 87
diff changeset
     7
License as published by the Free Software Foundation; either
472a4841a8b6 License this package under 'GNU Lesser General Public License'
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 87
diff changeset
     8
version 2.1 of the License. 
472a4841a8b6 License this package under 'GNU Lesser General Public License'
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 87
diff changeset
     9
472a4841a8b6 License this package under 'GNU Lesser General Public License'
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 87
diff changeset
    10
This library is distributed in the hope that it will be useful,
472a4841a8b6 License this package under 'GNU Lesser General Public License'
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 87
diff changeset
    11
but WITHOUT ANY WARRANTY; without even the implied warranty of
472a4841a8b6 License this package under 'GNU Lesser General Public License'
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 87
diff changeset
    12
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
472a4841a8b6 License this package under 'GNU Lesser General Public License'
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 87
diff changeset
    13
Lesser General Public License for more details.
472a4841a8b6 License this package under 'GNU Lesser General Public License'
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 87
diff changeset
    14
472a4841a8b6 License this package under 'GNU Lesser General Public License'
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 87
diff changeset
    15
You should have received a copy of the GNU Lesser General Public
472a4841a8b6 License this package under 'GNU Lesser General Public License'
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 87
diff changeset
    16
License along with this library; if not, write to the Free Software
472a4841a8b6 License this package under 'GNU Lesser General Public License'
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 87
diff changeset
    17
Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301  USA
472a4841a8b6 License this package under 'GNU Lesser General Public License'
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 87
diff changeset
    18
"
56
20989de12cfb More work on variables + tests
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    19
"{ Package: 'jv:libgdbs/tests' }"
20989de12cfb More work on variables + tests
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    20
20989de12cfb More work on variables + tests
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    21
"{ NameSpace: Smalltalk }"
20989de12cfb More work on variables + tests
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    22
20989de12cfb More work on variables + tests
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    23
GDBDebuggerTestCase subclass:#GDBDebuggerTestsR
20989de12cfb More work on variables + tests
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    24
	instanceVariableNames:''
20989de12cfb More work on variables + tests
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    25
	classVariableNames:''
20989de12cfb More work on variables + tests
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    26
	poolDictionaries:''
20989de12cfb More work on variables + tests
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    27
	category:'GDB-Core-Tests'
20989de12cfb More work on variables + tests
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    28
!
20989de12cfb More work on variables + tests
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    29
20989de12cfb More work on variables + tests
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    30
!GDBDebuggerTestsR class methodsFor:'documentation'!
20989de12cfb More work on variables + tests
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    31
91
472a4841a8b6 License this package under 'GNU Lesser General Public License'
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 87
diff changeset
    32
copyright
472a4841a8b6 License this package under 'GNU Lesser General Public License'
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 87
diff changeset
    33
"
472a4841a8b6 License this package under 'GNU Lesser General Public License'
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 87
diff changeset
    34
jv:libgdbs - GNU Debugger Interface Library
472a4841a8b6 License this package under 'GNU Lesser General Public License'
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 87
diff changeset
    35
Copyright (C) 2015-now Jan Vrany
472a4841a8b6 License this package under 'GNU Lesser General Public License'
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 87
diff changeset
    36
472a4841a8b6 License this package under 'GNU Lesser General Public License'
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 87
diff changeset
    37
This library is free software; you can redistribute it and/or
472a4841a8b6 License this package under 'GNU Lesser General Public License'
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 87
diff changeset
    38
modify it under the terms of the GNU Lesser General Public
472a4841a8b6 License this package under 'GNU Lesser General Public License'
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 87
diff changeset
    39
License as published by the Free Software Foundation; either
472a4841a8b6 License this package under 'GNU Lesser General Public License'
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 87
diff changeset
    40
version 2.1 of the License. 
472a4841a8b6 License this package under 'GNU Lesser General Public License'
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 87
diff changeset
    41
472a4841a8b6 License this package under 'GNU Lesser General Public License'
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 87
diff changeset
    42
This library is distributed in the hope that it will be useful,
472a4841a8b6 License this package under 'GNU Lesser General Public License'
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 87
diff changeset
    43
but WITHOUT ANY WARRANTY; without even the implied warranty of
472a4841a8b6 License this package under 'GNU Lesser General Public License'
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 87
diff changeset
    44
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
472a4841a8b6 License this package under 'GNU Lesser General Public License'
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 87
diff changeset
    45
Lesser General Public License for more details.
472a4841a8b6 License this package under 'GNU Lesser General Public License'
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 87
diff changeset
    46
472a4841a8b6 License this package under 'GNU Lesser General Public License'
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 87
diff changeset
    47
You should have received a copy of the GNU Lesser General Public
472a4841a8b6 License this package under 'GNU Lesser General Public License'
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 87
diff changeset
    48
License along with this library; if not, write to the Free Software
472a4841a8b6 License this package under 'GNU Lesser General Public License'
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 87
diff changeset
    49
Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301  USA
472a4841a8b6 License this package under 'GNU Lesser General Public License'
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 87
diff changeset
    50
"
472a4841a8b6 License this package under 'GNU Lesser General Public License'
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 87
diff changeset
    51
!
472a4841a8b6 License this package under 'GNU Lesser General Public License'
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 87
diff changeset
    52
56
20989de12cfb More work on variables + tests
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    53
documentation
20989de12cfb More work on variables + tests
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    54
"
66
43c941cacd43 Added test for -exec-run & -exec-interrupt
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 63
diff changeset
    55
    Tests for GDBDebugger (using real test programs)         
56
20989de12cfb More work on variables + tests
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    56
20989de12cfb More work on variables + tests
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    57
    [author:]
20989de12cfb More work on variables + tests
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    58
        Jan Vrany <jan.vrany@fit.cvut.cz>
20989de12cfb More work on variables + tests
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    59
20989de12cfb More work on variables + tests
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    60
    [instance variables:]
20989de12cfb More work on variables + tests
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    61
20989de12cfb More work on variables + tests
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    62
    [class variables:]
20989de12cfb More work on variables + tests
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    63
20989de12cfb More work on variables + tests
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    64
    [see also:]
20989de12cfb More work on variables + tests
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    65
20989de12cfb More work on variables + tests
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    66
"
20989de12cfb More work on variables + tests
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    67
! !
20989de12cfb More work on variables + tests
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    68
20989de12cfb More work on variables + tests
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    69
!GDBDebuggerTestsR class methodsFor:'accessing'!
20989de12cfb More work on variables + tests
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    70
20989de12cfb More work on variables + tests
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    71
resources
20989de12cfb More work on variables + tests
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    72
    ^ Array with: GDBDebuggeesResource
20989de12cfb More work on variables + tests
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    73
20989de12cfb More work on variables + tests
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    74
    "Created: / 28-02-2015 / 00:45:00 / Jan Vrany <jan.vrany@fit.cvut.cz>"
20989de12cfb More work on variables + tests
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    75
! !
20989de12cfb More work on variables + tests
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    76
20989de12cfb More work on variables + tests
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    77
!GDBDebuggerTestsR methodsFor:'tests - basic'!
20989de12cfb More work on variables + tests
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    78
20989de12cfb More work on variables + tests
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    79
test_02
106
12c96f17fc53 Variable objects: invalidate variable object when thread on inferior terminates
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 104
diff changeset
    80
    | inferior1 thread1 frame1 frame2  seqNo1 seqNo2 |
56
20989de12cfb More work on variables + tests
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    81
20989de12cfb More work on variables + tests
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    82
    debugger := GDBDebugger new.
20989de12cfb More work on variables + tests
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    83
    self assert: debugger isConnected.
20989de12cfb More work on variables + tests
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    84
87
50e80d25ea6f Added initial support for breakppints.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 86
diff changeset
    85
    debugger executable: GDBDebuggeesResource current binaryFactorial1.
56
20989de12cfb More work on variables + tests
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    86
    debugger send: 'b factorial'.
20989de12cfb More work on variables + tests
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    87
63
29a7a3b4532b Added conveniece API to ease debugger scripting (and testing)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 56
diff changeset
    88
    debugger send: 'r' andWaitFor: GDBStoppedEvent.
56
20989de12cfb More work on variables + tests
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    89
20989de12cfb More work on variables + tests
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    90
    self assert: debugger inferiors size == 1.
20989de12cfb More work on variables + tests
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    91
    inferior1 := debugger inferiors anElement.
95
f417138e9c48 Win32: initial support for Windows
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 91
diff changeset
    92
    "/ Windows (starting with Windows 10) introduced a new
f417138e9c48 Win32: initial support for Windows
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 91
diff changeset
    93
    "/ multi-threaded program loader so it can load .dll
f417138e9c48 Win32: initial support for Windows
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 91
diff changeset
    94
    "/ faster, supposedly. Therefore there may be couple other
f417138e9c48 Win32: initial support for Windows
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 91
diff changeset
    95
    "/ threads. Hence in windows, only assert that there is
f417138e9c48 Win32: initial support for Windows
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 91
diff changeset
    96
    "/ at least on thread.
f417138e9c48 Win32: initial support for Windows
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 91
diff changeset
    97
    OperatingSystem isMSWINDOWSlike ifTrue:[
f417138e9c48 Win32: initial support for Windows
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 91
diff changeset
    98
        self assert: inferior1 threads notEmpty.
f417138e9c48 Win32: initial support for Windows
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 91
diff changeset
    99
    ] ifFalse:[ 
f417138e9c48 Win32: initial support for Windows
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 91
diff changeset
   100
        self assert: inferior1 threads size == 1
f417138e9c48 Win32: initial support for Windows
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 91
diff changeset
   101
    ].
56
20989de12cfb More work on variables + tests
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   102
    thread1 := inferior1 threads anElement.
20989de12cfb More work on variables + tests
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   103
    self assert: thread1 stack size == 2.
86
7f53d51a0a65 Cache thread status and update it on `=stopped` and `=running` events
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 79
diff changeset
   104
    self assert: thread1 status isStopped.
56
20989de12cfb More work on variables + tests
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   105
    frame1 := thread1 stack first.
20989de12cfb More work on variables + tests
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   106
    frame2 := thread1 stack second.
20989de12cfb More work on variables + tests
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   107
    self assert: frame1 variables size == 1.
20989de12cfb More work on variables + tests
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   108
    self assert: frame1 variables first name = 'i'.
76
29efc28d989a Fixed `GDBVariable>>varobj` to actually keep the varobj
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 74
diff changeset
   109
    self assert: frame1 variables first value = '5'.
74
d53d325c2930 Initial work on varobjs. Tests locks up an image, should be polished and folded.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 72
diff changeset
   110
56
20989de12cfb More work on variables + tests
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   111
20989de12cfb More work on variables + tests
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   112
    self assert: frame2 variables size == 4.
20989de12cfb More work on variables + tests
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   113
    self assert: frame2 variables first name = 'argc'.
20989de12cfb More work on variables + tests
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   114
    self assert: frame2 variables second name = 'argv'.
20989de12cfb More work on variables + tests
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   115
    self assert: frame2 variables third name = 'i'.
20989de12cfb More work on variables + tests
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   116
    self assert: frame2 variables fourth name = 'f'.
20989de12cfb More work on variables + tests
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   117
106
12c96f17fc53 Variable objects: invalidate variable object when thread on inferior terminates
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 104
diff changeset
   118
    seqNo1 := debugger currentInferiorStateSequnceNumber.
12c96f17fc53 Variable objects: invalidate variable object when thread on inferior terminates
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 104
diff changeset
   119
63
29a7a3b4532b Added conveniece API to ease debugger scripting (and testing)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 56
diff changeset
   120
    debugger send: 'd'.
29a7a3b4532b Added conveniece API to ease debugger scripting (and testing)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 56
diff changeset
   121
    debugger send: 'c' andWaitFor: GDBThreadGroupExitedEvent.
56
20989de12cfb More work on variables + tests
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   122
79
303c4edc75ad `GDBProcess` refatored to have console interpreter on STDIN/STDOUT
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 76
diff changeset
   123
    self assert: thread1 isDead.
106
12c96f17fc53 Variable objects: invalidate variable object when thread on inferior terminates
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 104
diff changeset
   124
    seqNo2 := debugger currentInferiorStateSequnceNumber.
12c96f17fc53 Variable objects: invalidate variable object when thread on inferior terminates
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 104
diff changeset
   125
    self assert: seqNo1 ~~ seqNo2.
79
303c4edc75ad `GDBProcess` refatored to have console interpreter on STDIN/STDOUT
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 76
diff changeset
   126
303c4edc75ad `GDBProcess` refatored to have console interpreter on STDIN/STDOUT
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 76
diff changeset
   127
    debugger send: 'quit' andWait: false.
66
43c941cacd43 Added test for -exec-run & -exec-interrupt
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 63
diff changeset
   128
56
20989de12cfb More work on variables + tests
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   129
    "Created: / 28-02-2015 / 00:55:55 / Jan Vrany <jan.vrany@fit.cvut.cz>"
106
12c96f17fc53 Variable objects: invalidate variable object when thread on inferior terminates
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 104
diff changeset
   130
    "Modified: / 12-02-2018 / 22:50:52 / Jan Vrany <jan.vrany@fit.cvut.cz>"
95
f417138e9c48 Win32: initial support for Windows
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 91
diff changeset
   131
    "Modified: / 19-01-2018 / 09:23:24 / jv"
66
43c941cacd43 Added test for -exec-run & -exec-interrupt
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 63
diff changeset
   132
!
43c941cacd43 Added test for -exec-run & -exec-interrupt
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 63
diff changeset
   133
43c941cacd43 Added test for -exec-run & -exec-interrupt
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 63
diff changeset
   134
test_03
43c941cacd43 Added test for -exec-run & -exec-interrupt
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 63
diff changeset
   135
    | inferior1 thread1 |
43c941cacd43 Added test for -exec-run & -exec-interrupt
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 63
diff changeset
   136
95
f417138e9c48 Win32: initial support for Windows
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 91
diff changeset
   137
    self skipIf: OperatingSystem isMSWINDOWSlike  description: 'Skipped since we cannot interact with inferor on Windows (no TTY support)'.
f417138e9c48 Win32: initial support for Windows
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 91
diff changeset
   138
66
43c941cacd43 Added test for -exec-run & -exec-interrupt
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 63
diff changeset
   139
    debugger := GDBDebugger new.
43c941cacd43 Added test for -exec-run & -exec-interrupt
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 63
diff changeset
   140
    self assert: debugger isConnected.
43c941cacd43 Added test for -exec-run & -exec-interrupt
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 63
diff changeset
   141
43c941cacd43 Added test for -exec-run & -exec-interrupt
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 63
diff changeset
   142
    debugger executable: GDBDebuggeesResource current binaryPressAnyKey.
43c941cacd43 Added test for -exec-run & -exec-interrupt
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 63
diff changeset
   143
43c941cacd43 Added test for -exec-run & -exec-interrupt
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 63
diff changeset
   144
    debugger send: (GDBMI_exec_run new).
43c941cacd43 Added test for -exec-run & -exec-interrupt
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 63
diff changeset
   145
43c941cacd43 Added test for -exec-run & -exec-interrupt
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 63
diff changeset
   146
    self assert: debugger inferiors size == 1.
43c941cacd43 Added test for -exec-run & -exec-interrupt
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 63
diff changeset
   147
    inferior1 := debugger inferiors anElement.
43c941cacd43 Added test for -exec-run & -exec-interrupt
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 63
diff changeset
   148
    self assert: inferior1 threads size == 1.
43c941cacd43 Added test for -exec-run & -exec-interrupt
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 63
diff changeset
   149
    thread1 := inferior1 threads anElement.
43c941cacd43 Added test for -exec-run & -exec-interrupt
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 63
diff changeset
   150
    self assert: thread1 isRunning.
43c941cacd43 Added test for -exec-run & -exec-interrupt
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 63
diff changeset
   151
72
eb4eea3ebf4c Increate sequence number also when thread or thread group is stopped
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 66
diff changeset
   152
    debugger send: (GDBMI_exec_interrupt new arguments: #('--all')) andWaitFor: GDBStoppedEvent.
66
43c941cacd43 Added test for -exec-run & -exec-interrupt
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 63
diff changeset
   153
43c941cacd43 Added test for -exec-run & -exec-interrupt
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 63
diff changeset
   154
    self assert: thread1 isRunning not.
43c941cacd43 Added test for -exec-run & -exec-interrupt
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 63
diff changeset
   155
43c941cacd43 Added test for -exec-run & -exec-interrupt
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 63
diff changeset
   156
    debugger inferiorStdin nextPutLine:'X'.  
43c941cacd43 Added test for -exec-run & -exec-interrupt
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 63
diff changeset
   157
43c941cacd43 Added test for -exec-run & -exec-interrupt
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 63
diff changeset
   158
    debugger send: 'c' andWaitFor: GDBThreadGroupExitedEvent.
43c941cacd43 Added test for -exec-run & -exec-interrupt
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 63
diff changeset
   159
79
303c4edc75ad `GDBProcess` refatored to have console interpreter on STDIN/STDOUT
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 76
diff changeset
   160
    debugger send: 'quit' andWait: false
303c4edc75ad `GDBProcess` refatored to have console interpreter on STDIN/STDOUT
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 76
diff changeset
   161
66
43c941cacd43 Added test for -exec-run & -exec-interrupt
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 63
diff changeset
   162
    "Created: / 08-03-2015 / 07:42:10 / Jan Vrany <jan.vrany@fit.cvut.cz>"
79
303c4edc75ad `GDBProcess` refatored to have console interpreter on STDIN/STDOUT
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 76
diff changeset
   163
    "Modified: / 01-06-2017 / 22:30:03 / Jan Vrany <jan.vrany@fit.cvut.cz>"
95
f417138e9c48 Win32: initial support for Windows
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 91
diff changeset
   164
    "Modified: / 12-01-2018 / 14:53:19 / jv"
56
20989de12cfb More work on variables + tests
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   165
!
20989de12cfb More work on variables + tests
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   166
20989de12cfb More work on variables + tests
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   167
test_basic_01
95
f417138e9c48 Win32: initial support for Windows
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 91
diff changeset
   168
    | timeToExit eventPumpProcess eventDispatchProcess|
56
20989de12cfb More work on variables + tests
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   169
20989de12cfb More work on variables + tests
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   170
    debugger := GDBDebugger new.
95
f417138e9c48 Win32: initial support for Windows
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 91
diff changeset
   171
    timeToExit := 0.
f417138e9c48 Win32: initial support for Windows
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 91
diff changeset
   172
    eventPumpProcess := (debugger instVarNamed: #connection) instVarNamed: #eventPumpProcess.
f417138e9c48 Win32: initial support for Windows
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 91
diff changeset
   173
    eventDispatchProcess := (debugger instVarNamed: #connection) instVarNamed: #eventDispatchProcess.
56
20989de12cfb More work on variables + tests
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   174
    self assert: debugger isConnected.
95
f417138e9c48 Win32: initial support for Windows
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 91
diff changeset
   175
    self assert: eventPumpProcess isDead not.
f417138e9c48 Win32: initial support for Windows
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 91
diff changeset
   176
    self assert: eventDispatchProcess isDead not.
f417138e9c48 Win32: initial support for Windows
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 91
diff changeset
   177
    debugger send: (GDBMI_gdb_exit new) andWait: false.      
f417138e9c48 Win32: initial support for Windows
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 91
diff changeset
   178
    [ debugger isConnected and:[timeToExit < 2000] ] whileTrue:[
f417138e9c48 Win32: initial support for Windows
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 91
diff changeset
   179
        Logger trace:'Still connected...'.
f417138e9c48 Win32: initial support for Windows
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 91
diff changeset
   180
        Delay waitForMilliseconds: 200.  
f417138e9c48 Win32: initial support for Windows
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 91
diff changeset
   181
        timeToExit := timeToExit + 200.
f417138e9c48 Win32: initial support for Windows
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 91
diff changeset
   182
    ].
f417138e9c48 Win32: initial support for Windows
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 91
diff changeset
   183
    self assert: timeToExit < 2000.
56
20989de12cfb More work on variables + tests
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   184
    self assert: debugger isConnected not.
95
f417138e9c48 Win32: initial support for Windows
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 91
diff changeset
   185
    self assert: eventPumpProcess isDead.
f417138e9c48 Win32: initial support for Windows
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 91
diff changeset
   186
    self assert: eventDispatchProcess isDead.
56
20989de12cfb More work on variables + tests
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   187
20989de12cfb More work on variables + tests
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   188
    "Created: / 24-06-2014 / 09:06:32 / Jan Vrany <jan.vrany@fit.cvut.cz>"
79
303c4edc75ad `GDBProcess` refatored to have console interpreter on STDIN/STDOUT
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 76
diff changeset
   189
    "Modified: / 31-05-2017 / 22:42:45 / Jan Vrany <jan.vrany@fit.cvut.cz>"
95
f417138e9c48 Win32: initial support for Windows
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 91
diff changeset
   190
    "Modified: / 12-01-2018 / 15:29:08 / jv"
87
50e80d25ea6f Added initial support for breakppints.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 86
diff changeset
   191
!
50e80d25ea6f Added initial support for breakppints.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 86
diff changeset
   192
50e80d25ea6f Added initial support for breakppints.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 86
diff changeset
   193
test_breakpoints_01a
50e80d25ea6f Added initial support for breakppints.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 86
diff changeset
   194
    |  |
50e80d25ea6f Added initial support for breakppints.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 86
diff changeset
   195
50e80d25ea6f Added initial support for breakppints.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 86
diff changeset
   196
    debugger := GDBDebugger new.
50e80d25ea6f Added initial support for breakppints.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 86
diff changeset
   197
    self assert: debugger isConnected.
50e80d25ea6f Added initial support for breakppints.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 86
diff changeset
   198
50e80d25ea6f Added initial support for breakppints.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 86
diff changeset
   199
    debugger executable: GDBDebuggeesResource current binaryFactorial1.
50e80d25ea6f Added initial support for breakppints.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 86
diff changeset
   200
    self assert: debugger breakpoints isEmpty.
50e80d25ea6f Added initial support for breakppints.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 86
diff changeset
   201
50e80d25ea6f Added initial support for breakppints.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 86
diff changeset
   202
    debugger send: 'b factorial'.
50e80d25ea6f Added initial support for breakppints.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 86
diff changeset
   203
    self assert: debugger breakpoints size == 1.
50e80d25ea6f Added initial support for breakppints.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 86
diff changeset
   204
50e80d25ea6f Added initial support for breakppints.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 86
diff changeset
   205
    debugger send: 'r' andWaitFor: GDBStoppedEvent.
50e80d25ea6f Added initial support for breakppints.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 86
diff changeset
   206
    self assert: debugger breakpoints size == 1.
50e80d25ea6f Added initial support for breakppints.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 86
diff changeset
   207
    self assert: debugger breakpoints first func = 'factorial'.
50e80d25ea6f Added initial support for breakppints.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 86
diff changeset
   208
50e80d25ea6f Added initial support for breakppints.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 86
diff changeset
   209
50e80d25ea6f Added initial support for breakppints.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 86
diff changeset
   210
    debugger send: 'del'.
50e80d25ea6f Added initial support for breakppints.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 86
diff changeset
   211
    self assert: debugger breakpoints isEmpty.
50e80d25ea6f Added initial support for breakppints.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 86
diff changeset
   212
50e80d25ea6f Added initial support for breakppints.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 86
diff changeset
   213
    debugger send: 'c' andWaitFor: GDBThreadGroupExitedEvent.
50e80d25ea6f Added initial support for breakppints.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 86
diff changeset
   214
    self assert: debugger breakpoints isEmpty.
50e80d25ea6f Added initial support for breakppints.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 86
diff changeset
   215
50e80d25ea6f Added initial support for breakppints.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 86
diff changeset
   216
    debugger send: 'quit' andWait: false.
50e80d25ea6f Added initial support for breakppints.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 86
diff changeset
   217
50e80d25ea6f Added initial support for breakppints.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 86
diff changeset
   218
    "Created: / 07-07-2017 / 12:25:52 / Jan Vrany <jan.vrany@fit.cvut.cz>"
50e80d25ea6f Added initial support for breakppints.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 86
diff changeset
   219
!
50e80d25ea6f Added initial support for breakppints.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 86
diff changeset
   220
50e80d25ea6f Added initial support for breakppints.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 86
diff changeset
   221
test_breakpoints_01b
50e80d25ea6f Added initial support for breakppints.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 86
diff changeset
   222
    |  |
50e80d25ea6f Added initial support for breakppints.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 86
diff changeset
   223
50e80d25ea6f Added initial support for breakppints.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 86
diff changeset
   224
    debugger := GDBDebugger new.
50e80d25ea6f Added initial support for breakppints.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 86
diff changeset
   225
    self assert: debugger isConnected.
50e80d25ea6f Added initial support for breakppints.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 86
diff changeset
   226
50e80d25ea6f Added initial support for breakppints.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 86
diff changeset
   227
    debugger executable: GDBDebuggeesResource current binaryFactorial1.
50e80d25ea6f Added initial support for breakppints.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 86
diff changeset
   228
    self assert: debugger breakpoints isEmpty.
50e80d25ea6f Added initial support for breakppints.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 86
diff changeset
   229
50e80d25ea6f Added initial support for breakppints.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 86
diff changeset
   230
    debugger send: 'b factorial'.
50e80d25ea6f Added initial support for breakppints.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 86
diff changeset
   231
    self assert: debugger breakpoints size == 1.
50e80d25ea6f Added initial support for breakppints.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 86
diff changeset
   232
50e80d25ea6f Added initial support for breakppints.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 86
diff changeset
   233
    debugger send: 'r' andWaitFor: GDBStoppedEvent.
50e80d25ea6f Added initial support for breakppints.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 86
diff changeset
   234
    self assert: debugger breakpoints size == 1.
50e80d25ea6f Added initial support for breakppints.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 86
diff changeset
   235
    self assert: debugger breakpoints first func = 'factorial'.
50e80d25ea6f Added initial support for breakppints.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 86
diff changeset
   236
50e80d25ea6f Added initial support for breakppints.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 86
diff changeset
   237
50e80d25ea6f Added initial support for breakppints.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 86
diff changeset
   238
    debugger send: 'dis ', debugger breakpoints anElement number printString.
50e80d25ea6f Added initial support for breakppints.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 86
diff changeset
   239
    self assert: debugger breakpoints size == 1.
50e80d25ea6f Added initial support for breakppints.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 86
diff changeset
   240
    self assert: debugger breakpoints anElement enabled == false.
50e80d25ea6f Added initial support for breakppints.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 86
diff changeset
   241
50e80d25ea6f Added initial support for breakppints.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 86
diff changeset
   242
    debugger send: 'c' andWaitFor: GDBThreadGroupExitedEvent.
50e80d25ea6f Added initial support for breakppints.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 86
diff changeset
   243
50e80d25ea6f Added initial support for breakppints.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 86
diff changeset
   244
    debugger send: 'quit' andWait: false.
50e80d25ea6f Added initial support for breakppints.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 86
diff changeset
   245
50e80d25ea6f Added initial support for breakppints.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 86
diff changeset
   246
    "Created: / 07-07-2017 / 12:27:12 / Jan Vrany <jan.vrany@fit.cvut.cz>"
50e80d25ea6f Added initial support for breakppints.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 86
diff changeset
   247
!
50e80d25ea6f Added initial support for breakppints.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 86
diff changeset
   248
50e80d25ea6f Added initial support for breakppints.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 86
diff changeset
   249
test_breakpoints_01c
50e80d25ea6f Added initial support for breakppints.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 86
diff changeset
   250
    |  |
50e80d25ea6f Added initial support for breakppints.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 86
diff changeset
   251
50e80d25ea6f Added initial support for breakppints.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 86
diff changeset
   252
    debugger := GDBDebugger new.
50e80d25ea6f Added initial support for breakppints.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 86
diff changeset
   253
    self assert: debugger isConnected.
50e80d25ea6f Added initial support for breakppints.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 86
diff changeset
   254
50e80d25ea6f Added initial support for breakppints.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 86
diff changeset
   255
    debugger executable: GDBDebuggeesResource current binaryFactorial1.
50e80d25ea6f Added initial support for breakppints.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 86
diff changeset
   256
    self assert: debugger breakpoints isEmpty.
50e80d25ea6f Added initial support for breakppints.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 86
diff changeset
   257
50e80d25ea6f Added initial support for breakppints.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 86
diff changeset
   258
    debugger send: 'b factorial'.
50e80d25ea6f Added initial support for breakppints.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 86
diff changeset
   259
    self assert: debugger breakpoints size == 1.
50e80d25ea6f Added initial support for breakppints.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 86
diff changeset
   260
50e80d25ea6f Added initial support for breakppints.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 86
diff changeset
   261
    debugger send: 'r' andWaitFor: GDBStoppedEvent.
50e80d25ea6f Added initial support for breakppints.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 86
diff changeset
   262
    self assert: debugger breakpoints size == 1.
50e80d25ea6f Added initial support for breakppints.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 86
diff changeset
   263
    self assert: debugger breakpoints first func = 'factorial'.
50e80d25ea6f Added initial support for breakppints.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 86
diff changeset
   264
50e80d25ea6f Added initial support for breakppints.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 86
diff changeset
   265
50e80d25ea6f Added initial support for breakppints.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 86
diff changeset
   266
    debugger breakpoints anElement enabled: false.
50e80d25ea6f Added initial support for breakppints.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 86
diff changeset
   267
    self assert: debugger breakpoints size == 1.
50e80d25ea6f Added initial support for breakppints.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 86
diff changeset
   268
    self assert: debugger breakpoints anElement enabled == false.
50e80d25ea6f Added initial support for breakppints.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 86
diff changeset
   269
50e80d25ea6f Added initial support for breakppints.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 86
diff changeset
   270
    debugger send: 'c' andWaitFor: GDBThreadGroupExitedEvent.
50e80d25ea6f Added initial support for breakppints.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 86
diff changeset
   271
50e80d25ea6f Added initial support for breakppints.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 86
diff changeset
   272
    debugger send: 'quit' andWait: false.
50e80d25ea6f Added initial support for breakppints.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 86
diff changeset
   273
50e80d25ea6f Added initial support for breakppints.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 86
diff changeset
   274
    "Created: / 07-07-2017 / 12:34:48 / Jan Vrany <jan.vrany@fit.cvut.cz>"
50e80d25ea6f Added initial support for breakppints.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 86
diff changeset
   275
!
50e80d25ea6f Added initial support for breakppints.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 86
diff changeset
   276
95
f417138e9c48 Win32: initial support for Windows
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 91
diff changeset
   277
test_breakpoints_03a
87
50e80d25ea6f Added initial support for breakppints.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 86
diff changeset
   278
95
f417138e9c48 Win32: initial support for Windows
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 91
diff changeset
   279
    self skipIf: OperatingSystem isMSWINDOWSlike  description: 'Skipped since we don;t have separate console TTY (no TTY support)'.
87
50e80d25ea6f Added initial support for breakppints.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 86
diff changeset
   280
50e80d25ea6f Added initial support for breakppints.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 86
diff changeset
   281
    debugger := GDBDebugger new.
50e80d25ea6f Added initial support for breakppints.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 86
diff changeset
   282
    self assert: debugger isConnected.
50e80d25ea6f Added initial support for breakppints.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 86
diff changeset
   283
50e80d25ea6f Added initial support for breakppints.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 86
diff changeset
   284
    debugger executable: GDBDebuggeesResource current binaryFactorial1.
50e80d25ea6f Added initial support for breakppints.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 86
diff changeset
   285
    self assert: debugger breakpoints isEmpty.
50e80d25ea6f Added initial support for breakppints.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 86
diff changeset
   286
50e80d25ea6f Added initial support for breakppints.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 86
diff changeset
   287
    debugger consoleInput nextPutLine: 'b factorial'.
50e80d25ea6f Added initial support for breakppints.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 86
diff changeset
   288
    Delay waitForSeconds: 1.  
50e80d25ea6f Added initial support for breakppints.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 86
diff changeset
   289
    self assert: debugger breakpoints size == 1.
50e80d25ea6f Added initial support for breakppints.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 86
diff changeset
   290
50e80d25ea6f Added initial support for breakppints.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 86
diff changeset
   291
    debugger send: 'r' andWaitFor: GDBStoppedEvent.
50e80d25ea6f Added initial support for breakppints.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 86
diff changeset
   292
    self assert: debugger breakpoints size == 1.
50e80d25ea6f Added initial support for breakppints.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 86
diff changeset
   293
    self assert: debugger breakpoints first func = 'factorial'.
50e80d25ea6f Added initial support for breakppints.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 86
diff changeset
   294
50e80d25ea6f Added initial support for breakppints.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 86
diff changeset
   295
50e80d25ea6f Added initial support for breakppints.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 86
diff changeset
   296
    debugger consoleInput nextPutLine: 'del 1'.
50e80d25ea6f Added initial support for breakppints.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 86
diff changeset
   297
    Delay waitForSeconds: 1.  
50e80d25ea6f Added initial support for breakppints.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 86
diff changeset
   298
    self assert: debugger breakpoints isEmpty.
50e80d25ea6f Added initial support for breakppints.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 86
diff changeset
   299
50e80d25ea6f Added initial support for breakppints.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 86
diff changeset
   300
    debugger send: 'c' andWaitFor: GDBThreadGroupExitedEvent.
50e80d25ea6f Added initial support for breakppints.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 86
diff changeset
   301
    self assert: debugger breakpoints isEmpty.
50e80d25ea6f Added initial support for breakppints.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 86
diff changeset
   302
50e80d25ea6f Added initial support for breakppints.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 86
diff changeset
   303
    debugger send: 'quit' andWait: false.
50e80d25ea6f Added initial support for breakppints.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 86
diff changeset
   304
50e80d25ea6f Added initial support for breakppints.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 86
diff changeset
   305
    "Created: / 10-07-2017 / 22:05:07 / Jan Vrany <jan.vrany@fit.cvut.cz>"
50e80d25ea6f Added initial support for breakppints.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 86
diff changeset
   306
    "Modified: / 11-07-2017 / 11:06:20 / Jan Vrany <jan.vrany@fit.cvut.cz>"
95
f417138e9c48 Win32: initial support for Windows
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 91
diff changeset
   307
    "Modified: / 12-01-2018 / 14:57:37 / jv"
87
50e80d25ea6f Added initial support for breakppints.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 86
diff changeset
   308
!
50e80d25ea6f Added initial support for breakppints.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 86
diff changeset
   309
50e80d25ea6f Added initial support for breakppints.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 86
diff changeset
   310
test_breakpoints_04a
50e80d25ea6f Added initial support for breakppints.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 86
diff changeset
   311
    debugger := GDBDebugger new.
50e80d25ea6f Added initial support for breakppints.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 86
diff changeset
   312
    self assert: debugger isConnected.
50e80d25ea6f Added initial support for breakppints.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 86
diff changeset
   313
50e80d25ea6f Added initial support for breakppints.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 86
diff changeset
   314
    debugger executable: GDBDebuggeesResource current binaryFactorial1.
50e80d25ea6f Added initial support for breakppints.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 86
diff changeset
   315
    self assert: debugger breakpoints isEmpty.
50e80d25ea6f Added initial support for breakppints.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 86
diff changeset
   316
50e80d25ea6f Added initial support for breakppints.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 86
diff changeset
   317
    debugger send: 'b factorial'.
50e80d25ea6f Added initial support for breakppints.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 86
diff changeset
   318
    self assert: debugger breakpoints size == 1.
50e80d25ea6f Added initial support for breakppints.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 86
diff changeset
   319
50e80d25ea6f Added initial support for breakppints.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 86
diff changeset
   320
    debugger breakpoints first script: 'printf "factorial\n"
50e80d25ea6f Added initial support for breakppints.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 86
diff changeset
   321
disable ', debugger breakpoints first number asString.
50e80d25ea6f Added initial support for breakppints.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 86
diff changeset
   322
50e80d25ea6f Added initial support for breakppints.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 86
diff changeset
   323
    debugger send: 'r' andWaitFor: GDBStoppedEvent.
50e80d25ea6f Added initial support for breakppints.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 86
diff changeset
   324
    self assert: debugger breakpoints size == 1.
50e80d25ea6f Added initial support for breakppints.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 86
diff changeset
   325
    "/ We need to wait a until breakpoint-modifed
50e80d25ea6f Added initial support for breakppints.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 86
diff changeset
   326
    "/ event is received.
50e80d25ea6f Added initial support for breakppints.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 86
diff changeset
   327
    Delay waitForMilliseconds: 200.  
50e80d25ea6f Added initial support for breakppints.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 86
diff changeset
   328
    self assert: debugger breakpoints first enabled == false.
50e80d25ea6f Added initial support for breakppints.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 86
diff changeset
   329
50e80d25ea6f Added initial support for breakppints.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 86
diff changeset
   330
    debugger send: 'c' andWaitFor: GDBThreadGroupExitedEvent.
50e80d25ea6f Added initial support for breakppints.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 86
diff changeset
   331
50e80d25ea6f Added initial support for breakppints.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 86
diff changeset
   332
    debugger send: 'quit' andWait: false.
50e80d25ea6f Added initial support for breakppints.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 86
diff changeset
   333
50e80d25ea6f Added initial support for breakppints.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 86
diff changeset
   334
    "Created: / 11-07-2017 / 20:35:20 / Jan Vrany <jan.vrany@fit.cvut.cz>"
50e80d25ea6f Added initial support for breakppints.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 86
diff changeset
   335
    "Modified (format): / 11-07-2017 / 23:31:56 / Jan Vrany <jan.vrany@fit.cvut.cz>"
101
d8fee2af20b2 Variable objects: added support for composite types
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 95
diff changeset
   336
!
d8fee2af20b2 Variable objects: added support for composite types
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 95
diff changeset
   337
120
73877848ea7f Added support for breakpoints with multiple locations
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 119
diff changeset
   338
test_breakpoints_05a
73877848ea7f Added support for breakpoints with multiple locations
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 119
diff changeset
   339
    "
73877848ea7f Added support for breakpoints with multiple locations
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 119
diff changeset
   340
    This tests breakpoints with multiple locations. Due to a bug in
73877848ea7f Added support for breakpoints with multiple locations
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 119
diff changeset
   341
    GDB (up to 8.1), this test fails with stock GDB.
73877848ea7f Added support for breakpoints with multiple locations
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 119
diff changeset
   342
73877848ea7f Added support for breakpoints with multiple locations
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 119
diff changeset
   343
    Patches has been sent to GDB, see:
73877848ea7f Added support for breakpoints with multiple locations
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 119
diff changeset
   344
73877848ea7f Added support for breakpoints with multiple locations
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 119
diff changeset
   345
        * https://sourceware.org/ml/gdb/2018-05/msg00024.html
73877848ea7f Added support for breakpoints with multiple locations
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 119
diff changeset
   346
        * https://sourceware.org/ml/gdb-patches/2018-05/msg00836.html
73877848ea7f Added support for breakpoints with multiple locations
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 119
diff changeset
   347
73877848ea7f Added support for breakpoints with multiple locations
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 119
diff changeset
   348
    Meanwhile, this test is skipped.
73877848ea7f Added support for breakpoints with multiple locations
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 119
diff changeset
   349
    "    
73877848ea7f Added support for breakpoints with multiple locations
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 119
diff changeset
   350
73877848ea7f Added support for breakpoints with multiple locations
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 119
diff changeset
   351
    self skipIf: true description: 'Known to fail due to a bug in GDB'.
73877848ea7f Added support for breakpoints with multiple locations
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 119
diff changeset
   352
        debugger := GDBDebugger new.
73877848ea7f Added support for breakpoints with multiple locations
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 119
diff changeset
   353
73877848ea7f Added support for breakpoints with multiple locations
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 119
diff changeset
   354
    self assert: debugger isConnected.
73877848ea7f Added support for breakpoints with multiple locations
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 119
diff changeset
   355
73877848ea7f Added support for breakpoints with multiple locations
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 119
diff changeset
   356
    debugger executable: GDBDebuggeesResource current binaryBreakpoints1.
73877848ea7f Added support for breakpoints with multiple locations
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 119
diff changeset
   357
    self assert: debugger breakpoints isEmpty.
73877848ea7f Added support for breakpoints with multiple locations
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 119
diff changeset
   358
73877848ea7f Added support for breakpoints with multiple locations
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 119
diff changeset
   359
    debugger send: 'b add'.
73877848ea7f Added support for breakpoints with multiple locations
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 119
diff changeset
   360
    self assert: debugger breakpoints size == 1.
73877848ea7f Added support for breakpoints with multiple locations
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 119
diff changeset
   361
    self assert: debugger breakpoints first locations size > 1.
73877848ea7f Added support for breakpoints with multiple locations
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 119
diff changeset
   362
    self assert: debugger breakpoints first enabled.
73877848ea7f Added support for breakpoints with multiple locations
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 119
diff changeset
   363
    self assert: debugger breakpoints first locations first enabled.
73877848ea7f Added support for breakpoints with multiple locations
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 119
diff changeset
   364
73877848ea7f Added support for breakpoints with multiple locations
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 119
diff changeset
   365
    debugger send: 'dis 1'.
73877848ea7f Added support for breakpoints with multiple locations
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 119
diff changeset
   366
    debugger send: 'dis 1.1'.
73877848ea7f Added support for breakpoints with multiple locations
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 119
diff changeset
   367
    self assert: debugger breakpoints first enabled not.
73877848ea7f Added support for breakpoints with multiple locations
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 119
diff changeset
   368
    self assert: debugger breakpoints first locations first enabled not.
73877848ea7f Added support for breakpoints with multiple locations
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 119
diff changeset
   369
73877848ea7f Added support for breakpoints with multiple locations
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 119
diff changeset
   370
    debugger send: 'en 1'.
73877848ea7f Added support for breakpoints with multiple locations
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 119
diff changeset
   371
    debugger send: 'en 1.1'.
73877848ea7f Added support for breakpoints with multiple locations
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 119
diff changeset
   372
    self assert: debugger breakpoints first enabled.
73877848ea7f Added support for breakpoints with multiple locations
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 119
diff changeset
   373
    self assert: debugger breakpoints first locations first enabled.
73877848ea7f Added support for breakpoints with multiple locations
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 119
diff changeset
   374
73877848ea7f Added support for breakpoints with multiple locations
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 119
diff changeset
   375
    debugger breakpoints first enabled: false.
73877848ea7f Added support for breakpoints with multiple locations
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 119
diff changeset
   376
    debugger breakpoints first locations first enabled: false.    
73877848ea7f Added support for breakpoints with multiple locations
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 119
diff changeset
   377
    self assert: debugger breakpoints first enabled not.
73877848ea7f Added support for breakpoints with multiple locations
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 119
diff changeset
   378
    self assert: debugger breakpoints first locations first enabled not.    
73877848ea7f Added support for breakpoints with multiple locations
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 119
diff changeset
   379
73877848ea7f Added support for breakpoints with multiple locations
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 119
diff changeset
   380
    debugger breakpoints first enabled: true.
73877848ea7f Added support for breakpoints with multiple locations
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 119
diff changeset
   381
    debugger breakpoints first locations first enabled: true.    
73877848ea7f Added support for breakpoints with multiple locations
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 119
diff changeset
   382
    self assert: debugger breakpoints first enabled.
73877848ea7f Added support for breakpoints with multiple locations
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 119
diff changeset
   383
    self assert: debugger breakpoints first locations first enabled.    
73877848ea7f Added support for breakpoints with multiple locations
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 119
diff changeset
   384
73877848ea7f Added support for breakpoints with multiple locations
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 119
diff changeset
   385
    debugger send: 'del 1'.
73877848ea7f Added support for breakpoints with multiple locations
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 119
diff changeset
   386
    self assert: debugger breakpoints size == 0.
73877848ea7f Added support for breakpoints with multiple locations
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 119
diff changeset
   387
73877848ea7f Added support for breakpoints with multiple locations
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 119
diff changeset
   388
    debugger send: 'quit' andWait: false.
73877848ea7f Added support for breakpoints with multiple locations
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 119
diff changeset
   389
73877848ea7f Added support for breakpoints with multiple locations
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 119
diff changeset
   390
    "Created: / 18-05-2018 / 10:52:10 / Jan Vrany <jan.vrany@fit.cvut.cz>"
73877848ea7f Added support for breakpoints with multiple locations
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 119
diff changeset
   391
    "Modified: / 23-05-2018 / 10:49:08 / Jan Vrany <jan.vrany@fit.cvut.cz>"
73877848ea7f Added support for breakpoints with multiple locations
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 119
diff changeset
   392
!
73877848ea7f Added support for breakpoints with multiple locations
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 119
diff changeset
   393
114
be5bdaecb9b3 API: added methods for querying source directories
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 111
diff changeset
   394
test_directories
119
258bf0b2317c Fixed `GDBDebugger >> directories` to work on Windows
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 114
diff changeset
   395
    | directories current |
114
be5bdaecb9b3 API: added methods for querying source directories
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 111
diff changeset
   396
be5bdaecb9b3 API: added methods for querying source directories
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 111
diff changeset
   397
    debugger := GDBDebugger new.
be5bdaecb9b3 API: added methods for querying source directories
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 111
diff changeset
   398
    self assert: debugger isConnected.
be5bdaecb9b3 API: added methods for querying source directories
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 111
diff changeset
   399
be5bdaecb9b3 API: added methods for querying source directories
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 111
diff changeset
   400
    directories := debugger directories.
be5bdaecb9b3 API: added methods for querying source directories
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 111
diff changeset
   401
    self assert: directories isArray.
be5bdaecb9b3 API: added methods for querying source directories
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 111
diff changeset
   402
    self assert: directories notEmpty.
be5bdaecb9b3 API: added methods for querying source directories
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 111
diff changeset
   403
119
258bf0b2317c Fixed `GDBDebugger >> directories` to work on Windows
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 114
diff changeset
   404
    "/ GDB uses cygwin paths, so convert Windows path to Cygwin paths
258bf0b2317c Fixed `GDBDebugger >> directories` to work on Windows
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 114
diff changeset
   405
    "/ on Windows.
258bf0b2317c Fixed `GDBDebugger >> directories` to work on Windows
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 114
diff changeset
   406
    OperatingSystem isMSWINDOWSlike ifTrue:[ 
258bf0b2317c Fixed `GDBDebugger >> directories` to work on Windows
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 114
diff changeset
   407
        current := Filename currentDirectory cygName
258bf0b2317c Fixed `GDBDebugger >> directories` to work on Windows
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 114
diff changeset
   408
    ] ifFalse:[ 
258bf0b2317c Fixed `GDBDebugger >> directories` to work on Windows
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 114
diff changeset
   409
        current := Filename currentDirectory pathName
258bf0b2317c Fixed `GDBDebugger >> directories` to work on Windows
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 114
diff changeset
   410
    ].
258bf0b2317c Fixed `GDBDebugger >> directories` to work on Windows
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 114
diff changeset
   411
258bf0b2317c Fixed `GDBDebugger >> directories` to work on Windows
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 114
diff changeset
   412
    debugger send: ('set directories "%1"' bindWith: current).
114
be5bdaecb9b3 API: added methods for querying source directories
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 111
diff changeset
   413
    directories := debugger directories.
be5bdaecb9b3 API: added methods for querying source directories
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 111
diff changeset
   414
    self assert: directories isArray.
be5bdaecb9b3 API: added methods for querying source directories
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 111
diff changeset
   415
    self assert:(directories includes: Filename currentDirectory pathName).
be5bdaecb9b3 API: added methods for querying source directories
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 111
diff changeset
   416
be5bdaecb9b3 API: added methods for querying source directories
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 111
diff changeset
   417
    "Created: / 09-03-2018 / 12:28:53 / Jan Vrany <jan.vrany@fit.cvut.cz>"
119
258bf0b2317c Fixed `GDBDebugger >> directories` to work on Windows
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 114
diff changeset
   418
    "Modified: / 03-04-2018 / 21:08:26 / jv"
114
be5bdaecb9b3 API: added methods for querying source directories
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 111
diff changeset
   419
!
be5bdaecb9b3 API: added methods for querying source directories
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 111
diff changeset
   420
111
7ce18f6f18ac API: added methods for querying debugger and target features
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 110
diff changeset
   421
test_features
7ce18f6f18ac API: added methods for querying debugger and target features
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 110
diff changeset
   422
7ce18f6f18ac API: added methods for querying debugger and target features
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 110
diff changeset
   423
    debugger := GDBDebugger new.
7ce18f6f18ac API: added methods for querying debugger and target features
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 110
diff changeset
   424
    self assert: debugger isConnected.
7ce18f6f18ac API: added methods for querying debugger and target features
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 110
diff changeset
   425
    self assert: debugger features isArray.
7ce18f6f18ac API: added methods for querying debugger and target features
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 110
diff changeset
   426
    self assert: debugger features notEmpty.
7ce18f6f18ac API: added methods for querying debugger and target features
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 110
diff changeset
   427
    self assert: (debugger hasFeature: debugger features anyOne).
7ce18f6f18ac API: added methods for querying debugger and target features
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 110
diff changeset
   428
    self assert: (debugger hasFeature: 'bla bla') not.
7ce18f6f18ac API: added methods for querying debugger and target features
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 110
diff changeset
   429
    self shouldnt:[ debugger ensureFeature: debugger features anyOne ] raise: Error.
7ce18f6f18ac API: added methods for querying debugger and target features
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 110
diff changeset
   430
    self should:  [ debugger ensureFeature: 'bla bla' ] raise: GDBUnsupportedFeatureError.
7ce18f6f18ac API: added methods for querying debugger and target features
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 110
diff changeset
   431
    debugger send: 'quit' andWait: false.
7ce18f6f18ac API: added methods for querying debugger and target features
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 110
diff changeset
   432
7ce18f6f18ac API: added methods for querying debugger and target features
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 110
diff changeset
   433
    "Created: / 07-02-2018 / 10:56:59 / Jan Vrany <jan.vrany@fit.cvut.cz>"
7ce18f6f18ac API: added methods for querying debugger and target features
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 110
diff changeset
   434
!
7ce18f6f18ac API: added methods for querying debugger and target features
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 110
diff changeset
   435
103
56bf65352505 Variable objects: preserve the identity of `GDBFrame` and `GDBVariable` objects
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 101
diff changeset
   436
test_stack_01
56bf65352505 Variable objects: preserve the identity of `GDBFrame` and `GDBVariable` objects
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 101
diff changeset
   437
    "Tests that stack frames object are preserved amonh run/top cycles
56bf65352505 Variable objects: preserve the identity of `GDBFrame` and `GDBVariable` objects
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 101
diff changeset
   438
     if they 're still valid"
56bf65352505 Variable objects: preserve the identity of `GDBFrame` and `GDBVariable` objects
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 101
diff changeset
   439
56bf65352505 Variable objects: preserve the identity of `GDBFrame` and `GDBVariable` objects
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 101
diff changeset
   440
    | stack1 stack2 |
56bf65352505 Variable objects: preserve the identity of `GDBFrame` and `GDBVariable` objects
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 101
diff changeset
   441
56bf65352505 Variable objects: preserve the identity of `GDBFrame` and `GDBVariable` objects
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 101
diff changeset
   442
    debugger := GDBDebugger new.
56bf65352505 Variable objects: preserve the identity of `GDBFrame` and `GDBVariable` objects
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 101
diff changeset
   443
    self assert: debugger isConnected.
56bf65352505 Variable objects: preserve the identity of `GDBFrame` and `GDBVariable` objects
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 101
diff changeset
   444
    debugger executable: GDBDebuggeesResource current binaryFactorial1.
56bf65352505 Variable objects: preserve the identity of `GDBFrame` and `GDBVariable` objects
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 101
diff changeset
   445
    debugger send: 'b factorial'.
56bf65352505 Variable objects: preserve the identity of `GDBFrame` and `GDBVariable` objects
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 101
diff changeset
   446
    debugger send: 'r' andWaitFor: GDBStoppedEvent.
56bf65352505 Variable objects: preserve the identity of `GDBFrame` and `GDBVariable` objects
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 101
diff changeset
   447
56bf65352505 Variable objects: preserve the identity of `GDBFrame` and `GDBVariable` objects
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 101
diff changeset
   448
    stack1 := debugger selectedInferior threads first stack.
56bf65352505 Variable objects: preserve the identity of `GDBFrame` and `GDBVariable` objects
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 101
diff changeset
   449
    debugger send: 'c' andWaitFor: GDBStoppedEvent.
56bf65352505 Variable objects: preserve the identity of `GDBFrame` and `GDBVariable` objects
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 101
diff changeset
   450
    stack2 := debugger selectedInferior threads first stack.
56bf65352505 Variable objects: preserve the identity of `GDBFrame` and `GDBVariable` objects
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 101
diff changeset
   451
    self assert: stack1 size == 2.
56bf65352505 Variable objects: preserve the identity of `GDBFrame` and `GDBVariable` objects
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 101
diff changeset
   452
    self assert: stack2 size == 3.
56bf65352505 Variable objects: preserve the identity of `GDBFrame` and `GDBVariable` objects
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 101
diff changeset
   453
    self assert: stack1 first  == stack2 second.
56bf65352505 Variable objects: preserve the identity of `GDBFrame` and `GDBVariable` objects
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 101
diff changeset
   454
    self assert: stack1 second == stack2 third.
56bf65352505 Variable objects: preserve the identity of `GDBFrame` and `GDBVariable` objects
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 101
diff changeset
   455
    self assert: stack2 first line == 4.
56bf65352505 Variable objects: preserve the identity of `GDBFrame` and `GDBVariable` objects
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 101
diff changeset
   456
    self assert: stack2 second line == 7.
56bf65352505 Variable objects: preserve the identity of `GDBFrame` and `GDBVariable` objects
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 101
diff changeset
   457
56bf65352505 Variable objects: preserve the identity of `GDBFrame` and `GDBVariable` objects
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 101
diff changeset
   458
    stack1 := debugger selectedInferior threads first stack.
56bf65352505 Variable objects: preserve the identity of `GDBFrame` and `GDBVariable` objects
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 101
diff changeset
   459
    debugger send: 'c' andWaitFor: GDBStoppedEvent.
56bf65352505 Variable objects: preserve the identity of `GDBFrame` and `GDBVariable` objects
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 101
diff changeset
   460
    stack2 := debugger selectedInferior threads first stack.
56bf65352505 Variable objects: preserve the identity of `GDBFrame` and `GDBVariable` objects
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 101
diff changeset
   461
    self assert: stack1 size == 3.
56bf65352505 Variable objects: preserve the identity of `GDBFrame` and `GDBVariable` objects
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 101
diff changeset
   462
    self assert: stack2 size == 4.
56bf65352505 Variable objects: preserve the identity of `GDBFrame` and `GDBVariable` objects
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 101
diff changeset
   463
    self assert: stack1 first  == stack2 second.
56bf65352505 Variable objects: preserve the identity of `GDBFrame` and `GDBVariable` objects
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 101
diff changeset
   464
    self assert: stack1 second == stack2 third.
56bf65352505 Variable objects: preserve the identity of `GDBFrame` and `GDBVariable` objects
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 101
diff changeset
   465
    self assert: stack1 third == stack2 fourth.
56bf65352505 Variable objects: preserve the identity of `GDBFrame` and `GDBVariable` objects
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 101
diff changeset
   466
    self assert: stack2 first line == 4.
56bf65352505 Variable objects: preserve the identity of `GDBFrame` and `GDBVariable` objects
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 101
diff changeset
   467
    self assert: stack2 second line == 7.
56bf65352505 Variable objects: preserve the identity of `GDBFrame` and `GDBVariable` objects
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 101
diff changeset
   468
    self assert: stack2 third line == 7.
56bf65352505 Variable objects: preserve the identity of `GDBFrame` and `GDBVariable` objects
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 101
diff changeset
   469
56bf65352505 Variable objects: preserve the identity of `GDBFrame` and `GDBVariable` objects
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 101
diff changeset
   470
56bf65352505 Variable objects: preserve the identity of `GDBFrame` and `GDBVariable` objects
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 101
diff changeset
   471
    debugger send: 'd'.
56bf65352505 Variable objects: preserve the identity of `GDBFrame` and `GDBVariable` objects
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 101
diff changeset
   472
    debugger send: 'c' andWaitFor: GDBThreadGroupExitedEvent.
56bf65352505 Variable objects: preserve the identity of `GDBFrame` and `GDBVariable` objects
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 101
diff changeset
   473
    debugger send: 'quit' andWait: false.
56bf65352505 Variable objects: preserve the identity of `GDBFrame` and `GDBVariable` objects
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 101
diff changeset
   474
56bf65352505 Variable objects: preserve the identity of `GDBFrame` and `GDBVariable` objects
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 101
diff changeset
   475
    "Created: / 30-01-2018 / 15:54:46 / Jan Vrany <jan.vrany@fit.cvut.cz>"
56bf65352505 Variable objects: preserve the identity of `GDBFrame` and `GDBVariable` objects
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 101
diff changeset
   476
    "Modified: / 01-02-2018 / 21:04:23 / Jan Vrany <jan.vrany@fit.cvut.cz>"
56bf65352505 Variable objects: preserve the identity of `GDBFrame` and `GDBVariable` objects
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 101
diff changeset
   477
!
56bf65352505 Variable objects: preserve the identity of `GDBFrame` and `GDBVariable` objects
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 101
diff changeset
   478
106
12c96f17fc53 Variable objects: invalidate variable object when thread on inferior terminates
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 104
diff changeset
   479
test_stack_02
12c96f17fc53 Variable objects: invalidate variable object when thread on inferior terminates
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 104
diff changeset
   480
    | stack1 stack2 |
12c96f17fc53 Variable objects: invalidate variable object when thread on inferior terminates
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 104
diff changeset
   481
12c96f17fc53 Variable objects: invalidate variable object when thread on inferior terminates
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 104
diff changeset
   482
    debugger := GDBDebugger new.
12c96f17fc53 Variable objects: invalidate variable object when thread on inferior terminates
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 104
diff changeset
   483
    self assert: debugger isConnected.
110
727d8a9e6d5d Variable objecys: added `GDBVariableObject >> #visualizer` and `#visualizer:`
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 109
diff changeset
   484
    debugger executable: GDBDebuggeesResource current binaryVariables1.
106
12c96f17fc53 Variable objects: invalidate variable object when thread on inferior terminates
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 104
diff changeset
   485
    debugger send: 'b set_data_i'.
12c96f17fc53 Variable objects: invalidate variable object when thread on inferior terminates
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 104
diff changeset
   486
    debugger send: 'r' andWaitFor: GDBStoppedEvent.
12c96f17fc53 Variable objects: invalidate variable object when thread on inferior terminates
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 104
diff changeset
   487
12c96f17fc53 Variable objects: invalidate variable object when thread on inferior terminates
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 104
diff changeset
   488
    stack1 := debugger selectedInferior threads first stack.
12c96f17fc53 Variable objects: invalidate variable object when thread on inferior terminates
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 104
diff changeset
   489
    debugger send: 'c' andWaitFor: GDBStoppedEvent.
12c96f17fc53 Variable objects: invalidate variable object when thread on inferior terminates
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 104
diff changeset
   490
    stack2 := debugger selectedInferior threads first stack.
12c96f17fc53 Variable objects: invalidate variable object when thread on inferior terminates
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 104
diff changeset
   491
    self assert: stack1 size == 2.
12c96f17fc53 Variable objects: invalidate variable object when thread on inferior terminates
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 104
diff changeset
   492
    self assert: stack2 size == 2.
12c96f17fc53 Variable objects: invalidate variable object when thread on inferior terminates
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 104
diff changeset
   493
    self assert: stack1 first ~~ stack2 first.
12c96f17fc53 Variable objects: invalidate variable object when thread on inferior terminates
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 104
diff changeset
   494
12c96f17fc53 Variable objects: invalidate variable object when thread on inferior terminates
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 104
diff changeset
   495
    debugger send: 'd'.
12c96f17fc53 Variable objects: invalidate variable object when thread on inferior terminates
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 104
diff changeset
   496
    debugger send: 'c' andWaitFor: GDBThreadGroupExitedEvent.
12c96f17fc53 Variable objects: invalidate variable object when thread on inferior terminates
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 104
diff changeset
   497
    debugger send: 'quit' andWait: false.
12c96f17fc53 Variable objects: invalidate variable object when thread on inferior terminates
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 104
diff changeset
   498
12c96f17fc53 Variable objects: invalidate variable object when thread on inferior terminates
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 104
diff changeset
   499
    "Created: / 12-02-2018 / 21:46:48 / Jan Vrany <jan.vrany@fit.cvut.cz>"
12c96f17fc53 Variable objects: invalidate variable object when thread on inferior terminates
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 104
diff changeset
   500
    "Modified: / 15-02-2018 / 09:16:05 / Jan Vrany <jan.vrany@fit.cvut.cz>"
12c96f17fc53 Variable objects: invalidate variable object when thread on inferior terminates
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 104
diff changeset
   501
!
12c96f17fc53 Variable objects: invalidate variable object when thread on inferior terminates
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 104
diff changeset
   502
101
d8fee2af20b2 Variable objects: added support for composite types
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 95
diff changeset
   503
test_variables_01
108
f34505ec6a7f Variable objects: keep track of frame in which variable object has been created
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 106
diff changeset
   504
    | thread frame variables d |
101
d8fee2af20b2 Variable objects: added support for composite types
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 95
diff changeset
   505
d8fee2af20b2 Variable objects: added support for composite types
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 95
diff changeset
   506
    debugger := GDBDebugger new.
110
727d8a9e6d5d Variable objecys: added `GDBVariableObject >> #visualizer` and `#visualizer:`
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 109
diff changeset
   507
    debugger executable: GDBDebuggeesResource current binaryVariables1.
101
d8fee2af20b2 Variable objects: added support for composite types
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 95
diff changeset
   508
d8fee2af20b2 Variable objects: added support for composite types
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 95
diff changeset
   509
    debugger send: 'b main'.
d8fee2af20b2 Variable objects: added support for composite types
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 95
diff changeset
   510
    debugger send: 'r' andWaitFor: GDBStoppedEvent.
d8fee2af20b2 Variable objects: added support for composite types
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 95
diff changeset
   511
    debugger send: 's' andWaitFor: GDBStoppedEvent.
d8fee2af20b2 Variable objects: added support for composite types
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 95
diff changeset
   512
108
f34505ec6a7f Variable objects: keep track of frame in which variable object has been created
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 106
diff changeset
   513
    thread := debugger selectedInferior threads first.
f34505ec6a7f Variable objects: keep track of frame in which variable object has been created
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 106
diff changeset
   514
    frame := thread stack first.
f34505ec6a7f Variable objects: keep track of frame in which variable object has been created
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 106
diff changeset
   515
    variables :=  frame variables.
101
d8fee2af20b2 Variable objects: added support for composite types
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 95
diff changeset
   516
d8fee2af20b2 Variable objects: added support for composite types
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 95
diff changeset
   517
    self assert: variables size = 3. "/ argc, argv, d.
d8fee2af20b2 Variable objects: added support for composite types
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 95
diff changeset
   518
    self assert: variables first name = 'argc'.
d8fee2af20b2 Variable objects: added support for composite types
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 95
diff changeset
   519
    self assert: variables first varobj expression = 'argc'.
108
f34505ec6a7f Variable objects: keep track of frame in which variable object has been created
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 106
diff changeset
   520
    self assert: variables first varobj thread == thread.
f34505ec6a7f Variable objects: keep track of frame in which variable object has been created
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 106
diff changeset
   521
    self assert: variables first varobj frame == frame.
101
d8fee2af20b2 Variable objects: added support for composite types
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 95
diff changeset
   522
d8fee2af20b2 Variable objects: added support for composite types
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 95
diff changeset
   523
    self assert: variables second name = 'argv'.
d8fee2af20b2 Variable objects: added support for composite types
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 95
diff changeset
   524
    self assert: variables second varobj expression = 'argv'.
d8fee2af20b2 Variable objects: added support for composite types
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 95
diff changeset
   525
d8fee2af20b2 Variable objects: added support for composite types
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 95
diff changeset
   526
    self assert: variables third name = 'd'.
d8fee2af20b2 Variable objects: added support for composite types
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 95
diff changeset
   527
    self assert: variables third varobj expression = 'd'.
d8fee2af20b2 Variable objects: added support for composite types
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 95
diff changeset
   528
d8fee2af20b2 Variable objects: added support for composite types
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 95
diff changeset
   529
    d := variables third varobj.
d8fee2af20b2 Variable objects: added support for composite types
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 95
diff changeset
   530
    self assert: d hasChildren.
d8fee2af20b2 Variable objects: added support for composite types
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 95
diff changeset
   531
    self assert: d children size = 3.
d8fee2af20b2 Variable objects: added support for composite types
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 95
diff changeset
   532
108
f34505ec6a7f Variable objects: keep track of frame in which variable object has been created
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 106
diff changeset
   533
    self assert: d children first parent == d.
101
d8fee2af20b2 Variable objects: added support for composite types
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 95
diff changeset
   534
    self assert: d children first hasChildren not.
d8fee2af20b2 Variable objects: added support for composite types
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 95
diff changeset
   535
    self assert: d children first children = #().
d8fee2af20b2 Variable objects: added support for composite types
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 95
diff changeset
   536
    self assert: d children first expression = 'i'.
d8fee2af20b2 Variable objects: added support for composite types
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 95
diff changeset
   537
    self assert: d children first value = '1'.
108
f34505ec6a7f Variable objects: keep track of frame in which variable object has been created
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 106
diff changeset
   538
    self assert: d children first thread == thread.
f34505ec6a7f Variable objects: keep track of frame in which variable object has been created
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 106
diff changeset
   539
    self assert: d children first frame == frame.
f34505ec6a7f Variable objects: keep track of frame in which variable object has been created
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 106
diff changeset
   540
    
101
d8fee2af20b2 Variable objects: added support for composite types
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 95
diff changeset
   541
d8fee2af20b2 Variable objects: added support for composite types
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 95
diff changeset
   542
    self assert: d children third hasChildren.
d8fee2af20b2 Variable objects: added support for composite types
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 95
diff changeset
   543
    self assert: d children third children size = 2.
d8fee2af20b2 Variable objects: added support for composite types
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 95
diff changeset
   544
    self assert: d children third children first expression = 'as_i'.
d8fee2af20b2 Variable objects: added support for composite types
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 95
diff changeset
   545
    self assert: d children third children second expression = 'as_f'.
d8fee2af20b2 Variable objects: added support for composite types
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 95
diff changeset
   546
d8fee2af20b2 Variable objects: added support for composite types
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 95
diff changeset
   547
    self assert: d children third children first hasChildren.
d8fee2af20b2 Variable objects: added support for composite types
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 95
diff changeset
   548
    self assert: d children third children first children size = 2.
d8fee2af20b2 Variable objects: added support for composite types
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 95
diff changeset
   549
    self assert: d children third children first children first expression = 'a'.
d8fee2af20b2 Variable objects: added support for composite types
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 95
diff changeset
   550
    self assert: d children third children first children first value = '10'.
d8fee2af20b2 Variable objects: added support for composite types
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 95
diff changeset
   551
    self assert: d children third children first children second expression = 'b'.
d8fee2af20b2 Variable objects: added support for composite types
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 95
diff changeset
   552
    self assert: d children third children first children second value = '20'.
d8fee2af20b2 Variable objects: added support for composite types
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 95
diff changeset
   553
    
d8fee2af20b2 Variable objects: added support for composite types
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 95
diff changeset
   554
    debugger send: 'c' andWaitFor: GDBThreadGroupExitedEvent.
d8fee2af20b2 Variable objects: added support for composite types
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 95
diff changeset
   555
    debugger send: 'quit' andWait: false.
d8fee2af20b2 Variable objects: added support for composite types
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 95
diff changeset
   556
d8fee2af20b2 Variable objects: added support for composite types
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 95
diff changeset
   557
    "Created: / 30-01-2018 / 10:27:40 / Jan Vrany <jan.vrany@fit.cvut.cz>"
108
f34505ec6a7f Variable objects: keep track of frame in which variable object has been created
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 106
diff changeset
   558
    "Modified: / 13-02-2018 / 22:02:20 / Jan Vrany <jan.vrany@fit.cvut.cz>"
104
4add55336dfe Variable objects: automagically update values whenever changed.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 103
diff changeset
   559
!
4add55336dfe Variable objects: automagically update values whenever changed.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 103
diff changeset
   560
4add55336dfe Variable objects: automagically update values whenever changed.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 103
diff changeset
   561
test_variables_02
4add55336dfe Variable objects: automagically update values whenever changed.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 103
diff changeset
   562
    "
4add55336dfe Variable objects: automagically update values whenever changed.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 103
diff changeset
   563
    This test ensures that GDBVariable objects are preserved
4add55336dfe Variable objects: automagically update values whenever changed.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 103
diff changeset
   564
    across multiple run-stop cycles
4add55336dfe Variable objects: automagically update values whenever changed.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 103
diff changeset
   565
    "    
4add55336dfe Variable objects: automagically update values whenever changed.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 103
diff changeset
   566
    | variables1 variables2 |
4add55336dfe Variable objects: automagically update values whenever changed.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 103
diff changeset
   567
4add55336dfe Variable objects: automagically update values whenever changed.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 103
diff changeset
   568
    debugger := GDBDebugger new.
110
727d8a9e6d5d Variable objecys: added `GDBVariableObject >> #visualizer` and `#visualizer:`
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 109
diff changeset
   569
    debugger executable: GDBDebuggeesResource current binaryVariables1.
104
4add55336dfe Variable objects: automagically update values whenever changed.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 103
diff changeset
   570
4add55336dfe Variable objects: automagically update values whenever changed.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 103
diff changeset
   571
    debugger send: 'b main'.
4add55336dfe Variable objects: automagically update values whenever changed.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 103
diff changeset
   572
    debugger send: 'r' andWaitFor: GDBStoppedEvent.
4add55336dfe Variable objects: automagically update values whenever changed.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 103
diff changeset
   573
    debugger send: 's' andWaitFor: GDBStoppedEvent.
4add55336dfe Variable objects: automagically update values whenever changed.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 103
diff changeset
   574
4add55336dfe Variable objects: automagically update values whenever changed.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 103
diff changeset
   575
    variables1 := debugger selectedInferior threads first stack first variables.
4add55336dfe Variable objects: automagically update values whenever changed.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 103
diff changeset
   576
    debugger send: 'next' andWaitFor: GDBStoppedEvent.
4add55336dfe Variable objects: automagically update values whenever changed.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 103
diff changeset
   577
    variables2 := debugger selectedInferior threads first stack first variables.
4add55336dfe Variable objects: automagically update values whenever changed.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 103
diff changeset
   578
4add55336dfe Variable objects: automagically update values whenever changed.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 103
diff changeset
   579
    self assert: variables1 size = 3.
4add55336dfe Variable objects: automagically update values whenever changed.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 103
diff changeset
   580
    self assert: variables2 size = 3.
4add55336dfe Variable objects: automagically update values whenever changed.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 103
diff changeset
   581
    variables1 with: variables2 do:[:var1 :var2 | 
4add55336dfe Variable objects: automagically update values whenever changed.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 103
diff changeset
   582
        self assert: var1 == var2    
4add55336dfe Variable objects: automagically update values whenever changed.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 103
diff changeset
   583
    ].
4add55336dfe Variable objects: automagically update values whenever changed.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 103
diff changeset
   584
4add55336dfe Variable objects: automagically update values whenever changed.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 103
diff changeset
   585
    debugger send: 'c' andWaitFor: GDBThreadGroupExitedEvent.
4add55336dfe Variable objects: automagically update values whenever changed.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 103
diff changeset
   586
    debugger send: 'quit' andWait: false.
4add55336dfe Variable objects: automagically update values whenever changed.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 103
diff changeset
   587
4add55336dfe Variable objects: automagically update values whenever changed.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 103
diff changeset
   588
    "Created: / 01-02-2018 / 21:45:03 / Jan Vrany <jan.vrany@fit.cvut.cz>"
4add55336dfe Variable objects: automagically update values whenever changed.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 103
diff changeset
   589
!
4add55336dfe Variable objects: automagically update values whenever changed.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 103
diff changeset
   590
4add55336dfe Variable objects: automagically update values whenever changed.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 103
diff changeset
   591
test_variables_03
4add55336dfe Variable objects: automagically update values whenever changed.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 103
diff changeset
   592
    "
4add55336dfe Variable objects: automagically update values whenever changed.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 103
diff changeset
   593
    This test tests GDBVariableObject >> hasChanged
4add55336dfe Variable objects: automagically update values whenever changed.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 103
diff changeset
   594
    " 
4add55336dfe Variable objects: automagically update values whenever changed.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 103
diff changeset
   595
    | variables d d_i |
4add55336dfe Variable objects: automagically update values whenever changed.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 103
diff changeset
   596
4add55336dfe Variable objects: automagically update values whenever changed.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 103
diff changeset
   597
    debugger := GDBDebugger new.
110
727d8a9e6d5d Variable objecys: added `GDBVariableObject >> #visualizer` and `#visualizer:`
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 109
diff changeset
   598
    debugger executable: GDBDebuggeesResource current binaryVariables1.
104
4add55336dfe Variable objects: automagically update values whenever changed.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 103
diff changeset
   599
4add55336dfe Variable objects: automagically update values whenever changed.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 103
diff changeset
   600
    debugger send: 'b set_data_i'.
4add55336dfe Variable objects: automagically update values whenever changed.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 103
diff changeset
   601
    debugger send: 'r' andWaitFor: GDBStoppedEvent.
106
12c96f17fc53 Variable objects: invalidate variable object when thread on inferior terminates
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 104
diff changeset
   602
    debugger send: 'del'.
104
4add55336dfe Variable objects: automagically update values whenever changed.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 103
diff changeset
   603
4add55336dfe Variable objects: automagically update values whenever changed.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 103
diff changeset
   604
    self assert: debugger selectedInferior threads first stack second func = 'main'.
4add55336dfe Variable objects: automagically update values whenever changed.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 103
diff changeset
   605
    variables := debugger selectedInferior threads first stack second variables.
4add55336dfe Variable objects: automagically update values whenever changed.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 103
diff changeset
   606
    self assert: variables third name = 'd'.
4add55336dfe Variable objects: automagically update values whenever changed.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 103
diff changeset
   607
    self assert: variables third varobj expression = 'd'.   
4add55336dfe Variable objects: automagically update values whenever changed.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 103
diff changeset
   608
    d := variables third varobj.
4add55336dfe Variable objects: automagically update values whenever changed.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 103
diff changeset
   609
    self assert: d hasChildren.
4add55336dfe Variable objects: automagically update values whenever changed.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 103
diff changeset
   610
    self assert: d expression = 'd'.
4add55336dfe Variable objects: automagically update values whenever changed.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 103
diff changeset
   611
    self assert: d children size = 3.   
4add55336dfe Variable objects: automagically update values whenever changed.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 103
diff changeset
   612
    d_i := d children first.
4add55336dfe Variable objects: automagically update values whenever changed.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 103
diff changeset
   613
    self assert: d_i expression = 'i'.
4add55336dfe Variable objects: automagically update values whenever changed.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 103
diff changeset
   614
    self assert: d_i value = '1'.
4add55336dfe Variable objects: automagically update values whenever changed.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 103
diff changeset
   615
    self assert: d_i hasChanged not.
4add55336dfe Variable objects: automagically update values whenever changed.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 103
diff changeset
   616
    self assert: d_i hasChildren not .   
4add55336dfe Variable objects: automagically update values whenever changed.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 103
diff changeset
   617
4add55336dfe Variable objects: automagically update values whenever changed.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 103
diff changeset
   618
    debugger selectFrame: debugger selectedInferior threads first stack first.
4add55336dfe Variable objects: automagically update values whenever changed.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 103
diff changeset
   619
    debugger send: 'finish' andWaitFor: GDBStoppedEvent.
4add55336dfe Variable objects: automagically update values whenever changed.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 103
diff changeset
   620
    self assert: debugger selectedInferior threads first stack first func = 'main'.
4add55336dfe Variable objects: automagically update values whenever changed.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 103
diff changeset
   621
    self assert: d_i value = '12'.
4add55336dfe Variable objects: automagically update values whenever changed.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 103
diff changeset
   622
    self assert: d_i hasChanged.
4add55336dfe Variable objects: automagically update values whenever changed.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 103
diff changeset
   623
    self assert: d_i hasChanged.
4add55336dfe Variable objects: automagically update values whenever changed.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 103
diff changeset
   624
    self assert: d_i hasChanged.
4add55336dfe Variable objects: automagically update values whenever changed.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 103
diff changeset
   625
4add55336dfe Variable objects: automagically update values whenever changed.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 103
diff changeset
   626
    debugger send: 's' andWaitFor: GDBStoppedEvent.
4add55336dfe Variable objects: automagically update values whenever changed.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 103
diff changeset
   627
    self assert: d_i value = '12'.
4add55336dfe Variable objects: automagically update values whenever changed.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 103
diff changeset
   628
    self assert: d_i hasChanged not.
4add55336dfe Variable objects: automagically update values whenever changed.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 103
diff changeset
   629
4add55336dfe Variable objects: automagically update values whenever changed.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 103
diff changeset
   630
    debugger send: 'c' andWaitFor: GDBThreadGroupExitedEvent.
4add55336dfe Variable objects: automagically update values whenever changed.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 103
diff changeset
   631
    debugger send: 'quit' andWait: false.
4add55336dfe Variable objects: automagically update values whenever changed.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 103
diff changeset
   632
4add55336dfe Variable objects: automagically update values whenever changed.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 103
diff changeset
   633
    "Created: / 01-02-2018 / 21:57:01 / Jan Vrany <jan.vrany@fit.cvut.cz>"
106
12c96f17fc53 Variable objects: invalidate variable object when thread on inferior terminates
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 104
diff changeset
   634
    "Modified: / 12-02-2018 / 22:36:53 / Jan Vrany <jan.vrany@fit.cvut.cz>"
12c96f17fc53 Variable objects: invalidate variable object when thread on inferior terminates
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 104
diff changeset
   635
!
12c96f17fc53 Variable objects: invalidate variable object when thread on inferior terminates
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 104
diff changeset
   636
12c96f17fc53 Variable objects: invalidate variable object when thread on inferior terminates
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 104
diff changeset
   637
test_variables_04
12c96f17fc53 Variable objects: invalidate variable object when thread on inferior terminates
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 104
diff changeset
   638
    "
12c96f17fc53 Variable objects: invalidate variable object when thread on inferior terminates
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 104
diff changeset
   639
    Tests that the variable object get's invalid after
12c96f17fc53 Variable objects: invalidate variable object when thread on inferior terminates
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 104
diff changeset
   640
    inferior terminated.
12c96f17fc53 Variable objects: invalidate variable object when thread on inferior terminates
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 104
diff changeset
   641
    " 
12c96f17fc53 Variable objects: invalidate variable object when thread on inferior terminates
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 104
diff changeset
   642
    | variables d d_as_i_a events seqNo1 seqNo2 |
12c96f17fc53 Variable objects: invalidate variable object when thread on inferior terminates
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 104
diff changeset
   643
12c96f17fc53 Variable objects: invalidate variable object when thread on inferior terminates
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 104
diff changeset
   644
    debugger := GDBDebugger new.
12c96f17fc53 Variable objects: invalidate variable object when thread on inferior terminates
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 104
diff changeset
   645
    events := OrderedCollection new.
12c96f17fc53 Variable objects: invalidate variable object when thread on inferior terminates
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 104
diff changeset
   646
    debugger announcer when: GDBEvent send: #add: to: events.
12c96f17fc53 Variable objects: invalidate variable object when thread on inferior terminates
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 104
diff changeset
   647
110
727d8a9e6d5d Variable objecys: added `GDBVariableObject >> #visualizer` and `#visualizer:`
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 109
diff changeset
   648
    debugger executable: GDBDebuggeesResource current binaryVariables1.
106
12c96f17fc53 Variable objects: invalidate variable object when thread on inferior terminates
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 104
diff changeset
   649
12c96f17fc53 Variable objects: invalidate variable object when thread on inferior terminates
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 104
diff changeset
   650
12c96f17fc53 Variable objects: invalidate variable object when thread on inferior terminates
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 104
diff changeset
   651
    debugger send: 'b set_data_i'.
12c96f17fc53 Variable objects: invalidate variable object when thread on inferior terminates
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 104
diff changeset
   652
    debugger send: 'r' andWaitFor: GDBStoppedEvent.
12c96f17fc53 Variable objects: invalidate variable object when thread on inferior terminates
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 104
diff changeset
   653
    seqNo1 := debugger currentInferiorStateSequnceNumber.
12c96f17fc53 Variable objects: invalidate variable object when thread on inferior terminates
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 104
diff changeset
   654
12c96f17fc53 Variable objects: invalidate variable object when thread on inferior terminates
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 104
diff changeset
   655
    self assert: debugger selectedInferior threads first stack second func = 'main'.
12c96f17fc53 Variable objects: invalidate variable object when thread on inferior terminates
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 104
diff changeset
   656
    variables := debugger selectedInferior threads first stack second variables.
12c96f17fc53 Variable objects: invalidate variable object when thread on inferior terminates
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 104
diff changeset
   657
    d := variables third varobj.
12c96f17fc53 Variable objects: invalidate variable object when thread on inferior terminates
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 104
diff changeset
   658
    self assert: d expression = 'd'.
12c96f17fc53 Variable objects: invalidate variable object when thread on inferior terminates
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 104
diff changeset
   659
    self assert: d isValid.
12c96f17fc53 Variable objects: invalidate variable object when thread on inferior terminates
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 104
diff changeset
   660
    d_as_i_a := d children third children first children first.
12c96f17fc53 Variable objects: invalidate variable object when thread on inferior terminates
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 104
diff changeset
   661
    self assert: d_as_i_a expression = 'a'.
12c96f17fc53 Variable objects: invalidate variable object when thread on inferior terminates
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 104
diff changeset
   662
    self assert: d_as_i_a isValid.
12c96f17fc53 Variable objects: invalidate variable object when thread on inferior terminates
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 104
diff changeset
   663
12c96f17fc53 Variable objects: invalidate variable object when thread on inferior terminates
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 104
diff changeset
   664
    debugger send: 'dis 1'. 
12c96f17fc53 Variable objects: invalidate variable object when thread on inferior terminates
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 104
diff changeset
   665
    debugger send: 'c' andWaitFor: GDBThreadGroupExitedEvent.
12c96f17fc53 Variable objects: invalidate variable object when thread on inferior terminates
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 104
diff changeset
   666
    seqNo2 := debugger currentInferiorStateSequnceNumber.
12c96f17fc53 Variable objects: invalidate variable object when thread on inferior terminates
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 104
diff changeset
   667
12c96f17fc53 Variable objects: invalidate variable object when thread on inferior terminates
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 104
diff changeset
   668
    self assert: seqNo1 ~~ seqNo2.
12c96f17fc53 Variable objects: invalidate variable object when thread on inferior terminates
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 104
diff changeset
   669
    self assert: d isValid not.
12c96f17fc53 Variable objects: invalidate variable object when thread on inferior terminates
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 104
diff changeset
   670
    self assert: d value = '<invalid>'.
12c96f17fc53 Variable objects: invalidate variable object when thread on inferior terminates
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 104
diff changeset
   671
    self assert: d children isEmpty.
12c96f17fc53 Variable objects: invalidate variable object when thread on inferior terminates
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 104
diff changeset
   672
    self assert: d_as_i_a isValid not.    
12c96f17fc53 Variable objects: invalidate variable object when thread on inferior terminates
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 104
diff changeset
   673
    self assert: d_as_i_a value = '<invalid>'.
12c96f17fc53 Variable objects: invalidate variable object when thread on inferior terminates
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 104
diff changeset
   674
    self assert: debugger isConnected.
12c96f17fc53 Variable objects: invalidate variable object when thread on inferior terminates
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 104
diff changeset
   675
12c96f17fc53 Variable objects: invalidate variable object when thread on inferior terminates
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 104
diff changeset
   676
    debugger send: 'quit' andWait: false.
12c96f17fc53 Variable objects: invalidate variable object when thread on inferior terminates
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 104
diff changeset
   677
12c96f17fc53 Variable objects: invalidate variable object when thread on inferior terminates
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 104
diff changeset
   678
    "Created: / 04-02-2018 / 22:04:59 / Jan Vrany <jan.vrany@fit.cvut.cz>"
12c96f17fc53 Variable objects: invalidate variable object when thread on inferior terminates
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 104
diff changeset
   679
    "Modified: / 13-02-2018 / 10:15:18 / Jan Vrany <jan.vrany@fit.cvut.cz>"
12c96f17fc53 Variable objects: invalidate variable object when thread on inferior terminates
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 104
diff changeset
   680
!
12c96f17fc53 Variable objects: invalidate variable object when thread on inferior terminates
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 104
diff changeset
   681
12c96f17fc53 Variable objects: invalidate variable object when thread on inferior terminates
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 104
diff changeset
   682
test_variables_05
12c96f17fc53 Variable objects: invalidate variable object when thread on inferior terminates
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 104
diff changeset
   683
    "
12c96f17fc53 Variable objects: invalidate variable object when thread on inferior terminates
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 104
diff changeset
   684
    Tests that the variable object get's invalid after
12c96f17fc53 Variable objects: invalidate variable object when thread on inferior terminates
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 104
diff changeset
   685
    frame returned
12c96f17fc53 Variable objects: invalidate variable object when thread on inferior terminates
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 104
diff changeset
   686
    " 
12c96f17fc53 Variable objects: invalidate variable object when thread on inferior terminates
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 104
diff changeset
   687
    | variables d |
12c96f17fc53 Variable objects: invalidate variable object when thread on inferior terminates
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 104
diff changeset
   688
12c96f17fc53 Variable objects: invalidate variable object when thread on inferior terminates
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 104
diff changeset
   689
    debugger := GDBDebugger new.
110
727d8a9e6d5d Variable objecys: added `GDBVariableObject >> #visualizer` and `#visualizer:`
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 109
diff changeset
   690
    debugger executable: GDBDebuggeesResource current binaryVariables1.
106
12c96f17fc53 Variable objects: invalidate variable object when thread on inferior terminates
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 104
diff changeset
   691
12c96f17fc53 Variable objects: invalidate variable object when thread on inferior terminates
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 104
diff changeset
   692
    debugger send: 'b set_data_i'.
12c96f17fc53 Variable objects: invalidate variable object when thread on inferior terminates
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 104
diff changeset
   693
    debugger send: 'r' andWaitFor: GDBStoppedEvent.
12c96f17fc53 Variable objects: invalidate variable object when thread on inferior terminates
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 104
diff changeset
   694
12c96f17fc53 Variable objects: invalidate variable object when thread on inferior terminates
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 104
diff changeset
   695
    self assert: debugger selectedInferior threads first stack first func = 'set_data_i'.
12c96f17fc53 Variable objects: invalidate variable object when thread on inferior terminates
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 104
diff changeset
   696
    variables := debugger selectedInferior threads first stack first variables.
12c96f17fc53 Variable objects: invalidate variable object when thread on inferior terminates
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 104
diff changeset
   697
    d := variables second varobj.
12c96f17fc53 Variable objects: invalidate variable object when thread on inferior terminates
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 104
diff changeset
   698
    self assert: d expression = 'i'.
12c96f17fc53 Variable objects: invalidate variable object when thread on inferior terminates
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 104
diff changeset
   699
    self assert: d isValid.
12c96f17fc53 Variable objects: invalidate variable object when thread on inferior terminates
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 104
diff changeset
   700
    self assert: d inScope.
12c96f17fc53 Variable objects: invalidate variable object when thread on inferior terminates
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 104
diff changeset
   701
12c96f17fc53 Variable objects: invalidate variable object when thread on inferior terminates
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 104
diff changeset
   702
    debugger send: 'finish' andWaitFor: GDBStoppedEvent.
12c96f17fc53 Variable objects: invalidate variable object when thread on inferior terminates
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 104
diff changeset
   703
12c96f17fc53 Variable objects: invalidate variable object when thread on inferior terminates
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 104
diff changeset
   704
    self assert: d isValid.
12c96f17fc53 Variable objects: invalidate variable object when thread on inferior terminates
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 104
diff changeset
   705
    self assert: d inScope not.
12c96f17fc53 Variable objects: invalidate variable object when thread on inferior terminates
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 104
diff changeset
   706
    self assert: d hasChanged.
12c96f17fc53 Variable objects: invalidate variable object when thread on inferior terminates
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 104
diff changeset
   707
    self assert: d value = '<out-of-scope>'.
12c96f17fc53 Variable objects: invalidate variable object when thread on inferior terminates
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 104
diff changeset
   708
12c96f17fc53 Variable objects: invalidate variable object when thread on inferior terminates
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 104
diff changeset
   709
    debugger send: 'continue' andWaitFor: GDBStoppedEvent.  
12c96f17fc53 Variable objects: invalidate variable object when thread on inferior terminates
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 104
diff changeset
   710
12c96f17fc53 Variable objects: invalidate variable object when thread on inferior terminates
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 104
diff changeset
   711
    self assert: d isValid.
12c96f17fc53 Variable objects: invalidate variable object when thread on inferior terminates
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 104
diff changeset
   712
    self assert: d inScope.
12c96f17fc53 Variable objects: invalidate variable object when thread on inferior terminates
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 104
diff changeset
   713
    self assert: d hasChanged.
12c96f17fc53 Variable objects: invalidate variable object when thread on inferior terminates
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 104
diff changeset
   714
    self assert: d value = '24'.
12c96f17fc53 Variable objects: invalidate variable object when thread on inferior terminates
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 104
diff changeset
   715
    self assert: debugger isConnected.
12c96f17fc53 Variable objects: invalidate variable object when thread on inferior terminates
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 104
diff changeset
   716
12c96f17fc53 Variable objects: invalidate variable object when thread on inferior terminates
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 104
diff changeset
   717
    debugger send: 'quit' andWait: false.
12c96f17fc53 Variable objects: invalidate variable object when thread on inferior terminates
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 104
diff changeset
   718
12c96f17fc53 Variable objects: invalidate variable object when thread on inferior terminates
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 104
diff changeset
   719
    "Created: / 12-02-2018 / 21:34:04 / Jan Vrany <jan.vrany@fit.cvut.cz>"
109
f57ce907abf4 Variable objects: added `GDBVariableObject >> #duplicate`
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 108
diff changeset
   720
!
f57ce907abf4 Variable objects: added `GDBVariableObject >> #duplicate`
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 108
diff changeset
   721
f57ce907abf4 Variable objects: added `GDBVariableObject >> #duplicate`
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 108
diff changeset
   722
test_variables_06
f57ce907abf4 Variable objects: added `GDBVariableObject >> #duplicate`
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 108
diff changeset
   723
    "
f57ce907abf4 Variable objects: added `GDBVariableObject >> #duplicate`
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 108
diff changeset
   724
    This test tests GDBVariableObject >> duplicate
f57ce907abf4 Variable objects: added `GDBVariableObject >> #duplicate`
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 108
diff changeset
   725
    " 
f57ce907abf4 Variable objects: added `GDBVariableObject >> #duplicate`
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 108
diff changeset
   726
    | variables d1 d_i1 d_i2 |
f57ce907abf4 Variable objects: added `GDBVariableObject >> #duplicate`
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 108
diff changeset
   727
f57ce907abf4 Variable objects: added `GDBVariableObject >> #duplicate`
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 108
diff changeset
   728
    debugger := GDBDebugger new.
110
727d8a9e6d5d Variable objecys: added `GDBVariableObject >> #visualizer` and `#visualizer:`
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 109
diff changeset
   729
    debugger executable: GDBDebuggeesResource current binaryVariables1.
109
f57ce907abf4 Variable objects: added `GDBVariableObject >> #duplicate`
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 108
diff changeset
   730
f57ce907abf4 Variable objects: added `GDBVariableObject >> #duplicate`
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 108
diff changeset
   731
    debugger send: 'b set_data_i'.
f57ce907abf4 Variable objects: added `GDBVariableObject >> #duplicate`
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 108
diff changeset
   732
    debugger send: 'r' andWaitFor: GDBStoppedEvent.
f57ce907abf4 Variable objects: added `GDBVariableObject >> #duplicate`
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 108
diff changeset
   733
    debugger send: 'del'.
f57ce907abf4 Variable objects: added `GDBVariableObject >> #duplicate`
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 108
diff changeset
   734
f57ce907abf4 Variable objects: added `GDBVariableObject >> #duplicate`
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 108
diff changeset
   735
    self assert: debugger selectedInferior threads first stack second func = 'main'.
f57ce907abf4 Variable objects: added `GDBVariableObject >> #duplicate`
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 108
diff changeset
   736
    variables := debugger selectedInferior threads first stack second variables.
f57ce907abf4 Variable objects: added `GDBVariableObject >> #duplicate`
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 108
diff changeset
   737
    self assert: variables third name = 'd'.
f57ce907abf4 Variable objects: added `GDBVariableObject >> #duplicate`
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 108
diff changeset
   738
    self assert: variables third varobj expression = 'd'.   
f57ce907abf4 Variable objects: added `GDBVariableObject >> #duplicate`
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 108
diff changeset
   739
    d1 := variables third varobj.
f57ce907abf4 Variable objects: added `GDBVariableObject >> #duplicate`
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 108
diff changeset
   740
    self assert: d1 hasChildren.
f57ce907abf4 Variable objects: added `GDBVariableObject >> #duplicate`
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 108
diff changeset
   741
    self assert: d1 expression = 'd'.
f57ce907abf4 Variable objects: added `GDBVariableObject >> #duplicate`
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 108
diff changeset
   742
    self assert: d1 children size = 3.   
f57ce907abf4 Variable objects: added `GDBVariableObject >> #duplicate`
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 108
diff changeset
   743
    d_i1 := d1 children first.
f57ce907abf4 Variable objects: added `GDBVariableObject >> #duplicate`
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 108
diff changeset
   744
    self assert: d_i1 expression = 'i'.
f57ce907abf4 Variable objects: added `GDBVariableObject >> #duplicate`
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 108
diff changeset
   745
    self assert: d_i1 value = '1'.
f57ce907abf4 Variable objects: added `GDBVariableObject >> #duplicate`
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 108
diff changeset
   746
    self assert: d_i1 hasChanged not.
f57ce907abf4 Variable objects: added `GDBVariableObject >> #duplicate`
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 108
diff changeset
   747
    self assert: d_i1 hasChildren not .
f57ce907abf4 Variable objects: added `GDBVariableObject >> #duplicate`
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 108
diff changeset
   748
f57ce907abf4 Variable objects: added `GDBVariableObject >> #duplicate`
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 108
diff changeset
   749
    d_i2 := d_i1 duplicate.
f57ce907abf4 Variable objects: added `GDBVariableObject >> #duplicate`
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 108
diff changeset
   750
    self assert: d_i2 expression = '(d).i'.
f57ce907abf4 Variable objects: added `GDBVariableObject >> #duplicate`
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 108
diff changeset
   751
    self assert: d_i2 path = '(d).i'.
f57ce907abf4 Variable objects: added `GDBVariableObject >> #duplicate`
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 108
diff changeset
   752
    self assert: d_i2 value = '1'.
f57ce907abf4 Variable objects: added `GDBVariableObject >> #duplicate`
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 108
diff changeset
   753
    self assert: d_i2 hasChanged not.
f57ce907abf4 Variable objects: added `GDBVariableObject >> #duplicate`
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 108
diff changeset
   754
    self assert: d_i2 hasChildren not .
f57ce907abf4 Variable objects: added `GDBVariableObject >> #duplicate`
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 108
diff changeset
   755
    
f57ce907abf4 Variable objects: added `GDBVariableObject >> #duplicate`
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 108
diff changeset
   756
f57ce907abf4 Variable objects: added `GDBVariableObject >> #duplicate`
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 108
diff changeset
   757
    debugger selectFrame: debugger selectedInferior threads first stack first.
f57ce907abf4 Variable objects: added `GDBVariableObject >> #duplicate`
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 108
diff changeset
   758
    debugger send: 'finish' andWaitFor: GDBStoppedEvent.
f57ce907abf4 Variable objects: added `GDBVariableObject >> #duplicate`
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 108
diff changeset
   759
    self assert: debugger selectedInferior threads first stack first func = 'main'.
f57ce907abf4 Variable objects: added `GDBVariableObject >> #duplicate`
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 108
diff changeset
   760
    self assert: d_i2 value = '12'.
f57ce907abf4 Variable objects: added `GDBVariableObject >> #duplicate`
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 108
diff changeset
   761
    self assert: d_i2 hasChanged.
f57ce907abf4 Variable objects: added `GDBVariableObject >> #duplicate`
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 108
diff changeset
   762
    self assert: d_i2 hasChanged.
f57ce907abf4 Variable objects: added `GDBVariableObject >> #duplicate`
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 108
diff changeset
   763
    self assert: d_i2 hasChanged.
f57ce907abf4 Variable objects: added `GDBVariableObject >> #duplicate`
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 108
diff changeset
   764
f57ce907abf4 Variable objects: added `GDBVariableObject >> #duplicate`
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 108
diff changeset
   765
    debugger send: 's' andWaitFor: GDBStoppedEvent.
f57ce907abf4 Variable objects: added `GDBVariableObject >> #duplicate`
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 108
diff changeset
   766
    self assert: d_i2 value = '12'.
f57ce907abf4 Variable objects: added `GDBVariableObject >> #duplicate`
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 108
diff changeset
   767
    self assert: d_i2 hasChanged not.
f57ce907abf4 Variable objects: added `GDBVariableObject >> #duplicate`
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 108
diff changeset
   768
f57ce907abf4 Variable objects: added `GDBVariableObject >> #duplicate`
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 108
diff changeset
   769
    debugger send: 'c' andWaitFor: GDBThreadGroupExitedEvent.
f57ce907abf4 Variable objects: added `GDBVariableObject >> #duplicate`
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 108
diff changeset
   770
    debugger send: 'quit' andWait: false.
f57ce907abf4 Variable objects: added `GDBVariableObject >> #duplicate`
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 108
diff changeset
   771
f57ce907abf4 Variable objects: added `GDBVariableObject >> #duplicate`
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 108
diff changeset
   772
    "Created: / 13-02-2018 / 22:27:13 / Jan Vrany <jan.vrany@fit.cvut.cz>"
f57ce907abf4 Variable objects: added `GDBVariableObject >> #duplicate`
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 108
diff changeset
   773
!
f57ce907abf4 Variable objects: added `GDBVariableObject >> #duplicate`
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 108
diff changeset
   774
f57ce907abf4 Variable objects: added `GDBVariableObject >> #duplicate`
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 108
diff changeset
   775
test_variables_07
f57ce907abf4 Variable objects: added `GDBVariableObject >> #duplicate`
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 108
diff changeset
   776
    | stack v1 v2 v3 |
f57ce907abf4 Variable objects: added `GDBVariableObject >> #duplicate`
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 108
diff changeset
   777
f57ce907abf4 Variable objects: added `GDBVariableObject >> #duplicate`
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 108
diff changeset
   778
    debugger := GDBDebugger new.
f57ce907abf4 Variable objects: added `GDBVariableObject >> #duplicate`
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 108
diff changeset
   779
    self assert: debugger isConnected.
f57ce907abf4 Variable objects: added `GDBVariableObject >> #duplicate`
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 108
diff changeset
   780
f57ce907abf4 Variable objects: added `GDBVariableObject >> #duplicate`
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 108
diff changeset
   781
    debugger executable: GDBDebuggeesResource current binaryFactorial1.
f57ce907abf4 Variable objects: added `GDBVariableObject >> #duplicate`
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 108
diff changeset
   782
    self assert: debugger breakpoints isEmpty.
f57ce907abf4 Variable objects: added `GDBVariableObject >> #duplicate`
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 108
diff changeset
   783
f57ce907abf4 Variable objects: added `GDBVariableObject >> #duplicate`
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 108
diff changeset
   784
    debugger send: 'b factorial'.
f57ce907abf4 Variable objects: added `GDBVariableObject >> #duplicate`
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 108
diff changeset
   785
    self assert: debugger breakpoints size == 1.
f57ce907abf4 Variable objects: added `GDBVariableObject >> #duplicate`
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 108
diff changeset
   786
f57ce907abf4 Variable objects: added `GDBVariableObject >> #duplicate`
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 108
diff changeset
   787
    debugger send: 'r' andWaitFor: GDBStoppedEvent.
f57ce907abf4 Variable objects: added `GDBVariableObject >> #duplicate`
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 108
diff changeset
   788
    debugger send: 'c' andWaitFor: GDBStoppedEvent.
f57ce907abf4 Variable objects: added `GDBVariableObject >> #duplicate`
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 108
diff changeset
   789
f57ce907abf4 Variable objects: added `GDBVariableObject >> #duplicate`
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 108
diff changeset
   790
    stack := debugger selectedInferior threads first stack.   
f57ce907abf4 Variable objects: added `GDBVariableObject >> #duplicate`
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 108
diff changeset
   791
f57ce907abf4 Variable objects: added `GDBVariableObject >> #duplicate`
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 108
diff changeset
   792
    debugger selectFrame: stack third.
f57ce907abf4 Variable objects: added `GDBVariableObject >> #duplicate`
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 108
diff changeset
   793
    v1 := debugger evaluate: 'i'  in: stack first.
f57ce907abf4 Variable objects: added `GDBVariableObject >> #duplicate`
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 108
diff changeset
   794
    v2 := debugger evaluate: 'i'  in: stack second.
f57ce907abf4 Variable objects: added `GDBVariableObject >> #duplicate`
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 108
diff changeset
   795
    self assert: v1 value = '4'.
f57ce907abf4 Variable objects: added `GDBVariableObject >> #duplicate`
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 108
diff changeset
   796
    self assert: v2 value = '5'.
f57ce907abf4 Variable objects: added `GDBVariableObject >> #duplicate`
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 108
diff changeset
   797
f57ce907abf4 Variable objects: added `GDBVariableObject >> #duplicate`
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 108
diff changeset
   798
    debugger selectFrame: stack first.
f57ce907abf4 Variable objects: added `GDBVariableObject >> #duplicate`
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 108
diff changeset
   799
    v3 := debugger evaluate: 'i'.
f57ce907abf4 Variable objects: added `GDBVariableObject >> #duplicate`
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 108
diff changeset
   800
    self assert: v3 value = '4'.  
f57ce907abf4 Variable objects: added `GDBVariableObject >> #duplicate`
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 108
diff changeset
   801
f57ce907abf4 Variable objects: added `GDBVariableObject >> #duplicate`
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 108
diff changeset
   802
    debugger send: 'del'.
f57ce907abf4 Variable objects: added `GDBVariableObject >> #duplicate`
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 108
diff changeset
   803
    self assert: debugger breakpoints isEmpty.
f57ce907abf4 Variable objects: added `GDBVariableObject >> #duplicate`
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 108
diff changeset
   804
f57ce907abf4 Variable objects: added `GDBVariableObject >> #duplicate`
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 108
diff changeset
   805
    debugger send: 'c' andWaitFor: GDBThreadGroupExitedEvent.
f57ce907abf4 Variable objects: added `GDBVariableObject >> #duplicate`
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 108
diff changeset
   806
    self assert: debugger breakpoints isEmpty.
f57ce907abf4 Variable objects: added `GDBVariableObject >> #duplicate`
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 108
diff changeset
   807
f57ce907abf4 Variable objects: added `GDBVariableObject >> #duplicate`
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 108
diff changeset
   808
    debugger send: 'quit' andWait: false.
f57ce907abf4 Variable objects: added `GDBVariableObject >> #duplicate`
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 108
diff changeset
   809
f57ce907abf4 Variable objects: added `GDBVariableObject >> #duplicate`
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 108
diff changeset
   810
    "Created: / 20-03-2018 / 22:32:00 / Jan Vrany <jan.vrany@fit.cvut.cz>"
122
c939f8a4c3cd Added support for dynamic varobjs
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 120
diff changeset
   811
!
c939f8a4c3cd Added support for dynamic varobjs
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 120
diff changeset
   812
c939f8a4c3cd Added support for dynamic varobjs
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 120
diff changeset
   813
test_variables_08
c939f8a4c3cd Added support for dynamic varobjs
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 120
diff changeset
   814
    "
c939f8a4c3cd Added support for dynamic varobjs
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 120
diff changeset
   815
    This tests -var-info-path-expression on dynamic varobjs.
c939f8a4c3cd Added support for dynamic varobjs
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 120
diff changeset
   816
    "
c939f8a4c3cd Added support for dynamic varobjs
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 120
diff changeset
   817
c939f8a4c3cd Added support for dynamic varobjs
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 120
diff changeset
   818
    | c1 c1_cdr c1_cdr_cdr |
c939f8a4c3cd Added support for dynamic varobjs
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 120
diff changeset
   819
c939f8a4c3cd Added support for dynamic varobjs
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 120
diff changeset
   820
    debugger := GDBDebugger new.
c939f8a4c3cd Added support for dynamic varobjs
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 120
diff changeset
   821
    self assert: debugger isConnected.
c939f8a4c3cd Added support for dynamic varobjs
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 120
diff changeset
   822
c939f8a4c3cd Added support for dynamic varobjs
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 120
diff changeset
   823
    debugger executable: GDBDebuggeesResource current binaryPyVarobj.
c939f8a4c3cd Added support for dynamic varobjs
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 120
diff changeset
   824
    self assert: debugger breakpoints isEmpty.
c939f8a4c3cd Added support for dynamic varobjs
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 120
diff changeset
   825
c939f8a4c3cd Added support for dynamic varobjs
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 120
diff changeset
   826
    debugger send: 'source ', ((Smalltalk getPackageDirectoryForPackage:self class package)
c939f8a4c3cd Added support for dynamic varobjs
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 120
diff changeset
   827
            / 'c' / 'py-varobj.py') pathName.
c939f8a4c3cd Added support for dynamic varobjs
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 120
diff changeset
   828
    debugger enablePrettyPrinting.
c939f8a4c3cd Added support for dynamic varobjs
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 120
diff changeset
   829
    debugger send: 'b py-varobj.c:22'.
c939f8a4c3cd Added support for dynamic varobjs
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 120
diff changeset
   830
    debugger send: 'r'.
c939f8a4c3cd Added support for dynamic varobjs
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 120
diff changeset
   831
c939f8a4c3cd Added support for dynamic varobjs
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 120
diff changeset
   832
    c1 := debugger evaluate: '&c1'.
c939f8a4c3cd Added support for dynamic varobjs
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 120
diff changeset
   833
    self assert: c1 isDynamic.
c939f8a4c3cd Added support for dynamic varobjs
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 120
diff changeset
   834
    self assert: c1 path = '&c1'.
c939f8a4c3cd Added support for dynamic varobjs
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 120
diff changeset
   835
c939f8a4c3cd Added support for dynamic varobjs
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 120
diff changeset
   836
    c1_cdr := c1 children second.
c939f8a4c3cd Added support for dynamic varobjs
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 120
diff changeset
   837
    self assert: c1_cdr expression = 'cdr'.
c939f8a4c3cd Added support for dynamic varobjs
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 120
diff changeset
   838
    self assert: c1_cdr isDynamic.
c939f8a4c3cd Added support for dynamic varobjs
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 120
diff changeset
   839
    self assert: c1_cdr parent == c1.
c939f8a4c3cd Added support for dynamic varobjs
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 120
diff changeset
   840
    self should: [ c1_cdr path ] raise: GDBError.
c939f8a4c3cd Added support for dynamic varobjs
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 120
diff changeset
   841
c939f8a4c3cd Added support for dynamic varobjs
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 120
diff changeset
   842
    c1_cdr_cdr := c1_cdr children second.
c939f8a4c3cd Added support for dynamic varobjs
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 120
diff changeset
   843
    self assert: c1_cdr_cdr expression = 'cdr'.
c939f8a4c3cd Added support for dynamic varobjs
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 120
diff changeset
   844
    self assert: c1_cdr_cdr isDynamic.
c939f8a4c3cd Added support for dynamic varobjs
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 120
diff changeset
   845
    self assert: c1_cdr_cdr parent == c1_cdr.
c939f8a4c3cd Added support for dynamic varobjs
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 120
diff changeset
   846
    self should: [ c1_cdr_cdr path ] raise: GDBError.      
c939f8a4c3cd Added support for dynamic varobjs
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 120
diff changeset
   847
c939f8a4c3cd Added support for dynamic varobjs
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 120
diff changeset
   848
    debugger send: 'quit' andWait: false.
c939f8a4c3cd Added support for dynamic varobjs
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 120
diff changeset
   849
c939f8a4c3cd Added support for dynamic varobjs
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 120
diff changeset
   850
    "Created: / 01-06-2018 / 16:27:29 / Jan Vrany <jan.vrany@fit.cvut.cz>"
c939f8a4c3cd Added support for dynamic varobjs
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 120
diff changeset
   851
    "Modified (comment): / 04-06-2018 / 11:02:19 / Jan Vrany <jan.vrany@fit.cvut.cz>"
56
20989de12cfb More work on variables + tests
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   852
! !
20989de12cfb More work on variables + tests
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   853
66
43c941cacd43 Added test for -exec-run & -exec-interrupt
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 63
diff changeset
   854
!GDBDebuggerTestsR class methodsFor:'documentation'!
43c941cacd43 Added test for -exec-run & -exec-interrupt
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 63
diff changeset
   855
43c941cacd43 Added test for -exec-run & -exec-interrupt
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 63
diff changeset
   856
version_HG
43c941cacd43 Added test for -exec-run & -exec-interrupt
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 63
diff changeset
   857
43c941cacd43 Added test for -exec-run & -exec-interrupt
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 63
diff changeset
   858
    ^ '$Changeset: <not expanded> $'
43c941cacd43 Added test for -exec-run & -exec-interrupt
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 63
diff changeset
   859
! !
43c941cacd43 Added test for -exec-run & -exec-interrupt
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 63
diff changeset
   860