tests/GDBDebuggerTestsR.st
author Jan Vrany <jan.vrany@labware.com>
Fri, 04 Aug 2023 22:56:43 +0100
changeset 292 d4b3ddeda08d
parent 272 cdd1c9ad00de
child 320 b52930e757e4
permissions -rw-r--r--
Compatibility: do not use `Delay waitForMilliseconds: x` ...and use `(Delay forMilliseconds: x) wait` as the latter is more portable.
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
219
Jan Vrany <jan.vrany@labware.com>
parents: 208 218
diff changeset
     4
Copyright (C) 2020-2021 LabWare
266
4cb568e406ce Skip known failing tests
Jan Vrany <jan.vrany@labware.com>
parents: 243
diff changeset
     5
Copyright (C) 2023 LabWare
91
472a4841a8b6 License this package under 'GNU Lesser General Public License'
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 87
diff changeset
     6
472a4841a8b6 License this package under 'GNU Lesser General Public License'
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 87
diff changeset
     7
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
     8
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
     9
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
    10
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
    11
472a4841a8b6 License this package under 'GNU Lesser General Public License'
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 87
diff changeset
    12
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
    13
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
    14
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
    15
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
    16
472a4841a8b6 License this package under 'GNU Lesser General Public License'
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 87
diff changeset
    17
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
    18
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
    19
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
    20
"
56
20989de12cfb More work on variables + tests
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    21
"{ Package: 'jv:libgdbs/tests' }"
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
"{ NameSpace: Smalltalk }"
20989de12cfb More work on variables + tests
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    24
20989de12cfb More work on variables + tests
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    25
GDBDebuggerTestCase subclass:#GDBDebuggerTestsR
20989de12cfb More work on variables + tests
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    26
	instanceVariableNames:''
20989de12cfb More work on variables + tests
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    27
	classVariableNames:''
20989de12cfb More work on variables + tests
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    28
	poolDictionaries:''
272
cdd1c9ad00de Change class categories to facilitate Pharo port
Jan Vrany <jan.vrany@labware.com>
parents: 266
diff changeset
    29
	category:'GDB-Tests'
56
20989de12cfb More work on variables + tests
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    30
!
20989de12cfb More work on variables + tests
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    31
20989de12cfb More work on variables + tests
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    32
!GDBDebuggerTestsR class methodsFor:'documentation'!
20989de12cfb More work on variables + tests
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    33
91
472a4841a8b6 License this package under 'GNU Lesser General Public License'
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 87
diff changeset
    34
copyright
472a4841a8b6 License this package under 'GNU Lesser General Public License'
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 87
diff changeset
    35
"
472a4841a8b6 License this package under 'GNU Lesser General Public License'
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 87
diff changeset
    36
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
    37
Copyright (C) 2015-now Jan Vrany
219
Jan Vrany <jan.vrany@labware.com>
parents: 208 218
diff changeset
    38
Copyright (C) 2020-2021 LabWare
266
4cb568e406ce Skip known failing tests
Jan Vrany <jan.vrany@labware.com>
parents: 243
diff changeset
    39
Copyright (C) 2023 LabWare
91
472a4841a8b6 License this package under 'GNU Lesser General Public License'
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 87
diff changeset
    40
472a4841a8b6 License this package under 'GNU Lesser General Public License'
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 87
diff changeset
    41
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
    42
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
    43
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
    44
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
    45
472a4841a8b6 License this package under 'GNU Lesser General Public License'
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 87
diff changeset
    46
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
    47
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
    48
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
    49
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
    50
472a4841a8b6 License this package under 'GNU Lesser General Public License'
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 87
diff changeset
    51
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
    52
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
    53
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
    54
"
472a4841a8b6 License this package under 'GNU Lesser General Public License'
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 87
diff changeset
    55
!
472a4841a8b6 License this package under 'GNU Lesser General Public License'
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 87
diff changeset
    56
56
20989de12cfb More work on variables + tests
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    57
documentation
20989de12cfb More work on variables + tests
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    58
"
152
fab425b52c21 Refactor `GDBProcess` hierarchy to improve portability
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 144
diff changeset
    59
    Tests for GDBDebugger API. 
fab425b52c21 Refactor `GDBProcess` hierarchy to improve portability
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 144
diff changeset
    60
fab425b52c21 Refactor `GDBProcess` hierarchy to improve portability
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 144
diff changeset
    61
    # Custom Debugger Setup
fab425b52c21 Refactor `GDBProcess` hierarchy to improve portability
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 144
diff changeset
    62
fab425b52c21 Refactor `GDBProcess` hierarchy to improve portability
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 144
diff changeset
    63
    By default, this tests spawns a default, locally run
fab425b52c21 Refactor `GDBProcess` hierarchy to improve portability
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 144
diff changeset
    64
    debugger for each test (see GDBDebugger >> new). To customize
fab425b52c21 Refactor `GDBProcess` hierarchy to improve portability
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 144
diff changeset
    65
    the debugger setup, set GDBDebuggerTestsR >> debuggerSetupBlock
fab425b52c21 Refactor `GDBProcess` hierarchy to improve portability
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 144
diff changeset
    66
    returning a GDBDebugger instance with all the necessary setup 
fab425b52c21 Refactor `GDBProcess` hierarchy to improve portability
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 144
diff changeset
    67
    done. For example, to use externally run GDB over TCP socket:
fab425b52c21 Refactor `GDBProcess` hierarchy to improve portability
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 144
diff changeset
    68
fab425b52c21 Refactor `GDBProcess` hierarchy to improve portability
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 144
diff changeset
    69
     * First, run 'GDB/MI server' (don't confuse with `gdbservver`!!)
fab425b52c21 Refactor `GDBProcess` hierarchy to improve portability
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 144
diff changeset
    70
       run (in terminal):
fab425b52c21 Refactor `GDBProcess` hierarchy to improve portability
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 144
diff changeset
    71
fab425b52c21 Refactor `GDBProcess` hierarchy to improve portability
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 144
diff changeset
    72
           socat TCP4-LISTEN:1234,FORK EXEC:'gdb -i mi2'
fab425b52c21 Refactor `GDBProcess` hierarchy to improve portability
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 144
diff changeset
    73
fab425b52c21 Refactor `GDBProcess` hierarchy to improve portability
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 144
diff changeset
    74
     *
fab425b52c21 Refactor `GDBProcess` hierarchy to improve portability
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 144
diff changeset
    75
fab425b52c21 Refactor `GDBProcess` hierarchy to improve portability
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 144
diff changeset
    76
fab425b52c21 Refactor `GDBProcess` hierarchy to improve portability
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 144
diff changeset
    77
fab425b52c21 Refactor `GDBProcess` hierarchy to improve portability
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 144
diff changeset
    78
fab425b52c21 Refactor `GDBProcess` hierarchy to improve portability
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 144
diff changeset
    79
fab425b52c21 Refactor `GDBProcess` hierarchy to improve portability
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 144
diff changeset
    80
    
fab425b52c21 Refactor `GDBProcess` hierarchy to improve portability
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 144
diff changeset
    81
fab425b52c21 Refactor `GDBProcess` hierarchy to improve portability
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 144
diff changeset
    82
fab425b52c21 Refactor `GDBProcess` hierarchy to improve portability
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 144
diff changeset
    83
56
20989de12cfb More work on variables + tests
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    84
20989de12cfb More work on variables + tests
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    85
    [author:]
20989de12cfb More work on variables + tests
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    86
        Jan Vrany <jan.vrany@fit.cvut.cz>
20989de12cfb More work on variables + tests
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    87
20989de12cfb More work on variables + tests
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    88
    [instance variables:]
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
    [class variables:]
20989de12cfb More work on variables + tests
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    91
20989de12cfb More work on variables + tests
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    92
    [see also:]
20989de12cfb More work on variables + tests
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    93
20989de12cfb More work on variables + tests
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    94
"
20989de12cfb More work on variables + tests
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    95
! !
20989de12cfb More work on variables + tests
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    96
20989de12cfb More work on variables + tests
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    97
!GDBDebuggerTestsR class methodsFor:'accessing'!
20989de12cfb More work on variables + tests
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    98
20989de12cfb More work on variables + tests
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    99
resources
20989de12cfb More work on variables + tests
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   100
    ^ Array with: GDBDebuggeesResource
20989de12cfb More work on variables + tests
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   101
20989de12cfb More work on variables + tests
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   102
    "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
   103
! !
20989de12cfb More work on variables + tests
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   104
20989de12cfb More work on variables + tests
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   105
!GDBDebuggerTestsR methodsFor:'tests - basic'!
20989de12cfb More work on variables + tests
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   106
20989de12cfb More work on variables + tests
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   107
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
   108
    | inferior1 thread1 frame1 frame2  seqNo1 seqNo2 |
56
20989de12cfb More work on variables + tests
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   109
87
50e80d25ea6f Added initial support for breakppints.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 86
diff changeset
   110
    debugger executable: GDBDebuggeesResource current binaryFactorial1.
56
20989de12cfb More work on variables + tests
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   111
    debugger send: 'b factorial'.
20989de12cfb More work on variables + tests
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   112
63
29a7a3b4532b Added conveniece API to ease debugger scripting (and testing)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 56
diff changeset
   113
    debugger send: 'r' andWaitFor: GDBStoppedEvent.
56
20989de12cfb More work on variables + tests
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   114
20989de12cfb More work on variables + tests
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   115
    self assert: debugger inferiors size == 1.
20989de12cfb More work on variables + tests
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   116
    inferior1 := debugger inferiors anElement.
95
f417138e9c48 Win32: initial support for Windows
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 91
diff changeset
   117
    "/ 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
   118
    "/ 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
   119
    "/ 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
   120
    "/ 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
   121
    "/ at least on thread.
f417138e9c48 Win32: initial support for Windows
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 91
diff changeset
   122
    OperatingSystem isMSWINDOWSlike ifTrue:[
f417138e9c48 Win32: initial support for Windows
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 91
diff changeset
   123
        self assert: inferior1 threads notEmpty.
f417138e9c48 Win32: initial support for Windows
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 91
diff changeset
   124
    ] ifFalse:[ 
f417138e9c48 Win32: initial support for Windows
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 91
diff changeset
   125
        self assert: inferior1 threads size == 1
f417138e9c48 Win32: initial support for Windows
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 91
diff changeset
   126
    ].
56
20989de12cfb More work on variables + tests
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   127
    thread1 := inferior1 threads anElement.
20989de12cfb More work on variables + tests
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   128
    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
   129
    self assert: thread1 status isStopped.
56
20989de12cfb More work on variables + tests
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   130
    frame1 := thread1 stack first.
20989de12cfb More work on variables + tests
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   131
    frame2 := thread1 stack second.
20989de12cfb More work on variables + tests
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   132
    self assert: frame1 variables size == 1.
20989de12cfb More work on variables + tests
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   133
    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
   134
    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
   135
56
20989de12cfb More work on variables + tests
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   136
20989de12cfb More work on variables + tests
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   137
    self assert: frame2 variables size == 4.
20989de12cfb More work on variables + tests
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   138
    self assert: frame2 variables first name = 'argc'.
20989de12cfb More work on variables + tests
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   139
    self assert: frame2 variables second name = 'argv'.
20989de12cfb More work on variables + tests
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   140
    self assert: frame2 variables third name = 'i'.
20989de12cfb More work on variables + tests
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   141
    self assert: frame2 variables fourth name = 'f'.
20989de12cfb More work on variables + tests
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   142
106
12c96f17fc53 Variable objects: invalidate variable object when thread on inferior terminates
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 104
diff changeset
   143
    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
   144
63
29a7a3b4532b Added conveniece API to ease debugger scripting (and testing)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 56
diff changeset
   145
    debugger send: 'd'.
29a7a3b4532b Added conveniece API to ease debugger scripting (and testing)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 56
diff changeset
   146
    debugger send: 'c' andWaitFor: GDBThreadGroupExitedEvent.
56
20989de12cfb More work on variables + tests
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   147
79
303c4edc75ad `GDBProcess` refatored to have console interpreter on STDIN/STDOUT
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 76
diff changeset
   148
    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
   149
    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
   150
    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
   151
303c4edc75ad `GDBProcess` refatored to have console interpreter on STDIN/STDOUT
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 76
diff changeset
   152
    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
   153
56
20989de12cfb More work on variables + tests
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   154
    "Created: / 28-02-2015 / 00:55:55 / 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
   155
    "Modified: / 19-01-2018 / 09:23:24 / jv"
152
fab425b52c21 Refactor `GDBProcess` hierarchy to improve portability
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 144
diff changeset
   156
    "Modified: / 18-10-2018 / 10:54:24 / Jan Vrany <jan.vrany@fit.cvut.cz>"
66
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
43c941cacd43 Added test for -exec-run & -exec-interrupt
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 63
diff changeset
   159
test_03
43c941cacd43 Added test for -exec-run & -exec-interrupt
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 63
diff changeset
   160
    | inferior1 thread1 |
43c941cacd43 Added test for -exec-run & -exec-interrupt
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 63
diff changeset
   161
95
f417138e9c48 Win32: initial support for Windows
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 91
diff changeset
   162
    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
   163
66
43c941cacd43 Added test for -exec-run & -exec-interrupt
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 63
diff changeset
   164
    debugger executable: GDBDebuggeesResource current binaryPressAnyKey.
43c941cacd43 Added test for -exec-run & -exec-interrupt
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 63
diff changeset
   165
43c941cacd43 Added test for -exec-run & -exec-interrupt
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 63
diff changeset
   166
    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
   167
43c941cacd43 Added test for -exec-run & -exec-interrupt
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 63
diff changeset
   168
    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
   169
    inferior1 := debugger inferiors anElement.
43c941cacd43 Added test for -exec-run & -exec-interrupt
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 63
diff changeset
   170
    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
   171
    thread1 := inferior1 threads anElement.
43c941cacd43 Added test for -exec-run & -exec-interrupt
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 63
diff changeset
   172
    self assert: thread1 isRunning.
43c941cacd43 Added test for -exec-run & -exec-interrupt
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 63
diff changeset
   173
72
eb4eea3ebf4c Increate sequence number also when thread or thread group is stopped
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 66
diff changeset
   174
    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
   175
43c941cacd43 Added test for -exec-run & -exec-interrupt
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 63
diff changeset
   176
    self assert: thread1 isRunning not.
43c941cacd43 Added test for -exec-run & -exec-interrupt
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 63
diff changeset
   177
43c941cacd43 Added test for -exec-run & -exec-interrupt
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 63
diff changeset
   178
    debugger inferiorStdin nextPutLine:'X'.  
43c941cacd43 Added test for -exec-run & -exec-interrupt
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 63
diff changeset
   179
43c941cacd43 Added test for -exec-run & -exec-interrupt
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 63
diff changeset
   180
    debugger send: 'c' andWaitFor: GDBThreadGroupExitedEvent.
43c941cacd43 Added test for -exec-run & -exec-interrupt
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 63
diff changeset
   181
79
303c4edc75ad `GDBProcess` refatored to have console interpreter on STDIN/STDOUT
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 76
diff changeset
   182
    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
   183
66
43c941cacd43 Added test for -exec-run & -exec-interrupt
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 63
diff changeset
   184
    "Created: / 08-03-2015 / 07:42:10 / 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
   185
    "Modified: / 12-01-2018 / 14:53:19 / jv"
152
fab425b52c21 Refactor `GDBProcess` hierarchy to improve portability
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 144
diff changeset
   186
    "Modified: / 18-10-2018 / 10:55:00 / Jan Vrany <jan.vrany@fit.cvut.cz>"
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
20989de12cfb More work on variables + tests
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   189
test_basic_01
228
04ce643219ce Start event loop process on demand
Jan Vrany <jan.vrany@labware.com>
parents: 223
diff changeset
   190
    | timeToExit eventPumpProcess |
56
20989de12cfb More work on variables + tests
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   191
95
f417138e9c48 Win32: initial support for Windows
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 91
diff changeset
   192
    timeToExit := 0.
f417138e9c48 Win32: initial support for Windows
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 91
diff changeset
   193
    eventPumpProcess := (debugger instVarNamed: #connection) instVarNamed: #eventPumpProcess.
56
20989de12cfb More work on variables + tests
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   194
    self assert: debugger isConnected.
95
f417138e9c48 Win32: initial support for Windows
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 91
diff changeset
   195
    self assert: eventPumpProcess isDead not.
f417138e9c48 Win32: initial support for Windows
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 91
diff changeset
   196
    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
   197
    [ debugger isConnected and:[timeToExit < 2000] ] whileTrue:[
f417138e9c48 Win32: initial support for Windows
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 91
diff changeset
   198
        Logger trace:'Still connected...'.
292
d4b3ddeda08d Compatibility: do not use `Delay waitForMilliseconds: x`
Jan Vrany <jan.vrany@labware.com>
parents: 272
diff changeset
   199
        (Delay forMilliseconds: 200) wait.  
95
f417138e9c48 Win32: initial support for Windows
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 91
diff changeset
   200
        timeToExit := timeToExit + 200.
f417138e9c48 Win32: initial support for Windows
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 91
diff changeset
   201
    ].
f417138e9c48 Win32: initial support for Windows
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 91
diff changeset
   202
    self assert: timeToExit < 2000.
56
20989de12cfb More work on variables + tests
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   203
    self assert: debugger isConnected not.
95
f417138e9c48 Win32: initial support for Windows
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 91
diff changeset
   204
    self assert: eventPumpProcess isDead.
56
20989de12cfb More work on variables + tests
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   205
20989de12cfb More work on variables + tests
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   206
    "Created: / 24-06-2014 / 09:06:32 / 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
   207
    "Modified: / 12-01-2018 / 15:29:08 / jv"
152
fab425b52c21 Refactor `GDBProcess` hierarchy to improve portability
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 144
diff changeset
   208
    "Modified: / 18-10-2018 / 10:55:06 / Jan Vrany <jan.vrany@fit.cvut.cz>"
228
04ce643219ce Start event loop process on demand
Jan Vrany <jan.vrany@labware.com>
parents: 223
diff changeset
   209
    "Modified: / 26-03-2021 / 15:04:21 / Jan Vrany <jan.vrany@labware.com>"
87
50e80d25ea6f Added initial support for breakppints.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 86
diff changeset
   210
!
50e80d25ea6f Added initial support for breakppints.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 86
diff changeset
   211
50e80d25ea6f Added initial support for breakppints.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 86
diff changeset
   212
test_breakpoints_01a
50e80d25ea6f Added initial support for breakppints.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 86
diff changeset
   213
    debugger executable: GDBDebuggeesResource current binaryFactorial1.
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: 'b factorial'.
50e80d25ea6f Added initial support for breakppints.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 86
diff changeset
   217
    self assert: debugger breakpoints size == 1.
50e80d25ea6f Added initial support for breakppints.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 86
diff changeset
   218
50e80d25ea6f Added initial support for breakppints.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 86
diff changeset
   219
    debugger send: 'r' andWaitFor: GDBStoppedEvent.
50e80d25ea6f Added initial support for breakppints.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 86
diff changeset
   220
    self assert: debugger breakpoints size == 1.
184
d70c70c3e495 API: add `GDBBreakpoint >> hasMultipleLocations`
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 169
diff changeset
   221
    self assert: debugger breakpoints first hasMultipleLocations not.
87
50e80d25ea6f Added initial support for breakppints.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 86
diff changeset
   222
    self assert: debugger breakpoints first func = 'factorial'.
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
50e80d25ea6f Added initial support for breakppints.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 86
diff changeset
   225
    debugger send: 'del'.
50e80d25ea6f Added initial support for breakppints.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 86
diff changeset
   226
    self assert: debugger breakpoints isEmpty.
50e80d25ea6f Added initial support for breakppints.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 86
diff changeset
   227
50e80d25ea6f Added initial support for breakppints.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 86
diff changeset
   228
    debugger send: 'c' andWaitFor: GDBThreadGroupExitedEvent.
50e80d25ea6f Added initial support for breakppints.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 86
diff changeset
   229
    self assert: debugger breakpoints isEmpty.
50e80d25ea6f Added initial support for breakppints.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 86
diff changeset
   230
50e80d25ea6f Added initial support for breakppints.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 86
diff changeset
   231
    debugger send: 'quit' andWait: false.
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
    "Created: / 07-07-2017 / 12:25:52 / Jan Vrany <jan.vrany@fit.cvut.cz>"
184
d70c70c3e495 API: add `GDBBreakpoint >> hasMultipleLocations`
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 169
diff changeset
   234
    "Modified: / 26-03-2019 / 11:09:40 / Jan Vrany <jan.vrany@fit.cvut.cz>"
87
50e80d25ea6f Added initial support for breakppints.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 86
diff changeset
   235
!
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
test_breakpoints_01b
50e80d25ea6f Added initial support for breakppints.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 86
diff changeset
   238
    debugger executable: GDBDebuggeesResource current binaryFactorial1.
50e80d25ea6f Added initial support for breakppints.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 86
diff changeset
   239
    self assert: debugger breakpoints isEmpty.
50e80d25ea6f Added initial support for breakppints.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 86
diff changeset
   240
50e80d25ea6f Added initial support for breakppints.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 86
diff changeset
   241
    debugger send: 'b factorial'.
50e80d25ea6f Added initial support for breakppints.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 86
diff changeset
   242
    self assert: debugger breakpoints size == 1.
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: 'r' andWaitFor: GDBStoppedEvent.
50e80d25ea6f Added initial support for breakppints.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 86
diff changeset
   245
    self assert: debugger breakpoints size == 1.
50e80d25ea6f Added initial support for breakppints.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 86
diff changeset
   246
    self assert: debugger breakpoints first func = 'factorial'.
50e80d25ea6f Added initial support for breakppints.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 86
diff changeset
   247
231
dcadeaddd0c8 Update (internal) list of breakpoints when creating / modifying / deleting using MI commands
Jan Vrany <jan.vrany@labware.com>
parents: 228
diff changeset
   248
    debugger send: 'dis ', debugger breakpoints anElement number printString.
dcadeaddd0c8 Update (internal) list of breakpoints when creating / modifying / deleting using MI commands
Jan Vrany <jan.vrany@labware.com>
parents: 228
diff changeset
   249
    self assert: debugger breakpoints size == 1.
dcadeaddd0c8 Update (internal) list of breakpoints when creating / modifying / deleting using MI commands
Jan Vrany <jan.vrany@labware.com>
parents: 228
diff changeset
   250
    self assert: debugger breakpoints anElement enabled == false.
87
50e80d25ea6f Added initial support for breakppints.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 86
diff changeset
   251
231
dcadeaddd0c8 Update (internal) list of breakpoints when creating / modifying / deleting using MI commands
Jan Vrany <jan.vrany@labware.com>
parents: 228
diff changeset
   252
    debugger send: (GDBMI_break_enable arguments: { debugger breakpoints anElement number printString }).
dcadeaddd0c8 Update (internal) list of breakpoints when creating / modifying / deleting using MI commands
Jan Vrany <jan.vrany@labware.com>
parents: 228
diff changeset
   253
    self assert: debugger breakpoints size == 1.
dcadeaddd0c8 Update (internal) list of breakpoints when creating / modifying / deleting using MI commands
Jan Vrany <jan.vrany@labware.com>
parents: 228
diff changeset
   254
    self assert: debugger breakpoints anElement enabled == true.
dcadeaddd0c8 Update (internal) list of breakpoints when creating / modifying / deleting using MI commands
Jan Vrany <jan.vrany@labware.com>
parents: 228
diff changeset
   255
dcadeaddd0c8 Update (internal) list of breakpoints when creating / modifying / deleting using MI commands
Jan Vrany <jan.vrany@labware.com>
parents: 228
diff changeset
   256
    debugger send: (GDBMI_break_disable arguments: { debugger breakpoints anElement number printString }).
87
50e80d25ea6f Added initial support for breakppints.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 86
diff changeset
   257
    self assert: debugger breakpoints size == 1.
50e80d25ea6f Added initial support for breakppints.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 86
diff changeset
   258
    self assert: debugger breakpoints anElement enabled == false.
50e80d25ea6f Added initial support for breakppints.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 86
diff changeset
   259
50e80d25ea6f Added initial support for breakppints.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 86
diff changeset
   260
    debugger send: 'c' andWaitFor: GDBThreadGroupExitedEvent.
50e80d25ea6f Added initial support for breakppints.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 86
diff changeset
   261
50e80d25ea6f Added initial support for breakppints.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 86
diff changeset
   262
    debugger send: 'quit' andWait: false.
50e80d25ea6f Added initial support for breakppints.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 86
diff changeset
   263
50e80d25ea6f Added initial support for breakppints.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 86
diff changeset
   264
    "Created: / 07-07-2017 / 12:27:12 / Jan Vrany <jan.vrany@fit.cvut.cz>"
152
fab425b52c21 Refactor `GDBProcess` hierarchy to improve portability
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 144
diff changeset
   265
    "Modified (format): / 18-10-2018 / 10:55:23 / Jan Vrany <jan.vrany@fit.cvut.cz>"
231
dcadeaddd0c8 Update (internal) list of breakpoints when creating / modifying / deleting using MI commands
Jan Vrany <jan.vrany@labware.com>
parents: 228
diff changeset
   266
    "Modified: / 22-05-2021 / 16:30:40 / Jan Vrany <jan.vrany@labware.com>"
87
50e80d25ea6f Added initial support for breakppints.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 86
diff changeset
   267
!
50e80d25ea6f Added initial support for breakppints.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 86
diff changeset
   268
50e80d25ea6f Added initial support for breakppints.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 86
diff changeset
   269
test_breakpoints_01c
50e80d25ea6f Added initial support for breakppints.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 86
diff changeset
   270
    debugger executable: GDBDebuggeesResource current binaryFactorial1.
50e80d25ea6f Added initial support for breakppints.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 86
diff changeset
   271
    self assert: debugger breakpoints isEmpty.
50e80d25ea6f Added initial support for breakppints.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 86
diff changeset
   272
50e80d25ea6f Added initial support for breakppints.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 86
diff changeset
   273
    debugger send: 'b factorial'.
50e80d25ea6f Added initial support for breakppints.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 86
diff changeset
   274
    self assert: debugger breakpoints size == 1.
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
    debugger send: 'r' andWaitFor: GDBStoppedEvent.
50e80d25ea6f Added initial support for breakppints.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 86
diff changeset
   277
    self assert: debugger breakpoints size == 1.
50e80d25ea6f Added initial support for breakppints.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 86
diff changeset
   278
    self assert: debugger breakpoints first func = 'factorial'.
50e80d25ea6f Added initial support for breakppints.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 86
diff changeset
   279
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 breakpoints anElement enabled: false.
50e80d25ea6f Added initial support for breakppints.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 86
diff changeset
   282
    self assert: debugger breakpoints size == 1.
50e80d25ea6f Added initial support for breakppints.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 86
diff changeset
   283
    self assert: debugger breakpoints anElement enabled == false.
50e80d25ea6f Added initial support for breakppints.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 86
diff changeset
   284
50e80d25ea6f Added initial support for breakppints.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 86
diff changeset
   285
    debugger send: 'c' andWaitFor: GDBThreadGroupExitedEvent.
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 send: 'quit' andWait: false.
50e80d25ea6f Added initial support for breakppints.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 86
diff changeset
   288
50e80d25ea6f Added initial support for breakppints.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 86
diff changeset
   289
    "Created: / 07-07-2017 / 12:34:48 / Jan Vrany <jan.vrany@fit.cvut.cz>"
152
fab425b52c21 Refactor `GDBProcess` hierarchy to improve portability
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 144
diff changeset
   290
    "Modified: / 18-10-2018 / 10:55:30 / Jan Vrany <jan.vrany@fit.cvut.cz>"
fab425b52c21 Refactor `GDBProcess` hierarchy to improve portability
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 144
diff changeset
   291
!
fab425b52c21 Refactor `GDBProcess` hierarchy to improve portability
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 144
diff changeset
   292
fab425b52c21 Refactor `GDBProcess` hierarchy to improve portability
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 144
diff changeset
   293
test_breakpoints_02
fab425b52c21 Refactor `GDBProcess` hierarchy to improve portability
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 144
diff changeset
   294
    debugger executable: GDBDebuggeesResource current binaryFactorial1.
fab425b52c21 Refactor `GDBProcess` hierarchy to improve portability
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 144
diff changeset
   295
    self assert: debugger breakpoints isEmpty.
fab425b52c21 Refactor `GDBProcess` hierarchy to improve portability
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 144
diff changeset
   296
fab425b52c21 Refactor `GDBProcess` hierarchy to improve portability
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 144
diff changeset
   297
    debugger send: 'b main'.
fab425b52c21 Refactor `GDBProcess` hierarchy to improve portability
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 144
diff changeset
   298
    self assert: debugger breakpoints size == 1.
fab425b52c21 Refactor `GDBProcess` hierarchy to improve portability
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 144
diff changeset
   299
fab425b52c21 Refactor `GDBProcess` hierarchy to improve portability
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 144
diff changeset
   300
    debugger send: 'r' andWaitFor: GDBStoppedEvent.
fab425b52c21 Refactor `GDBProcess` hierarchy to improve portability
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 144
diff changeset
   301
    self assert: debugger breakpoints size == 1.
fab425b52c21 Refactor `GDBProcess` hierarchy to improve portability
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 144
diff changeset
   302
fab425b52c21 Refactor `GDBProcess` hierarchy to improve portability
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 144
diff changeset
   303
    debugger send: 'del'.
fab425b52c21 Refactor `GDBProcess` hierarchy to improve portability
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 144
diff changeset
   304
    self assert: debugger breakpoints isEmpty.
fab425b52c21 Refactor `GDBProcess` hierarchy to improve portability
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 144
diff changeset
   305
fab425b52c21 Refactor `GDBProcess` hierarchy to improve portability
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 144
diff changeset
   306
    debugger send: 'c' andWaitFor: GDBThreadGroupExitedEvent.
fab425b52c21 Refactor `GDBProcess` hierarchy to improve portability
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 144
diff changeset
   307
    self assert: debugger breakpoints isEmpty.
fab425b52c21 Refactor `GDBProcess` hierarchy to improve portability
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 144
diff changeset
   308
fab425b52c21 Refactor `GDBProcess` hierarchy to improve portability
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 144
diff changeset
   309
    debugger send: 'quit' andWait: false.
fab425b52c21 Refactor `GDBProcess` hierarchy to improve portability
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 144
diff changeset
   310
fab425b52c21 Refactor `GDBProcess` hierarchy to improve portability
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 144
diff changeset
   311
    "Created: / 07-07-2017 / 11:53:53 / Jan Vrany <jan.vrany@fit.cvut.cz>"
fab425b52c21 Refactor `GDBProcess` hierarchy to improve portability
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 144
diff changeset
   312
    "Modified: / 12-01-2018 / 22:04:46 / jv"
fab425b52c21 Refactor `GDBProcess` hierarchy to improve portability
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 144
diff changeset
   313
    "Modified: / 18-10-2018 / 10:55:36 / Jan Vrany <jan.vrany@fit.cvut.cz>"
87
50e80d25ea6f Added initial support for breakppints.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 86
diff changeset
   314
!
50e80d25ea6f Added initial support for breakppints.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 86
diff changeset
   315
95
f417138e9c48 Win32: initial support for Windows
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 91
diff changeset
   316
test_breakpoints_03a
87
50e80d25ea6f Added initial support for breakppints.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 86
diff changeset
   317
95
f417138e9c48 Win32: initial support for Windows
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 91
diff changeset
   318
    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
   319
50e80d25ea6f Added initial support for breakppints.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 86
diff changeset
   320
    debugger executable: GDBDebuggeesResource current binaryFactorial1.
50e80d25ea6f Added initial support for breakppints.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 86
diff changeset
   321
    self assert: debugger breakpoints isEmpty.
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 consoleInput nextPutLine: 'b factorial'.
50e80d25ea6f Added initial support for breakppints.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 86
diff changeset
   324
    Delay waitForSeconds: 1.  
50e80d25ea6f Added initial support for breakppints.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 86
diff changeset
   325
    self assert: debugger breakpoints size == 1.
50e80d25ea6f Added initial support for breakppints.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 86
diff changeset
   326
50e80d25ea6f Added initial support for breakppints.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 86
diff changeset
   327
    debugger send: 'r' andWaitFor: GDBStoppedEvent.
50e80d25ea6f Added initial support for breakppints.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 86
diff changeset
   328
    self assert: debugger breakpoints size == 1.
50e80d25ea6f Added initial support for breakppints.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 86
diff changeset
   329
    self assert: debugger breakpoints first func = 'factorial'.
50e80d25ea6f Added initial support for breakppints.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 86
diff changeset
   330
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 consoleInput nextPutLine: 'del 1'.
50e80d25ea6f Added initial support for breakppints.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 86
diff changeset
   333
    Delay waitForSeconds: 1.  
50e80d25ea6f Added initial support for breakppints.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 86
diff changeset
   334
    self assert: debugger breakpoints isEmpty.
50e80d25ea6f Added initial support for breakppints.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 86
diff changeset
   335
50e80d25ea6f Added initial support for breakppints.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 86
diff changeset
   336
    debugger send: 'c' andWaitFor: GDBThreadGroupExitedEvent.
50e80d25ea6f Added initial support for breakppints.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 86
diff changeset
   337
    self assert: debugger breakpoints isEmpty.
50e80d25ea6f Added initial support for breakppints.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 86
diff changeset
   338
50e80d25ea6f Added initial support for breakppints.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 86
diff changeset
   339
    debugger send: 'quit' andWait: false.
50e80d25ea6f Added initial support for breakppints.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 86
diff changeset
   340
50e80d25ea6f Added initial support for breakppints.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 86
diff changeset
   341
    "Created: / 10-07-2017 / 22:05:07 / 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
   342
    "Modified: / 12-01-2018 / 14:57:37 / jv"
152
fab425b52c21 Refactor `GDBProcess` hierarchy to improve portability
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 144
diff changeset
   343
    "Modified: / 18-10-2018 / 10:55:43 / Jan Vrany <jan.vrany@fit.cvut.cz>"
87
50e80d25ea6f Added initial support for breakppints.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 86
diff changeset
   344
!
50e80d25ea6f Added initial support for breakppints.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 86
diff changeset
   345
50e80d25ea6f Added initial support for breakppints.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 86
diff changeset
   346
test_breakpoints_04a
50e80d25ea6f Added initial support for breakppints.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 86
diff changeset
   347
    debugger executable: GDBDebuggeesResource current binaryFactorial1.
50e80d25ea6f Added initial support for breakppints.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 86
diff changeset
   348
    self assert: debugger breakpoints isEmpty.
50e80d25ea6f Added initial support for breakppints.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 86
diff changeset
   349
50e80d25ea6f Added initial support for breakppints.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 86
diff changeset
   350
    debugger send: 'b factorial'.
50e80d25ea6f Added initial support for breakppints.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 86
diff changeset
   351
    self assert: debugger breakpoints size == 1.
50e80d25ea6f Added initial support for breakppints.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 86
diff changeset
   352
50e80d25ea6f Added initial support for breakppints.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 86
diff changeset
   353
    debugger breakpoints first script: 'printf "factorial\n"
50e80d25ea6f Added initial support for breakppints.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 86
diff changeset
   354
disable ', debugger breakpoints first number asString.
50e80d25ea6f Added initial support for breakppints.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 86
diff changeset
   355
50e80d25ea6f Added initial support for breakppints.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 86
diff changeset
   356
    debugger send: 'r' andWaitFor: GDBStoppedEvent.
50e80d25ea6f Added initial support for breakppints.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 86
diff changeset
   357
    self assert: debugger breakpoints size == 1.
50e80d25ea6f Added initial support for breakppints.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 86
diff changeset
   358
    "/ 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
   359
    "/ event is received.
292
d4b3ddeda08d Compatibility: do not use `Delay waitForMilliseconds: x`
Jan Vrany <jan.vrany@labware.com>
parents: 272
diff changeset
   360
    (Delay forMilliseconds: 200) wait.  
87
50e80d25ea6f Added initial support for breakppints.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 86
diff changeset
   361
    self assert: debugger breakpoints first enabled == false.
50e80d25ea6f Added initial support for breakppints.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 86
diff changeset
   362
50e80d25ea6f Added initial support for breakppints.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 86
diff changeset
   363
    debugger send: 'c' andWaitFor: GDBThreadGroupExitedEvent.
50e80d25ea6f Added initial support for breakppints.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 86
diff changeset
   364
50e80d25ea6f Added initial support for breakppints.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 86
diff changeset
   365
    debugger send: 'quit' andWait: false.
50e80d25ea6f Added initial support for breakppints.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 86
diff changeset
   366
50e80d25ea6f Added initial support for breakppints.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 86
diff changeset
   367
    "Created: / 11-07-2017 / 20:35:20 / Jan Vrany <jan.vrany@fit.cvut.cz>"
152
fab425b52c21 Refactor `GDBProcess` hierarchy to improve portability
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 144
diff changeset
   368
    "Modified: / 18-10-2018 / 10:55:51 / 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
   369
!
d8fee2af20b2 Variable objects: added support for composite types
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 95
diff changeset
   370
120
73877848ea7f Added support for breakpoints with multiple locations
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 119
diff changeset
   371
test_breakpoints_05a
73877848ea7f Added support for breakpoints with multiple locations
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 119
diff changeset
   372
    "
73877848ea7f Added support for breakpoints with multiple locations
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 119
diff changeset
   373
    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
   374
    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
   375
73877848ea7f Added support for breakpoints with multiple locations
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 119
diff changeset
   376
    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
   377
73877848ea7f Added support for breakpoints with multiple locations
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 119
diff changeset
   378
        * 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
   379
        * 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
   380
73877848ea7f Added support for breakpoints with multiple locations
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 119
diff changeset
   381
    Meanwhile, this test is skipped.
73877848ea7f Added support for breakpoints with multiple locations
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 119
diff changeset
   382
    "    
73877848ea7f Added support for breakpoints with multiple locations
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 119
diff changeset
   383
73877848ea7f Added support for breakpoints with multiple locations
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 119
diff changeset
   384
    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
   385
73877848ea7f Added support for breakpoints with multiple locations
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 119
diff changeset
   386
    debugger executable: GDBDebuggeesResource current binaryBreakpoints1.
73877848ea7f Added support for breakpoints with multiple locations
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 119
diff changeset
   387
    self assert: debugger breakpoints isEmpty.
73877848ea7f Added support for breakpoints with multiple locations
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 119
diff changeset
   388
73877848ea7f Added support for breakpoints with multiple locations
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 119
diff changeset
   389
    debugger send: 'b add'.
73877848ea7f Added support for breakpoints with multiple locations
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 119
diff changeset
   390
    self assert: debugger breakpoints size == 1.
184
d70c70c3e495 API: add `GDBBreakpoint >> hasMultipleLocations`
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 169
diff changeset
   391
    self assert: debugger breakpoints first hasMultipleLocations.
120
73877848ea7f Added support for breakpoints with multiple locations
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 119
diff changeset
   392
    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
   393
    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
   394
    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
   395
73877848ea7f Added support for breakpoints with multiple locations
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 119
diff changeset
   396
    debugger send: 'dis 1'.
73877848ea7f Added support for breakpoints with multiple locations
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 119
diff changeset
   397
    debugger send: 'dis 1.1'.
73877848ea7f Added support for breakpoints with multiple locations
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 119
diff changeset
   398
    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
   399
    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
   400
73877848ea7f Added support for breakpoints with multiple locations
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 119
diff changeset
   401
    debugger send: 'en 1'.
73877848ea7f Added support for breakpoints with multiple locations
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 119
diff changeset
   402
    debugger send: 'en 1.1'.
73877848ea7f Added support for breakpoints with multiple locations
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 119
diff changeset
   403
    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
   404
    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
   405
73877848ea7f Added support for breakpoints with multiple locations
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 119
diff changeset
   406
    debugger breakpoints first enabled: false.
73877848ea7f Added support for breakpoints with multiple locations
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 119
diff changeset
   407
    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
   408
    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
   409
    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
   410
73877848ea7f Added support for breakpoints with multiple locations
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 119
diff changeset
   411
    debugger breakpoints first enabled: true.
73877848ea7f Added support for breakpoints with multiple locations
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 119
diff changeset
   412
    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
   413
    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
   414
    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
   415
73877848ea7f Added support for breakpoints with multiple locations
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 119
diff changeset
   416
    debugger send: 'del 1'.
73877848ea7f Added support for breakpoints with multiple locations
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 119
diff changeset
   417
    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
   418
73877848ea7f Added support for breakpoints with multiple locations
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 119
diff changeset
   419
    debugger send: 'quit' andWait: false.
73877848ea7f Added support for breakpoints with multiple locations
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 119
diff changeset
   420
73877848ea7f Added support for breakpoints with multiple locations
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 119
diff changeset
   421
    "Created: / 18-05-2018 / 10:52:10 / Jan Vrany <jan.vrany@fit.cvut.cz>"
184
d70c70c3e495 API: add `GDBBreakpoint >> hasMultipleLocations`
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 169
diff changeset
   422
    "Modified: / 26-03-2019 / 11:09:21 / Jan Vrany <jan.vrany@fit.cvut.cz>"
120
73877848ea7f Added support for breakpoints with multiple locations
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 119
diff changeset
   423
!
73877848ea7f Added support for breakpoints with multiple locations
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 119
diff changeset
   424
231
dcadeaddd0c8 Update (internal) list of breakpoints when creating / modifying / deleting using MI commands
Jan Vrany <jan.vrany@labware.com>
parents: 228
diff changeset
   425
test_breakpoints_06a
dcadeaddd0c8 Update (internal) list of breakpoints when creating / modifying / deleting using MI commands
Jan Vrany <jan.vrany@labware.com>
parents: 228
diff changeset
   426
    debugger executable: GDBDebuggeesResource current binaryFactorial1.
dcadeaddd0c8 Update (internal) list of breakpoints when creating / modifying / deleting using MI commands
Jan Vrany <jan.vrany@labware.com>
parents: 228
diff changeset
   427
    self assert: debugger breakpoints isEmpty.
dcadeaddd0c8 Update (internal) list of breakpoints when creating / modifying / deleting using MI commands
Jan Vrany <jan.vrany@labware.com>
parents: 228
diff changeset
   428
dcadeaddd0c8 Update (internal) list of breakpoints when creating / modifying / deleting using MI commands
Jan Vrany <jan.vrany@labware.com>
parents: 228
diff changeset
   429
    debugger send: (GDBMI_break_insert arguments:{'factorial'}).
dcadeaddd0c8 Update (internal) list of breakpoints when creating / modifying / deleting using MI commands
Jan Vrany <jan.vrany@labware.com>
parents: 228
diff changeset
   430
    self assert: debugger breakpoints size == 1.
dcadeaddd0c8 Update (internal) list of breakpoints when creating / modifying / deleting using MI commands
Jan Vrany <jan.vrany@labware.com>
parents: 228
diff changeset
   431
dcadeaddd0c8 Update (internal) list of breakpoints when creating / modifying / deleting using MI commands
Jan Vrany <jan.vrany@labware.com>
parents: 228
diff changeset
   432
    debugger send: 'r' andWaitFor: GDBStoppedEvent.
dcadeaddd0c8 Update (internal) list of breakpoints when creating / modifying / deleting using MI commands
Jan Vrany <jan.vrany@labware.com>
parents: 228
diff changeset
   433
    self assert: debugger breakpoints size == 1.
dcadeaddd0c8 Update (internal) list of breakpoints when creating / modifying / deleting using MI commands
Jan Vrany <jan.vrany@labware.com>
parents: 228
diff changeset
   434
    self assert: debugger breakpoints first hasMultipleLocations not.
dcadeaddd0c8 Update (internal) list of breakpoints when creating / modifying / deleting using MI commands
Jan Vrany <jan.vrany@labware.com>
parents: 228
diff changeset
   435
    self assert: debugger breakpoints first func = 'factorial'.
dcadeaddd0c8 Update (internal) list of breakpoints when creating / modifying / deleting using MI commands
Jan Vrany <jan.vrany@labware.com>
parents: 228
diff changeset
   436
dcadeaddd0c8 Update (internal) list of breakpoints when creating / modifying / deleting using MI commands
Jan Vrany <jan.vrany@labware.com>
parents: 228
diff changeset
   437
dcadeaddd0c8 Update (internal) list of breakpoints when creating / modifying / deleting using MI commands
Jan Vrany <jan.vrany@labware.com>
parents: 228
diff changeset
   438
    debugger send: (GDBMI_break_delete arguments:{'1'}).
dcadeaddd0c8 Update (internal) list of breakpoints when creating / modifying / deleting using MI commands
Jan Vrany <jan.vrany@labware.com>
parents: 228
diff changeset
   439
    self assert: debugger breakpoints isEmpty.
dcadeaddd0c8 Update (internal) list of breakpoints when creating / modifying / deleting using MI commands
Jan Vrany <jan.vrany@labware.com>
parents: 228
diff changeset
   440
dcadeaddd0c8 Update (internal) list of breakpoints when creating / modifying / deleting using MI commands
Jan Vrany <jan.vrany@labware.com>
parents: 228
diff changeset
   441
    debugger send: 'c' andWaitFor: GDBThreadGroupExitedEvent.
dcadeaddd0c8 Update (internal) list of breakpoints when creating / modifying / deleting using MI commands
Jan Vrany <jan.vrany@labware.com>
parents: 228
diff changeset
   442
    self assert: debugger breakpoints isEmpty.
dcadeaddd0c8 Update (internal) list of breakpoints when creating / modifying / deleting using MI commands
Jan Vrany <jan.vrany@labware.com>
parents: 228
diff changeset
   443
dcadeaddd0c8 Update (internal) list of breakpoints when creating / modifying / deleting using MI commands
Jan Vrany <jan.vrany@labware.com>
parents: 228
diff changeset
   444
    debugger send: 'quit' andWait: false.
dcadeaddd0c8 Update (internal) list of breakpoints when creating / modifying / deleting using MI commands
Jan Vrany <jan.vrany@labware.com>
parents: 228
diff changeset
   445
dcadeaddd0c8 Update (internal) list of breakpoints when creating / modifying / deleting using MI commands
Jan Vrany <jan.vrany@labware.com>
parents: 228
diff changeset
   446
    "Created: / 21-05-2021 / 22:07:08 / Jan Vrany <jan.vrany@labware.com>"
dcadeaddd0c8 Update (internal) list of breakpoints when creating / modifying / deleting using MI commands
Jan Vrany <jan.vrany@labware.com>
parents: 228
diff changeset
   447
!
dcadeaddd0c8 Update (internal) list of breakpoints when creating / modifying / deleting using MI commands
Jan Vrany <jan.vrany@labware.com>
parents: 228
diff changeset
   448
dcadeaddd0c8 Update (internal) list of breakpoints when creating / modifying / deleting using MI commands
Jan Vrany <jan.vrany@labware.com>
parents: 228
diff changeset
   449
test_breakpoints_06b
dcadeaddd0c8 Update (internal) list of breakpoints when creating / modifying / deleting using MI commands
Jan Vrany <jan.vrany@labware.com>
parents: 228
diff changeset
   450
    debugger executable: GDBDebuggeesResource current binaryBreakpoints1.
dcadeaddd0c8 Update (internal) list of breakpoints when creating / modifying / deleting using MI commands
Jan Vrany <jan.vrany@labware.com>
parents: 228
diff changeset
   451
    self assert: debugger breakpoints isEmpty.
dcadeaddd0c8 Update (internal) list of breakpoints when creating / modifying / deleting using MI commands
Jan Vrany <jan.vrany@labware.com>
parents: 228
diff changeset
   452
dcadeaddd0c8 Update (internal) list of breakpoints when creating / modifying / deleting using MI commands
Jan Vrany <jan.vrany@labware.com>
parents: 228
diff changeset
   453
    debugger send: (GDBMI_break_insert arguments:{'add'}).
dcadeaddd0c8 Update (internal) list of breakpoints when creating / modifying / deleting using MI commands
Jan Vrany <jan.vrany@labware.com>
parents: 228
diff changeset
   454
    self assert: debugger breakpoints size == 1.
dcadeaddd0c8 Update (internal) list of breakpoints when creating / modifying / deleting using MI commands
Jan Vrany <jan.vrany@labware.com>
parents: 228
diff changeset
   455
    self assert: debugger breakpoints first hasMultipleLocations.
dcadeaddd0c8 Update (internal) list of breakpoints when creating / modifying / deleting using MI commands
Jan Vrany <jan.vrany@labware.com>
parents: 228
diff changeset
   456
    self assert: debugger breakpoints first locations size > 1.
dcadeaddd0c8 Update (internal) list of breakpoints when creating / modifying / deleting using MI commands
Jan Vrany <jan.vrany@labware.com>
parents: 228
diff changeset
   457
    self assert: debugger breakpoints first enabled.
dcadeaddd0c8 Update (internal) list of breakpoints when creating / modifying / deleting using MI commands
Jan Vrany <jan.vrany@labware.com>
parents: 228
diff changeset
   458
    self assert: debugger breakpoints first locations first enabled.                      
dcadeaddd0c8 Update (internal) list of breakpoints when creating / modifying / deleting using MI commands
Jan Vrany <jan.vrany@labware.com>
parents: 228
diff changeset
   459
dcadeaddd0c8 Update (internal) list of breakpoints when creating / modifying / deleting using MI commands
Jan Vrany <jan.vrany@labware.com>
parents: 228
diff changeset
   460
    debugger send: (GDBMI_break_delete arguments:{'1'}).
dcadeaddd0c8 Update (internal) list of breakpoints when creating / modifying / deleting using MI commands
Jan Vrany <jan.vrany@labware.com>
parents: 228
diff changeset
   461
    self assert: debugger breakpoints isEmpty.
dcadeaddd0c8 Update (internal) list of breakpoints when creating / modifying / deleting using MI commands
Jan Vrany <jan.vrany@labware.com>
parents: 228
diff changeset
   462
dcadeaddd0c8 Update (internal) list of breakpoints when creating / modifying / deleting using MI commands
Jan Vrany <jan.vrany@labware.com>
parents: 228
diff changeset
   463
    debugger send: 'quit' andWait: false.
dcadeaddd0c8 Update (internal) list of breakpoints when creating / modifying / deleting using MI commands
Jan Vrany <jan.vrany@labware.com>
parents: 228
diff changeset
   464
dcadeaddd0c8 Update (internal) list of breakpoints when creating / modifying / deleting using MI commands
Jan Vrany <jan.vrany@labware.com>
parents: 228
diff changeset
   465
    "Created: / 22-05-2021 / 15:55:24 / Jan Vrany <jan.vrany@labware.com>"
dcadeaddd0c8 Update (internal) list of breakpoints when creating / modifying / deleting using MI commands
Jan Vrany <jan.vrany@labware.com>
parents: 228
diff changeset
   466
!
dcadeaddd0c8 Update (internal) list of breakpoints when creating / modifying / deleting using MI commands
Jan Vrany <jan.vrany@labware.com>
parents: 228
diff changeset
   467
165
780e1f6168c5 Add new API `GDBDebugger >> #hasCommand:` to test support for particular MI command
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 163
diff changeset
   468
test_commands
780e1f6168c5 Add new API `GDBDebugger >> #hasCommand:` to test support for particular MI command
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 163
diff changeset
   469
780e1f6168c5 Add new API `GDBDebugger >> #hasCommand:` to test support for particular MI command
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 163
diff changeset
   470
    self assert: (debugger hasCommand: GDBMI_info_gdb_mi_command ).
780e1f6168c5 Add new API `GDBDebugger >> #hasCommand:` to test support for particular MI command
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 163
diff changeset
   471
    self assert: (debugger hasCommand: GDBMI_info_gdb_mi_command new operation).
780e1f6168c5 Add new API `GDBDebugger >> #hasCommand:` to test support for particular MI command
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 163
diff changeset
   472
    self deny: (debugger hasCommand: '-bogus').
780e1f6168c5 Add new API `GDBDebugger >> #hasCommand:` to test support for particular MI command
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 163
diff changeset
   473
780e1f6168c5 Add new API `GDBDebugger >> #hasCommand:` to test support for particular MI command
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 163
diff changeset
   474
    "Created: / 29-12-2018 / 23:13:08 / Jan Vrany <jan.vrany@fit.cvut.cz>"
120
73877848ea7f Added support for breakpoints with multiple locations
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 119
diff changeset
   475
!
73877848ea7f Added support for breakpoints with multiple locations
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 119
diff changeset
   476
114
be5bdaecb9b3 API: added methods for querying source directories
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 111
diff changeset
   477
test_directories
119
258bf0b2317c Fixed `GDBDebugger >> directories` to work on Windows
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 114
diff changeset
   478
    | directories current |
114
be5bdaecb9b3 API: added methods for querying source directories
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 111
diff changeset
   479
be5bdaecb9b3 API: added methods for querying source directories
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 111
diff changeset
   480
    directories := debugger directories.
be5bdaecb9b3 API: added methods for querying source directories
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 111
diff changeset
   481
    self assert: directories isArray.
be5bdaecb9b3 API: added methods for querying source directories
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 111
diff changeset
   482
    self assert: directories notEmpty.
be5bdaecb9b3 API: added methods for querying source directories
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 111
diff changeset
   483
119
258bf0b2317c Fixed `GDBDebugger >> directories` to work on Windows
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 114
diff changeset
   484
    "/ 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
   485
    "/ on Windows.
258bf0b2317c Fixed `GDBDebugger >> directories` to work on Windows
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 114
diff changeset
   486
    OperatingSystem isMSWINDOWSlike ifTrue:[ 
258bf0b2317c Fixed `GDBDebugger >> directories` to work on Windows
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 114
diff changeset
   487
        current := Filename currentDirectory cygName
258bf0b2317c Fixed `GDBDebugger >> directories` to work on Windows
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 114
diff changeset
   488
    ] ifFalse:[ 
258bf0b2317c Fixed `GDBDebugger >> directories` to work on Windows
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 114
diff changeset
   489
        current := Filename currentDirectory pathName
258bf0b2317c Fixed `GDBDebugger >> directories` to work on Windows
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 114
diff changeset
   490
    ].
258bf0b2317c Fixed `GDBDebugger >> directories` to work on Windows
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 114
diff changeset
   491
192
4f453d7413d4 Fix quoting bug in `#test_directories`
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 184
diff changeset
   492
    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
   493
    directories := debugger directories.
be5bdaecb9b3 API: added methods for querying source directories
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 111
diff changeset
   494
    self assert: directories isArray.
be5bdaecb9b3 API: added methods for querying source directories
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 111
diff changeset
   495
    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
   496
be5bdaecb9b3 API: added methods for querying source directories
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 111
diff changeset
   497
    "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
   498
    "Modified: / 03-04-2018 / 21:08:26 / jv"
192
4f453d7413d4 Fix quoting bug in `#test_directories`
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 184
diff changeset
   499
    "Modified: / 13-06-2019 / 07:45:22 / Jan Vrany <jan.vrany@fit.cvut.cz>"
114
be5bdaecb9b3 API: added methods for querying source directories
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 111
diff changeset
   500
!
be5bdaecb9b3 API: added methods for querying source directories
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 111
diff changeset
   501
126
fb73b0af430b Added initial support for disassembling
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 123
diff changeset
   502
test_disassembly_01
fb73b0af430b Added initial support for disassembling
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 123
diff changeset
   503
    | asm |
fb73b0af430b Added initial support for disassembling
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 123
diff changeset
   504
fb73b0af430b Added initial support for disassembling
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 123
diff changeset
   505
    debugger executable: GDBDebuggeesResource current binaryFactorial1.
fb73b0af430b Added initial support for disassembling
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 123
diff changeset
   506
    debugger send: 'r' andWaitFor: GDBThreadGroupExitedEvent.
fb73b0af430b Added initial support for disassembling
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 123
diff changeset
   507
fb73b0af430b Added initial support for disassembling
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 123
diff changeset
   508
    asm := debugger disassembleFile: 'factorial1.c' line: 3 count: nil.
fb73b0af430b Added initial support for disassembling
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 123
diff changeset
   509
fb73b0af430b Added initial support for disassembling
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 123
diff changeset
   510
    self assert: asm isSequenceable.
fb73b0af430b Added initial support for disassembling
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 123
diff changeset
   511
    self assert:(asm first isKindOf: GDBInstructionsAndSourceLine).
fb73b0af430b Added initial support for disassembling
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 123
diff changeset
   512
fb73b0af430b Added initial support for disassembling
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 123
diff changeset
   513
    debugger send: 'quit' andWait: false.
fb73b0af430b Added initial support for disassembling
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 123
diff changeset
   514
fb73b0af430b Added initial support for disassembling
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 123
diff changeset
   515
    "Created: / 22-06-2018 / 11:52:03 / Jan Vrany <jan.vrany@fit.cvut.cz>"
152
fab425b52c21 Refactor `GDBProcess` hierarchy to improve portability
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 144
diff changeset
   516
    "Modified: / 18-10-2018 / 10:56:20 / Jan Vrany <jan.vrany@fit.cvut.cz>"
126
fb73b0af430b Added initial support for disassembling
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 123
diff changeset
   517
!
fb73b0af430b Added initial support for disassembling
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 123
diff changeset
   518
266
4cb568e406ce Skip known failing tests
Jan Vrany <jan.vrany@labware.com>
parents: 243
diff changeset
   519
test_eventhandling_01a
4cb568e406ce Skip known failing tests
Jan Vrany <jan.vrany@labware.com>
parents: 243
diff changeset
   520
    | backtraces |
4cb568e406ce Skip known failing tests
Jan Vrany <jan.vrany@labware.com>
parents: 243
diff changeset
   521
4cb568e406ce Skip known failing tests
Jan Vrany <jan.vrany@labware.com>
parents: 243
diff changeset
   522
    self skip: 'Known issue'.
4cb568e406ce Skip known failing tests
Jan Vrany <jan.vrany@labware.com>
parents: 243
diff changeset
   523
4cb568e406ce Skip known failing tests
Jan Vrany <jan.vrany@labware.com>
parents: 243
diff changeset
   524
    backtraces := OrderedCollection new.    
4cb568e406ce Skip known failing tests
Jan Vrany <jan.vrany@labware.com>
parents: 243
diff changeset
   525
    debugger executable: GDBDebuggeesResource current binaryFactorial1.
4cb568e406ce Skip known failing tests
Jan Vrany <jan.vrany@labware.com>
parents: 243
diff changeset
   526
    debugger send: 'b factorial'.
4cb568e406ce Skip known failing tests
Jan Vrany <jan.vrany@labware.com>
parents: 243
diff changeset
   527
4cb568e406ce Skip known failing tests
Jan Vrany <jan.vrany@labware.com>
parents: 243
diff changeset
   528
    debugger announcer on: GDBStoppedEvent do:[:evt | 
4cb568e406ce Skip known failing tests
Jan Vrany <jan.vrany@labware.com>
parents: 243
diff changeset
   529
        backtraces add: (debugger send: GDBMI_stack_list_frames new) 
4cb568e406ce Skip known failing tests
Jan Vrany <jan.vrany@labware.com>
parents: 243
diff changeset
   530
    ].
4cb568e406ce Skip known failing tests
Jan Vrany <jan.vrany@labware.com>
parents: 243
diff changeset
   531
4cb568e406ce Skip known failing tests
Jan Vrany <jan.vrany@labware.com>
parents: 243
diff changeset
   532
    debugger send: 'r' andWaitFor: GDBStoppedEvent"withTimeoutMs: 20000".
4cb568e406ce Skip known failing tests
Jan Vrany <jan.vrany@labware.com>
parents: 243
diff changeset
   533
    self assert: backtraces size equals: 1.
4cb568e406ce Skip known failing tests
Jan Vrany <jan.vrany@labware.com>
parents: 243
diff changeset
   534
4cb568e406ce Skip known failing tests
Jan Vrany <jan.vrany@labware.com>
parents: 243
diff changeset
   535
    debugger send: 'c' andWaitFor: GDBStoppedEvent withTimeoutMs: 1000.
4cb568e406ce Skip known failing tests
Jan Vrany <jan.vrany@labware.com>
parents: 243
diff changeset
   536
    self assert: backtraces size equals: 2.
4cb568e406ce Skip known failing tests
Jan Vrany <jan.vrany@labware.com>
parents: 243
diff changeset
   537
4cb568e406ce Skip known failing tests
Jan Vrany <jan.vrany@labware.com>
parents: 243
diff changeset
   538
    debugger send: 'c' andWaitFor: GDBStoppedEvent withTimeoutMs: 1000.
4cb568e406ce Skip known failing tests
Jan Vrany <jan.vrany@labware.com>
parents: 243
diff changeset
   539
    self assert: backtraces size equals: 3.
4cb568e406ce Skip known failing tests
Jan Vrany <jan.vrany@labware.com>
parents: 243
diff changeset
   540
4cb568e406ce Skip known failing tests
Jan Vrany <jan.vrany@labware.com>
parents: 243
diff changeset
   541
    debugger send: 'del'.
4cb568e406ce Skip known failing tests
Jan Vrany <jan.vrany@labware.com>
parents: 243
diff changeset
   542
    debugger send: 'quit' andWait: false.
4cb568e406ce Skip known failing tests
Jan Vrany <jan.vrany@labware.com>
parents: 243
diff changeset
   543
4cb568e406ce Skip known failing tests
Jan Vrany <jan.vrany@labware.com>
parents: 243
diff changeset
   544
    "Created: / 27-03-2021 / 08:32:54 / Jan Vrany <jan.vrany@labware.com>"
4cb568e406ce Skip known failing tests
Jan Vrany <jan.vrany@labware.com>
parents: 243
diff changeset
   545
    "Modified: / 11-07-2023 / 17:11:43 / Jan Vrany <jan.vrany@labware.com>"
4cb568e406ce Skip known failing tests
Jan Vrany <jan.vrany@labware.com>
parents: 243
diff changeset
   546
!
4cb568e406ce Skip known failing tests
Jan Vrany <jan.vrany@labware.com>
parents: 243
diff changeset
   547
236
e36e28215fd9 Allow to wait for muliple events
Jan Vrany <jan.vrany@labware.com>
parents: 231
diff changeset
   548
test_eventhandling_02a
e36e28215fd9 Allow to wait for muliple events
Jan Vrany <jan.vrany@labware.com>
parents: 231
diff changeset
   549
    |  |
e36e28215fd9 Allow to wait for muliple events
Jan Vrany <jan.vrany@labware.com>
parents: 231
diff changeset
   550
e36e28215fd9 Allow to wait for muliple events
Jan Vrany <jan.vrany@labware.com>
parents: 231
diff changeset
   551
    debugger executable: GDBDebuggeesResource current binaryFactorial1.
e36e28215fd9 Allow to wait for muliple events
Jan Vrany <jan.vrany@labware.com>
parents: 231
diff changeset
   552
    debugger send: 'b factorial'.
e36e28215fd9 Allow to wait for muliple events
Jan Vrany <jan.vrany@labware.com>
parents: 231
diff changeset
   553
e36e28215fd9 Allow to wait for muliple events
Jan Vrany <jan.vrany@labware.com>
parents: 231
diff changeset
   554
    debugger send: 'r' andWaitFor: GDBStoppedEvent, GDBThreadGroupExitedEvent.
e36e28215fd9 Allow to wait for muliple events
Jan Vrany <jan.vrany@labware.com>
parents: 231
diff changeset
   555
    self assert: debugger inferiors anyOne isRunning.
e36e28215fd9 Allow to wait for muliple events
Jan Vrany <jan.vrany@labware.com>
parents: 231
diff changeset
   556
e36e28215fd9 Allow to wait for muliple events
Jan Vrany <jan.vrany@labware.com>
parents: 231
diff changeset
   557
    debugger send: 'r' andWaitFor: GDBStoppedEvent" , GDBThreadGroupExitedEvent".
e36e28215fd9 Allow to wait for muliple events
Jan Vrany <jan.vrany@labware.com>
parents: 231
diff changeset
   558
    self assert: debugger inferiors anyOne isRunning.
e36e28215fd9 Allow to wait for muliple events
Jan Vrany <jan.vrany@labware.com>
parents: 231
diff changeset
   559
e36e28215fd9 Allow to wait for muliple events
Jan Vrany <jan.vrany@labware.com>
parents: 231
diff changeset
   560
    debugger send: 'd'.
e36e28215fd9 Allow to wait for muliple events
Jan Vrany <jan.vrany@labware.com>
parents: 231
diff changeset
   561
    debugger send: 'c' andWaitFor: "GDBStoppedEvent , "GDBThreadGroupExitedEvent.
e36e28215fd9 Allow to wait for muliple events
Jan Vrany <jan.vrany@labware.com>
parents: 231
diff changeset
   562
e36e28215fd9 Allow to wait for muliple events
Jan Vrany <jan.vrany@labware.com>
parents: 231
diff changeset
   563
    self assert: debugger inferiors anyOne isRunning not.
e36e28215fd9 Allow to wait for muliple events
Jan Vrany <jan.vrany@labware.com>
parents: 231
diff changeset
   564
e36e28215fd9 Allow to wait for muliple events
Jan Vrany <jan.vrany@labware.com>
parents: 231
diff changeset
   565
    debugger send: 'quit' andWait: false.
e36e28215fd9 Allow to wait for muliple events
Jan Vrany <jan.vrany@labware.com>
parents: 231
diff changeset
   566
e36e28215fd9 Allow to wait for muliple events
Jan Vrany <jan.vrany@labware.com>
parents: 231
diff changeset
   567
    "Created: / 06-09-2021 / 15:49:25 / Jan Vrany <jan.vrany@labware.com>"
e36e28215fd9 Allow to wait for muliple events
Jan Vrany <jan.vrany@labware.com>
parents: 231
diff changeset
   568
!
e36e28215fd9 Allow to wait for muliple events
Jan Vrany <jan.vrany@labware.com>
parents: 231
diff changeset
   569
111
7ce18f6f18ac API: added methods for querying debugger and target features
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 110
diff changeset
   570
test_features
7ce18f6f18ac API: added methods for querying debugger and target features
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 110
diff changeset
   571
7ce18f6f18ac API: added methods for querying debugger and target features
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 110
diff changeset
   572
    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
   573
    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
   574
    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
   575
    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
   576
    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
   577
    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
   578
    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
   579
7ce18f6f18ac API: added methods for querying debugger and target features
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 110
diff changeset
   580
    "Created: / 07-02-2018 / 10:56:59 / Jan Vrany <jan.vrany@fit.cvut.cz>"
152
fab425b52c21 Refactor `GDBProcess` hierarchy to improve portability
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 144
diff changeset
   581
    "Modified: / 18-10-2018 / 10:56:28 / Jan Vrany <jan.vrany@fit.cvut.cz>"
111
7ce18f6f18ac API: added methods for querying debugger and target features
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 110
diff changeset
   582
!
7ce18f6f18ac API: added methods for querying debugger and target features
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 110
diff changeset
   583
208
b0d2028189fa Add basic support for reading / writing debugee memory
Jan Vrany <jan.vrany@labware.com>
parents: 192
diff changeset
   584
test_memory_01
b0d2028189fa Add basic support for reading / writing debugee memory
Jan Vrany <jan.vrany@labware.com>
parents: 192
diff changeset
   585
    | inferior thread frame address memory |
b0d2028189fa Add basic support for reading / writing debugee memory
Jan Vrany <jan.vrany@labware.com>
parents: 192
diff changeset
   586
b0d2028189fa Add basic support for reading / writing debugee memory
Jan Vrany <jan.vrany@labware.com>
parents: 192
diff changeset
   587
    debugger executable: GDBDebuggeesResource current binaryVariables1.
b0d2028189fa Add basic support for reading / writing debugee memory
Jan Vrany <jan.vrany@labware.com>
parents: 192
diff changeset
   588
b0d2028189fa Add basic support for reading / writing debugee memory
Jan Vrany <jan.vrany@labware.com>
parents: 192
diff changeset
   589
    debugger send: 'b main'.
b0d2028189fa Add basic support for reading / writing debugee memory
Jan Vrany <jan.vrany@labware.com>
parents: 192
diff changeset
   590
    debugger send: 'r' andWaitFor: GDBStoppedEvent.
b0d2028189fa Add basic support for reading / writing debugee memory
Jan Vrany <jan.vrany@labware.com>
parents: 192
diff changeset
   591
    debugger send: 's' andWaitFor: GDBStoppedEvent.
b0d2028189fa Add basic support for reading / writing debugee memory
Jan Vrany <jan.vrany@labware.com>
parents: 192
diff changeset
   592
b0d2028189fa Add basic support for reading / writing debugee memory
Jan Vrany <jan.vrany@labware.com>
parents: 192
diff changeset
   593
    inferior := debugger selectedInferior.
b0d2028189fa Add basic support for reading / writing debugee memory
Jan Vrany <jan.vrany@labware.com>
parents: 192
diff changeset
   594
    thread := inferior threads first.
b0d2028189fa Add basic support for reading / writing debugee memory
Jan Vrany <jan.vrany@labware.com>
parents: 192
diff changeset
   595
    frame := thread stack first.
b0d2028189fa Add basic support for reading / writing debugee memory
Jan Vrany <jan.vrany@labware.com>
parents: 192
diff changeset
   596
    address := debugger evaluate: '&d' in: frame.
b0d2028189fa Add basic support for reading / writing debugee memory
Jan Vrany <jan.vrany@labware.com>
parents: 192
diff changeset
   597
b0d2028189fa Add basic support for reading / writing debugee memory
Jan Vrany <jan.vrany@labware.com>
parents: 192
diff changeset
   598
    memory := inferior memoryAt: address value count: 4 + 20.
b0d2028189fa Add basic support for reading / writing debugee memory
Jan Vrany <jan.vrany@labware.com>
parents: 192
diff changeset
   599
    self assert: memory isByteArray.
b0d2028189fa Add basic support for reading / writing debugee memory
Jan Vrany <jan.vrany@labware.com>
parents: 192
diff changeset
   600
    self assert: (memory signedInt32At: 1) == 1.  
b0d2028189fa Add basic support for reading / writing debugee memory
Jan Vrany <jan.vrany@labware.com>
parents: 192
diff changeset
   601
    self assert: (memory copyFrom: 5 to: 5 + 5 - 1)= 'Hello' asByteArray.
b0d2028189fa Add basic support for reading / writing debugee memory
Jan Vrany <jan.vrany@labware.com>
parents: 192
diff changeset
   602
b0d2028189fa Add basic support for reading / writing debugee memory
Jan Vrany <jan.vrany@labware.com>
parents: 192
diff changeset
   603
    memory replaceBytesFrom: 5 to: 5 + 4 - 1 with: 'Ahoy' asByteArray startingAt: 1.
b0d2028189fa Add basic support for reading / writing debugee memory
Jan Vrany <jan.vrany@labware.com>
parents: 192
diff changeset
   604
    inferior memoryAt: address value put: memory startingAt: 1 count: 4 + 4.
b0d2028189fa Add basic support for reading / writing debugee memory
Jan Vrany <jan.vrany@labware.com>
parents: 192
diff changeset
   605
b0d2028189fa Add basic support for reading / writing debugee memory
Jan Vrany <jan.vrany@labware.com>
parents: 192
diff changeset
   606
    memory := inferior memoryAt: address value count: 4 + 20.
b0d2028189fa Add basic support for reading / writing debugee memory
Jan Vrany <jan.vrany@labware.com>
parents: 192
diff changeset
   607
    self assert: memory isByteArray.
b0d2028189fa Add basic support for reading / writing debugee memory
Jan Vrany <jan.vrany@labware.com>
parents: 192
diff changeset
   608
    self assert: (memory signedInt32At: 1) == 1.  
b0d2028189fa Add basic support for reading / writing debugee memory
Jan Vrany <jan.vrany@labware.com>
parents: 192
diff changeset
   609
    self assert: (memory copyFrom: 5 to: 5 + 5 - 1)= 'Ahoyo' asByteArray.
b0d2028189fa Add basic support for reading / writing debugee memory
Jan Vrany <jan.vrany@labware.com>
parents: 192
diff changeset
   610
b0d2028189fa Add basic support for reading / writing debugee memory
Jan Vrany <jan.vrany@labware.com>
parents: 192
diff changeset
   611
    "Created: / 14-06-2020 / 15:24:12 / Jan Vrany <jan.vrany@labware.com>"
b0d2028189fa Add basic support for reading / writing debugee memory
Jan Vrany <jan.vrany@labware.com>
parents: 192
diff changeset
   612
    "Modified: / 15-06-2020 / 13:27:30 / Jan Vrany <jan.vrany@labware.com>"
b0d2028189fa Add basic support for reading / writing debugee memory
Jan Vrany <jan.vrany@labware.com>
parents: 192
diff changeset
   613
!
b0d2028189fa Add basic support for reading / writing debugee memory
Jan Vrany <jan.vrany@labware.com>
parents: 192
diff changeset
   614
169
a3d1f59e3bfd API: add `GDBDebugger >> getParameter:` and `setParameter:to:`
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 165
diff changeset
   615
test_parameters_01
a3d1f59e3bfd API: add `GDBDebugger >> getParameter:` and `setParameter:to:`
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 165
diff changeset
   616
    | event |
a3d1f59e3bfd API: add `GDBDebugger >> getParameter:` and `setParameter:to:`
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 165
diff changeset
   617
a3d1f59e3bfd API: add `GDBDebugger >> getParameter:` and `setParameter:to:`
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 165
diff changeset
   618
    debugger announcer when: GDBCmdParamChangedEvent do:[:ev | event := ev ].
a3d1f59e3bfd API: add `GDBDebugger >> getParameter:` and `setParameter:to:`
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 165
diff changeset
   619
a3d1f59e3bfd API: add `GDBDebugger >> getParameter:` and `setParameter:to:`
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 165
diff changeset
   620
    debugger send: 'set prompt > '.
a3d1f59e3bfd API: add `GDBDebugger >> getParameter:` and `setParameter:to:`
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 165
diff changeset
   621
    self assert: (debugger getParameter: 'prompt') = '> '.
a3d1f59e3bfd API: add `GDBDebugger >> getParameter:` and `setParameter:to:`
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 165
diff changeset
   622
    self assert: event notNil.
a3d1f59e3bfd API: add `GDBDebugger >> getParameter:` and `setParameter:to:`
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 165
diff changeset
   623
    self assert: event name = 'prompt'.
a3d1f59e3bfd API: add `GDBDebugger >> getParameter:` and `setParameter:to:`
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 165
diff changeset
   624
    self assert: event value = '> '.
a3d1f59e3bfd API: add `GDBDebugger >> getParameter:` and `setParameter:to:`
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 165
diff changeset
   625
a3d1f59e3bfd API: add `GDBDebugger >> getParameter:` and `setParameter:to:`
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 165
diff changeset
   626
    event := nil.
a3d1f59e3bfd API: add `GDBDebugger >> getParameter:` and `setParameter:to:`
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 165
diff changeset
   627
    debugger setParameter: 'prompt' to: '$'.
a3d1f59e3bfd API: add `GDBDebugger >> getParameter:` and `setParameter:to:`
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 165
diff changeset
   628
    self assert: (debugger getParameter: 'prompt') = '$'.
a3d1f59e3bfd API: add `GDBDebugger >> getParameter:` and `setParameter:to:`
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 165
diff changeset
   629
    self assert: event notNil.
a3d1f59e3bfd API: add `GDBDebugger >> getParameter:` and `setParameter:to:`
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 165
diff changeset
   630
    self assert: event name = 'prompt'.
a3d1f59e3bfd API: add `GDBDebugger >> getParameter:` and `setParameter:to:`
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 165
diff changeset
   631
    self assert: event value = '$'.
a3d1f59e3bfd API: add `GDBDebugger >> getParameter:` and `setParameter:to:`
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 165
diff changeset
   632
a3d1f59e3bfd API: add `GDBDebugger >> getParameter:` and `setParameter:to:`
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 165
diff changeset
   633
    event := nil.
a3d1f59e3bfd API: add `GDBDebugger >> getParameter:` and `setParameter:to:`
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 165
diff changeset
   634
    debugger send: '-gdb-set prompt X'.
a3d1f59e3bfd API: add `GDBDebugger >> getParameter:` and `setParameter:to:`
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 165
diff changeset
   635
    self assert: (debugger getParameter: 'prompt') = 'X'.
a3d1f59e3bfd API: add `GDBDebugger >> getParameter:` and `setParameter:to:`
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 165
diff changeset
   636
    self assert: event notNil.
a3d1f59e3bfd API: add `GDBDebugger >> getParameter:` and `setParameter:to:`
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 165
diff changeset
   637
    self assert: event name = 'prompt'.
a3d1f59e3bfd API: add `GDBDebugger >> getParameter:` and `setParameter:to:`
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 165
diff changeset
   638
    self assert: event value = 'X'.
a3d1f59e3bfd API: add `GDBDebugger >> getParameter:` and `setParameter:to:`
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 165
diff changeset
   639
    
a3d1f59e3bfd API: add `GDBDebugger >> getParameter:` and `setParameter:to:`
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 165
diff changeset
   640
a3d1f59e3bfd API: add `GDBDebugger >> getParameter:` and `setParameter:to:`
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 165
diff changeset
   641
    debugger send: 'quit' andWait: false.
a3d1f59e3bfd API: add `GDBDebugger >> getParameter:` and `setParameter:to:`
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 165
diff changeset
   642
a3d1f59e3bfd API: add `GDBDebugger >> getParameter:` and `setParameter:to:`
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 165
diff changeset
   643
    "Created: / 19-01-2019 / 22:51:54 / Jan Vrany <jan.vrany@fit.cvut.cz>"
111
7ce18f6f18ac API: added methods for querying debugger and target features
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 110
diff changeset
   644
!
7ce18f6f18ac API: added methods for querying debugger and target features
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 110
diff changeset
   645
144
342b6dfe3a6f Add model for machine registers
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 130
diff changeset
   646
test_registers_01a
342b6dfe3a6f Add model for machine registers
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 130
diff changeset
   647
    | stack rax rip rsp raxValue1 ripValue1 rspValue1 raxValue2 ripValue2 rspValue2 |
342b6dfe3a6f Add model for machine registers
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 130
diff changeset
   648
342b6dfe3a6f Add model for machine registers
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 130
diff changeset
   649
    debugger executable: GDBDebuggeesResource current binaryFactorial1.
342b6dfe3a6f Add model for machine registers
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 130
diff changeset
   650
    debugger send: 'b factorial'.
342b6dfe3a6f Add model for machine registers
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 130
diff changeset
   651
    debugger send: 'r' andWaitFor: GDBStoppedEvent.
342b6dfe3a6f Add model for machine registers
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 130
diff changeset
   652
    debugger send: 'c' andWaitFor: GDBStoppedEvent.
342b6dfe3a6f Add model for machine registers
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 130
diff changeset
   653
342b6dfe3a6f Add model for machine registers
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 130
diff changeset
   654
    stack := debugger selectedInferior threads first stack.
342b6dfe3a6f Add model for machine registers
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 130
diff changeset
   655
    self assert: stack size == 3.
342b6dfe3a6f Add model for machine registers
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 130
diff changeset
   656
342b6dfe3a6f Add model for machine registers
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 130
diff changeset
   657
    self skipIf: (stack first arch name ~= 'x86_64') description: 'not supported on this architecture'.
342b6dfe3a6f Add model for machine registers
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 130
diff changeset
   658
342b6dfe3a6f Add model for machine registers
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 130
diff changeset
   659
    rax := stack first registers detect:[:reg | reg name = 'rax' ].
342b6dfe3a6f Add model for machine registers
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 130
diff changeset
   660
    rip := stack first registers detect:[:reg | reg name = 'rip' ].
342b6dfe3a6f Add model for machine registers
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 130
diff changeset
   661
    rsp := stack first registers detect:[:reg | reg name = 'rsp' ].
342b6dfe3a6f Add model for machine registers
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 130
diff changeset
   662
342b6dfe3a6f Add model for machine registers
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 130
diff changeset
   663
    self assert: rax hasChanged not.
342b6dfe3a6f Add model for machine registers
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 130
diff changeset
   664
    self assert: rip hasChanged not.
342b6dfe3a6f Add model for machine registers
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 130
diff changeset
   665
    self assert: rsp hasChanged not.
342b6dfe3a6f Add model for machine registers
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 130
diff changeset
   666
342b6dfe3a6f Add model for machine registers
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 130
diff changeset
   667
    raxValue1 := rax value.
342b6dfe3a6f Add model for machine registers
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 130
diff changeset
   668
    ripValue1 := rip value.
342b6dfe3a6f Add model for machine registers
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 130
diff changeset
   669
    rspValue1 := rsp value.
342b6dfe3a6f Add model for machine registers
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 130
diff changeset
   670
342b6dfe3a6f Add model for machine registers
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 130
diff changeset
   671
    debugger send: 'stepi' andWaitFor: GDBStoppedEvent.    
342b6dfe3a6f Add model for machine registers
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 130
diff changeset
   672
    debugger send: 'stepi' andWaitFor: GDBStoppedEvent.    
342b6dfe3a6f Add model for machine registers
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 130
diff changeset
   673
    debugger send: 'stepi' andWaitFor: GDBStoppedEvent.    
342b6dfe3a6f Add model for machine registers
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 130
diff changeset
   674
    debugger send: 'stepi' andWaitFor: GDBStoppedEvent.    
342b6dfe3a6f Add model for machine registers
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 130
diff changeset
   675
342b6dfe3a6f Add model for machine registers
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 130
diff changeset
   676
    raxValue2 := rax value.
342b6dfe3a6f Add model for machine registers
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 130
diff changeset
   677
    ripValue2 := rip value.
342b6dfe3a6f Add model for machine registers
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 130
diff changeset
   678
    rspValue2 := rsp value.
342b6dfe3a6f Add model for machine registers
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 130
diff changeset
   679
342b6dfe3a6f Add model for machine registers
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 130
diff changeset
   680
    self assert: raxValue1 ~= raxValue2.
342b6dfe3a6f Add model for machine registers
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 130
diff changeset
   681
    self assert: ripValue1 ~= ripValue2.
342b6dfe3a6f Add model for machine registers
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 130
diff changeset
   682
    self assert: rspValue1 = rspValue2.
342b6dfe3a6f Add model for machine registers
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 130
diff changeset
   683
342b6dfe3a6f Add model for machine registers
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 130
diff changeset
   684
    self assert: rax hasChanged.
342b6dfe3a6f Add model for machine registers
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 130
diff changeset
   685
    self assert: rip hasChanged.
342b6dfe3a6f Add model for machine registers
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 130
diff changeset
   686
    self assert: rsp hasChanged not.
342b6dfe3a6f Add model for machine registers
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 130
diff changeset
   687
342b6dfe3a6f Add model for machine registers
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 130
diff changeset
   688
342b6dfe3a6f Add model for machine registers
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 130
diff changeset
   689
    debugger send: 'd'.
342b6dfe3a6f Add model for machine registers
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 130
diff changeset
   690
    debugger send: 'c' andWaitFor: GDBThreadGroupExitedEvent.
342b6dfe3a6f Add model for machine registers
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 130
diff changeset
   691
    debugger send: 'quit' andWait: false.
342b6dfe3a6f Add model for machine registers
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 130
diff changeset
   692
342b6dfe3a6f Add model for machine registers
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 130
diff changeset
   693
    "Created: / 27-09-2018 / 10:45:20 / Jan Vrany <jan.vrany@fit.cvut.cz>"
152
fab425b52c21 Refactor `GDBProcess` hierarchy to improve portability
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 144
diff changeset
   694
    "Modified: / 18-10-2018 / 10:56:33 / Jan Vrany <jan.vrany@fit.cvut.cz>"
144
342b6dfe3a6f Add model for machine registers
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 130
diff changeset
   695
!
342b6dfe3a6f Add model for machine registers
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 130
diff changeset
   696
130
3aa56be1d6f7 Preserve identity of inlined frames if possible
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 129
diff changeset
   697
test_stack_01a
3aa56be1d6f7 Preserve identity of inlined frames if possible
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 129
diff changeset
   698
    "Tests that stack frames object are preserved amonh run/stop cycles
103
56bf65352505 Variable objects: preserve the identity of `GDBFrame` and `GDBVariable` objects
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 101
diff changeset
   699
     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
   700
56bf65352505 Variable objects: preserve the identity of `GDBFrame` and `GDBVariable` objects
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 101
diff changeset
   701
    | stack1 stack2 |
56bf65352505 Variable objects: preserve the identity of `GDBFrame` and `GDBVariable` objects
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 101
diff changeset
   702
56bf65352505 Variable objects: preserve the identity of `GDBFrame` and `GDBVariable` objects
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 101
diff changeset
   703
    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
   704
    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
   705
    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
   706
56bf65352505 Variable objects: preserve the identity of `GDBFrame` and `GDBVariable` objects
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 101
diff changeset
   707
    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
   708
    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
   709
    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
   710
    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
   711
    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
   712
    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
   713
    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
   714
    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
   715
    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
   716
56bf65352505 Variable objects: preserve the identity of `GDBFrame` and `GDBVariable` objects
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 101
diff changeset
   717
    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
   718
    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
   719
    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
   720
    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
   721
    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
   722
    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
   723
    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
   724
    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
   725
    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
   726
    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
   727
    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
   728
56bf65352505 Variable objects: preserve the identity of `GDBFrame` and `GDBVariable` objects
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 101
diff changeset
   729
56bf65352505 Variable objects: preserve the identity of `GDBFrame` and `GDBVariable` objects
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 101
diff changeset
   730
    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
   731
    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
   732
    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
   733
130
3aa56be1d6f7 Preserve identity of inlined frames if possible
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 129
diff changeset
   734
    "Created: / 06-08-2018 / 15:06:34 / Jan Vrany <jan.vrany@fit.cvut.cz>"
152
fab425b52c21 Refactor `GDBProcess` hierarchy to improve portability
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 144
diff changeset
   735
    "Modified: / 18-10-2018 / 10:56:40 / Jan Vrany <jan.vrany@fit.cvut.cz>"
130
3aa56be1d6f7 Preserve identity of inlined frames if possible
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 129
diff changeset
   736
!
3aa56be1d6f7 Preserve identity of inlined frames if possible
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 129
diff changeset
   737
3aa56be1d6f7 Preserve identity of inlined frames if possible
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 129
diff changeset
   738
test_stack_01b
3aa56be1d6f7 Preserve identity of inlined frames if possible
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 129
diff changeset
   739
    "Tests that stack frames object are preserved amonh run/stop cycles
3aa56be1d6f7 Preserve identity of inlined frames if possible
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 129
diff changeset
   740
     if they 're still valid"
3aa56be1d6f7 Preserve identity of inlined frames if possible
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 129
diff changeset
   741
3aa56be1d6f7 Preserve identity of inlined frames if possible
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 129
diff changeset
   742
    | stack1 pc1 stack2 pc2 |
3aa56be1d6f7 Preserve identity of inlined frames if possible
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 129
diff changeset
   743
3aa56be1d6f7 Preserve identity of inlined frames if possible
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 129
diff changeset
   744
    debugger executable: GDBDebuggeesResource current binaryFactorial1.
3aa56be1d6f7 Preserve identity of inlined frames if possible
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 129
diff changeset
   745
    debugger send: 'b factorial'.
3aa56be1d6f7 Preserve identity of inlined frames if possible
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 129
diff changeset
   746
    debugger send: 'r' andWaitFor: GDBStoppedEvent.
3aa56be1d6f7 Preserve identity of inlined frames if possible
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 129
diff changeset
   747
3aa56be1d6f7 Preserve identity of inlined frames if possible
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 129
diff changeset
   748
    stack1 := debugger selectedInferior threads first stack.
3aa56be1d6f7 Preserve identity of inlined frames if possible
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 129
diff changeset
   749
    pc1 := stack1 first address.
3aa56be1d6f7 Preserve identity of inlined frames if possible
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 129
diff changeset
   750
    debugger send: 'stepi' andWaitFor: GDBStoppedEvent.
3aa56be1d6f7 Preserve identity of inlined frames if possible
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 129
diff changeset
   751
    stack2 := debugger selectedInferior threads first stack.
3aa56be1d6f7 Preserve identity of inlined frames if possible
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 129
diff changeset
   752
    pc2 := stack2 first address.
3aa56be1d6f7 Preserve identity of inlined frames if possible
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 129
diff changeset
   753
    self assert: stack1 size == 2.
3aa56be1d6f7 Preserve identity of inlined frames if possible
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 129
diff changeset
   754
    self assert: stack2 size == 2.
3aa56be1d6f7 Preserve identity of inlined frames if possible
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 129
diff changeset
   755
    self assert: pc1 ~= pc2.
3aa56be1d6f7 Preserve identity of inlined frames if possible
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 129
diff changeset
   756
    self assert: stack1 first  == stack1 first.
3aa56be1d6f7 Preserve identity of inlined frames if possible
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 129
diff changeset
   757
    self assert: stack1 second == stack2 second.
3aa56be1d6f7 Preserve identity of inlined frames if possible
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 129
diff changeset
   758
3aa56be1d6f7 Preserve identity of inlined frames if possible
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 129
diff changeset
   759
    debugger send: 'd'.
3aa56be1d6f7 Preserve identity of inlined frames if possible
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 129
diff changeset
   760
    debugger send: 'c' andWaitFor: GDBThreadGroupExitedEvent.
3aa56be1d6f7 Preserve identity of inlined frames if possible
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 129
diff changeset
   761
    debugger send: 'quit' andWait: false.
3aa56be1d6f7 Preserve identity of inlined frames if possible
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 129
diff changeset
   762
3aa56be1d6f7 Preserve identity of inlined frames if possible
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 129
diff changeset
   763
    "Created: / 06-08-2018 / 15:07:39 / Jan Vrany <jan.vrany@fit.cvut.cz>"
152
fab425b52c21 Refactor `GDBProcess` hierarchy to improve portability
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 144
diff changeset
   764
    "Modified: / 18-10-2018 / 10:57:40 / Jan Vrany <jan.vrany@fit.cvut.cz>"
103
56bf65352505 Variable objects: preserve the identity of `GDBFrame` and `GDBVariable` objects
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 101
diff changeset
   765
!
56bf65352505 Variable objects: preserve the identity of `GDBFrame` and `GDBVariable` objects
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 101
diff changeset
   766
106
12c96f17fc53 Variable objects: invalidate variable object when thread on inferior terminates
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 104
diff changeset
   767
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
   768
    | stack1 stack2 |
12c96f17fc53 Variable objects: invalidate variable object when thread on inferior terminates
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 104
diff changeset
   769
110
727d8a9e6d5d Variable objecys: added `GDBVariableObject >> #visualizer` and `#visualizer:`
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 109
diff changeset
   770
    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
   771
    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
   772
    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
   773
12c96f17fc53 Variable objects: invalidate variable object when thread on inferior terminates
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 104
diff changeset
   774
    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
   775
    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
   776
    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
   777
    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
   778
    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
   779
    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
   780
12c96f17fc53 Variable objects: invalidate variable object when thread on inferior terminates
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 104
diff changeset
   781
    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
   782
    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
   783
    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
   784
12c96f17fc53 Variable objects: invalidate variable object when thread on inferior terminates
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 104
diff changeset
   785
    "Created: / 12-02-2018 / 21:46:48 / Jan Vrany <jan.vrany@fit.cvut.cz>"
152
fab425b52c21 Refactor `GDBProcess` hierarchy to improve portability
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 144
diff changeset
   786
    "Modified: / 18-10-2018 / 10:57:45 / 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
   787
!
12c96f17fc53 Variable objects: invalidate variable object when thread on inferior terminates
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 104
diff changeset
   788
129
661e16236c67 Set `GDBThreadSelectedEvent`'s thread and frame
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 127
diff changeset
   789
test_stack_03
661e16236c67 Set `GDBThreadSelectedEvent`'s thread and frame
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 127
diff changeset
   790
    "Tests that CLI commands 'up', 'down' and 'frame' emit GDBThreadSelected event
661e16236c67 Set `GDBThreadSelectedEvent`'s thread and frame
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 127
diff changeset
   791
     and its thread and frame is properly set."
661e16236c67 Set `GDBThreadSelectedEvent`'s thread and frame
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 127
diff changeset
   792
661e16236c67 Set `GDBThreadSelectedEvent`'s thread and frame
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 127
diff changeset
   793
    | stack2 selection |
661e16236c67 Set `GDBThreadSelectedEvent`'s thread and frame
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 127
diff changeset
   794
661e16236c67 Set `GDBThreadSelectedEvent`'s thread and frame
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 127
diff changeset
   795
    debugger executable: GDBDebuggeesResource current binaryFactorial1.
661e16236c67 Set `GDBThreadSelectedEvent`'s thread and frame
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 127
diff changeset
   796
    debugger send: 'b factorial'.
661e16236c67 Set `GDBThreadSelectedEvent`'s thread and frame
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 127
diff changeset
   797
    debugger send: 'r' andWaitFor: GDBStoppedEvent.
661e16236c67 Set `GDBThreadSelectedEvent`'s thread and frame
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 127
diff changeset
   798
    debugger send: 'c' andWaitFor: GDBStoppedEvent.
661e16236c67 Set `GDBThreadSelectedEvent`'s thread and frame
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 127
diff changeset
   799
661e16236c67 Set `GDBThreadSelectedEvent`'s thread and frame
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 127
diff changeset
   800
    stack2 := debugger selectedInferior threads first stack.
661e16236c67 Set `GDBThreadSelectedEvent`'s thread and frame
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 127
diff changeset
   801
    debugger announcer when: GDBThreadSelectedEvent do: [:e | selection := e ].
661e16236c67 Set `GDBThreadSelectedEvent`'s thread and frame
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 127
diff changeset
   802
    selection := nil.
661e16236c67 Set `GDBThreadSelectedEvent`'s thread and frame
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 127
diff changeset
   803
    debugger send: 'up'.
661e16236c67 Set `GDBThreadSelectedEvent`'s thread and frame
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 127
diff changeset
   804
    self assert: selection notNil.
661e16236c67 Set `GDBThreadSelectedEvent`'s thread and frame
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 127
diff changeset
   805
    self assert: selection thread == debugger selectedInferior threads first.
661e16236c67 Set `GDBThreadSelectedEvent`'s thread and frame
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 127
diff changeset
   806
    self assert: selection frame == stack2 second.
661e16236c67 Set `GDBThreadSelectedEvent`'s thread and frame
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 127
diff changeset
   807
661e16236c67 Set `GDBThreadSelectedEvent`'s thread and frame
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 127
diff changeset
   808
    debugger send: 'down'.
661e16236c67 Set `GDBThreadSelectedEvent`'s thread and frame
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 127
diff changeset
   809
    self assert: selection notNil.
661e16236c67 Set `GDBThreadSelectedEvent`'s thread and frame
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 127
diff changeset
   810
    self assert: selection thread == debugger selectedInferior threads first.
661e16236c67 Set `GDBThreadSelectedEvent`'s thread and frame
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 127
diff changeset
   811
    self assert: selection frame == stack2 first.
661e16236c67 Set `GDBThreadSelectedEvent`'s thread and frame
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 127
diff changeset
   812
661e16236c67 Set `GDBThreadSelectedEvent`'s thread and frame
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 127
diff changeset
   813
    debugger send: 'frame 2'.
661e16236c67 Set `GDBThreadSelectedEvent`'s thread and frame
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 127
diff changeset
   814
    self assert: selection notNil.
661e16236c67 Set `GDBThreadSelectedEvent`'s thread and frame
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 127
diff changeset
   815
    self assert: selection thread == debugger selectedInferior threads first.
661e16236c67 Set `GDBThreadSelectedEvent`'s thread and frame
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 127
diff changeset
   816
    self assert: selection frame == stack2 third.
661e16236c67 Set `GDBThreadSelectedEvent`'s thread and frame
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 127
diff changeset
   817
661e16236c67 Set `GDBThreadSelectedEvent`'s thread and frame
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 127
diff changeset
   818
    "Created: / 30-07-2018 / 07:07:48 / Jan Vrany <jan.vrany@fit.cvut.cz>"
152
fab425b52c21 Refactor `GDBProcess` hierarchy to improve portability
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 144
diff changeset
   819
    "Modified: / 18-10-2018 / 10:57:50 / Jan Vrany <jan.vrany@fit.cvut.cz>"
129
661e16236c67 Set `GDBThreadSelectedEvent`'s thread and frame
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 127
diff changeset
   820
!
661e16236c67 Set `GDBThreadSelectedEvent`'s thread and frame
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 127
diff changeset
   821
223
5ba4abfcb7e7 Track user context (selected thread and frame) in `GDBDebugger`
Jan Vrany <jan.vrany@labware.com>
parents: 219
diff changeset
   822
test_stack_04a
5ba4abfcb7e7 Track user context (selected thread and frame) in `GDBDebugger`
Jan Vrany <jan.vrany@labware.com>
parents: 219
diff changeset
   823
    "
5ba4abfcb7e7 Track user context (selected thread and frame) in `GDBDebugger`
Jan Vrany <jan.vrany@labware.com>
parents: 219
diff changeset
   824
    Test user context, that is `GDBDebugger >> #selectedThread` 
5ba4abfcb7e7 Track user context (selected thread and frame) in `GDBDebugger`
Jan Vrany <jan.vrany@labware.com>
parents: 219
diff changeset
   825
    and GDBDebugger >> #selectedThread`.
5ba4abfcb7e7 Track user context (selected thread and frame) in `GDBDebugger`
Jan Vrany <jan.vrany@labware.com>
parents: 219
diff changeset
   826
    "
5ba4abfcb7e7 Track user context (selected thread and frame) in `GDBDebugger`
Jan Vrany <jan.vrany@labware.com>
parents: 219
diff changeset
   827
5ba4abfcb7e7 Track user context (selected thread and frame) in `GDBDebugger`
Jan Vrany <jan.vrany@labware.com>
parents: 219
diff changeset
   828
    | event |
5ba4abfcb7e7 Track user context (selected thread and frame) in `GDBDebugger`
Jan Vrany <jan.vrany@labware.com>
parents: 219
diff changeset
   829
266
4cb568e406ce Skip known failing tests
Jan Vrany <jan.vrany@labware.com>
parents: 243
diff changeset
   830
    self skip: 'Known issue'.
4cb568e406ce Skip known failing tests
Jan Vrany <jan.vrany@labware.com>
parents: 243
diff changeset
   831
223
5ba4abfcb7e7 Track user context (selected thread and frame) in `GDBDebugger`
Jan Vrany <jan.vrany@labware.com>
parents: 219
diff changeset
   832
    debugger executable: GDBDebuggeesResource current binaryFactorial1.
5ba4abfcb7e7 Track user context (selected thread and frame) in `GDBDebugger`
Jan Vrany <jan.vrany@labware.com>
parents: 219
diff changeset
   833
    debugger send: 'b factorial'.
5ba4abfcb7e7 Track user context (selected thread and frame) in `GDBDebugger`
Jan Vrany <jan.vrany@labware.com>
parents: 219
diff changeset
   834
    event := debugger send: 'r' andWaitFor: GDBStoppedEvent.
5ba4abfcb7e7 Track user context (selected thread and frame) in `GDBDebugger`
Jan Vrany <jan.vrany@labware.com>
parents: 219
diff changeset
   835
    event := debugger send: 'c' andWaitFor: GDBStoppedEvent.
5ba4abfcb7e7 Track user context (selected thread and frame) in `GDBDebugger`
Jan Vrany <jan.vrany@labware.com>
parents: 219
diff changeset
   836
5ba4abfcb7e7 Track user context (selected thread and frame) in `GDBDebugger`
Jan Vrany <jan.vrany@labware.com>
parents: 219
diff changeset
   837
    "/ When inferior stops, the user context is set to the
5ba4abfcb7e7 Track user context (selected thread and frame) in `GDBDebugger`
Jan Vrany <jan.vrany@labware.com>
parents: 219
diff changeset
   838
    "/ thread and frame that caused the stop.
5ba4abfcb7e7 Track user context (selected thread and frame) in `GDBDebugger`
Jan Vrany <jan.vrany@labware.com>
parents: 219
diff changeset
   839
    self assert: debugger selectedInferior notNil.
5ba4abfcb7e7 Track user context (selected thread and frame) in `GDBDebugger`
Jan Vrany <jan.vrany@labware.com>
parents: 219
diff changeset
   840
    self assert: debugger selectedThread notNil.
266
4cb568e406ce Skip known failing tests
Jan Vrany <jan.vrany@labware.com>
parents: 243
diff changeset
   841
    self assert: debugger selectedThread equals: event stoppedThread.
4cb568e406ce Skip known failing tests
Jan Vrany <jan.vrany@labware.com>
parents: 243
diff changeset
   842
    self assert: debugger selectedFrame level equals: 0.
223
5ba4abfcb7e7 Track user context (selected thread and frame) in `GDBDebugger`
Jan Vrany <jan.vrany@labware.com>
parents: 219
diff changeset
   843
5ba4abfcb7e7 Track user context (selected thread and frame) in `GDBDebugger`
Jan Vrany <jan.vrany@labware.com>
parents: 219
diff changeset
   844
    "/ Change the frame by issuing 'down' CLI command...
5ba4abfcb7e7 Track user context (selected thread and frame) in `GDBDebugger`
Jan Vrany <jan.vrany@labware.com>
parents: 219
diff changeset
   845
    debugger send: 'up'.
5ba4abfcb7e7 Track user context (selected thread and frame) in `GDBDebugger`
Jan Vrany <jan.vrany@labware.com>
parents: 219
diff changeset
   846
5ba4abfcb7e7 Track user context (selected thread and frame) in `GDBDebugger`
Jan Vrany <jan.vrany@labware.com>
parents: 219
diff changeset
   847
    self assert: debugger selectedInferior notNil.
5ba4abfcb7e7 Track user context (selected thread and frame) in `GDBDebugger`
Jan Vrany <jan.vrany@labware.com>
parents: 219
diff changeset
   848
    self assert: debugger selectedThread notNil.
266
4cb568e406ce Skip known failing tests
Jan Vrany <jan.vrany@labware.com>
parents: 243
diff changeset
   849
    self assert: debugger selectedFrame level equals: 1.
223
5ba4abfcb7e7 Track user context (selected thread and frame) in `GDBDebugger`
Jan Vrany <jan.vrany@labware.com>
parents: 219
diff changeset
   850
5ba4abfcb7e7 Track user context (selected thread and frame) in `GDBDebugger`
Jan Vrany <jan.vrany@labware.com>
parents: 219
diff changeset
   851
    "/ Change the frame by issuing '-stack-select-frame' MI command...
5ba4abfcb7e7 Track user context (selected thread and frame) in `GDBDebugger`
Jan Vrany <jan.vrany@labware.com>
parents: 219
diff changeset
   852
    debugger send: (GDBMI_stack_select_frame arguments: #(2)).
5ba4abfcb7e7 Track user context (selected thread and frame) in `GDBDebugger`
Jan Vrany <jan.vrany@labware.com>
parents: 219
diff changeset
   853
    self assert: debugger selectedInferior notNil.
5ba4abfcb7e7 Track user context (selected thread and frame) in `GDBDebugger`
Jan Vrany <jan.vrany@labware.com>
parents: 219
diff changeset
   854
    self assert: debugger selectedThread notNil.
266
4cb568e406ce Skip known failing tests
Jan Vrany <jan.vrany@labware.com>
parents: 243
diff changeset
   855
    self assert: debugger selectedFrame level equals: 2.
223
5ba4abfcb7e7 Track user context (selected thread and frame) in `GDBDebugger`
Jan Vrany <jan.vrany@labware.com>
parents: 219
diff changeset
   856
5ba4abfcb7e7 Track user context (selected thread and frame) in `GDBDebugger`
Jan Vrany <jan.vrany@labware.com>
parents: 219
diff changeset
   857
    "/ When inferior stops, the user context is set to the
5ba4abfcb7e7 Track user context (selected thread and frame) in `GDBDebugger`
Jan Vrany <jan.vrany@labware.com>
parents: 219
diff changeset
   858
    "/ thread and frame that caused the stop.
5ba4abfcb7e7 Track user context (selected thread and frame) in `GDBDebugger`
Jan Vrany <jan.vrany@labware.com>
parents: 219
diff changeset
   859
    event := debugger send: 'c' andWaitFor: GDBStoppedEvent.
5ba4abfcb7e7 Track user context (selected thread and frame) in `GDBDebugger`
Jan Vrany <jan.vrany@labware.com>
parents: 219
diff changeset
   860
    self assert: debugger selectedInferior notNil.
5ba4abfcb7e7 Track user context (selected thread and frame) in `GDBDebugger`
Jan Vrany <jan.vrany@labware.com>
parents: 219
diff changeset
   861
    self assert: debugger selectedThread notNil.
266
4cb568e406ce Skip known failing tests
Jan Vrany <jan.vrany@labware.com>
parents: 243
diff changeset
   862
    self assert: debugger selectedThread equals: event stoppedThread.
4cb568e406ce Skip known failing tests
Jan Vrany <jan.vrany@labware.com>
parents: 243
diff changeset
   863
    self assert: debugger selectedFrame level equals: 0.   
223
5ba4abfcb7e7 Track user context (selected thread and frame) in `GDBDebugger`
Jan Vrany <jan.vrany@labware.com>
parents: 219
diff changeset
   864
5ba4abfcb7e7 Track user context (selected thread and frame) in `GDBDebugger`
Jan Vrany <jan.vrany@labware.com>
parents: 219
diff changeset
   865
    "/ Change the frame by using convenience API
5ba4abfcb7e7 Track user context (selected thread and frame) in `GDBDebugger`
Jan Vrany <jan.vrany@labware.com>
parents: 219
diff changeset
   866
    debugger selectFrame: (debugger selectedThread stack at: 1).
5ba4abfcb7e7 Track user context (selected thread and frame) in `GDBDebugger`
Jan Vrany <jan.vrany@labware.com>
parents: 219
diff changeset
   867
    self assert: debugger selectedInferior notNil.
5ba4abfcb7e7 Track user context (selected thread and frame) in `GDBDebugger`
Jan Vrany <jan.vrany@labware.com>
parents: 219
diff changeset
   868
    self assert: debugger selectedThread notNil.
266
4cb568e406ce Skip known failing tests
Jan Vrany <jan.vrany@labware.com>
parents: 243
diff changeset
   869
    self assert: debugger selectedFrame level equals: 0.
223
5ba4abfcb7e7 Track user context (selected thread and frame) in `GDBDebugger`
Jan Vrany <jan.vrany@labware.com>
parents: 219
diff changeset
   870
    
5ba4abfcb7e7 Track user context (selected thread and frame) in `GDBDebugger`
Jan Vrany <jan.vrany@labware.com>
parents: 219
diff changeset
   871
5ba4abfcb7e7 Track user context (selected thread and frame) in `GDBDebugger`
Jan Vrany <jan.vrany@labware.com>
parents: 219
diff changeset
   872
    debugger send: 'd'.
5ba4abfcb7e7 Track user context (selected thread and frame) in `GDBDebugger`
Jan Vrany <jan.vrany@labware.com>
parents: 219
diff changeset
   873
    event := debugger send: 'c' andWaitFor: GDBThreadGroupExitedEvent.
5ba4abfcb7e7 Track user context (selected thread and frame) in `GDBDebugger`
Jan Vrany <jan.vrany@labware.com>
parents: 219
diff changeset
   874
5ba4abfcb7e7 Track user context (selected thread and frame) in `GDBDebugger`
Jan Vrany <jan.vrany@labware.com>
parents: 219
diff changeset
   875
    "/ When inferior does not run, the user context is empty
5ba4abfcb7e7 Track user context (selected thread and frame) in `GDBDebugger`
Jan Vrany <jan.vrany@labware.com>
parents: 219
diff changeset
   876
    "/ (none)
5ba4abfcb7e7 Track user context (selected thread and frame) in `GDBDebugger`
Jan Vrany <jan.vrany@labware.com>
parents: 219
diff changeset
   877
    self assert: debugger selectedThread isNil.
5ba4abfcb7e7 Track user context (selected thread and frame) in `GDBDebugger`
Jan Vrany <jan.vrany@labware.com>
parents: 219
diff changeset
   878
    self assert: debugger selectedFrame isNil.
5ba4abfcb7e7 Track user context (selected thread and frame) in `GDBDebugger`
Jan Vrany <jan.vrany@labware.com>
parents: 219
diff changeset
   879
5ba4abfcb7e7 Track user context (selected thread and frame) in `GDBDebugger`
Jan Vrany <jan.vrany@labware.com>
parents: 219
diff changeset
   880
    debugger send: 'quit' andWait: false.
5ba4abfcb7e7 Track user context (selected thread and frame) in `GDBDebugger`
Jan Vrany <jan.vrany@labware.com>
parents: 219
diff changeset
   881
5ba4abfcb7e7 Track user context (selected thread and frame) in `GDBDebugger`
Jan Vrany <jan.vrany@labware.com>
parents: 219
diff changeset
   882
    "Created: / 09-03-2021 / 16:11:08 / Jan Vrany <jan.vrany@labware.com>"
266
4cb568e406ce Skip known failing tests
Jan Vrany <jan.vrany@labware.com>
parents: 243
diff changeset
   883
    "Modified: / 11-07-2023 / 17:11:49 / Jan Vrany <jan.vrany@labware.com>"
223
5ba4abfcb7e7 Track user context (selected thread and frame) in `GDBDebugger`
Jan Vrany <jan.vrany@labware.com>
parents: 219
diff changeset
   884
!
5ba4abfcb7e7 Track user context (selected thread and frame) in `GDBDebugger`
Jan Vrany <jan.vrany@labware.com>
parents: 219
diff changeset
   885
101
d8fee2af20b2 Variable objects: added support for composite types
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 95
diff changeset
   886
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
   887
    | thread frame variables d |
101
d8fee2af20b2 Variable objects: added support for composite types
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 95
diff changeset
   888
110
727d8a9e6d5d Variable objecys: added `GDBVariableObject >> #visualizer` and `#visualizer:`
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 109
diff changeset
   889
    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
   890
d8fee2af20b2 Variable objects: added support for composite types
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 95
diff changeset
   891
    debugger send: 'b main'.
d8fee2af20b2 Variable objects: added support for composite types
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 95
diff changeset
   892
    debugger send: 'r' andWaitFor: GDBStoppedEvent.
d8fee2af20b2 Variable objects: added support for composite types
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 95
diff changeset
   893
    debugger send: 's' andWaitFor: GDBStoppedEvent.
d8fee2af20b2 Variable objects: added support for composite types
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 95
diff changeset
   894
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
   895
    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
   896
    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
   897
    variables :=  frame variables.
101
d8fee2af20b2 Variable objects: added support for composite types
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 95
diff changeset
   898
d8fee2af20b2 Variable objects: added support for composite types
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 95
diff changeset
   899
    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
   900
    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
   901
    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
   902
    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
   903
    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
   904
d8fee2af20b2 Variable objects: added support for composite types
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 95
diff changeset
   905
    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
   906
    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
   907
d8fee2af20b2 Variable objects: added support for composite types
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 95
diff changeset
   908
    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
   909
    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
   910
d8fee2af20b2 Variable objects: added support for composite types
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 95
diff changeset
   911
    d := variables third varobj.
d8fee2af20b2 Variable objects: added support for composite types
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 95
diff changeset
   912
    self assert: d hasChildren.
d8fee2af20b2 Variable objects: added support for composite types
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 95
diff changeset
   913
    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
   914
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
   915
    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
   916
    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
   917
    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
   918
    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
   919
    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
   920
    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
   921
    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
   922
    
101
d8fee2af20b2 Variable objects: added support for composite types
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 95
diff changeset
   923
d8fee2af20b2 Variable objects: added support for composite types
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 95
diff changeset
   924
    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
   925
    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
   926
    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
   927
    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
   928
d8fee2af20b2 Variable objects: added support for composite types
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 95
diff changeset
   929
    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
   930
    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
   931
    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
   932
    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
   933
    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
   934
    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
   935
    
d8fee2af20b2 Variable objects: added support for composite types
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 95
diff changeset
   936
    debugger send: 'c' andWaitFor: GDBThreadGroupExitedEvent.
d8fee2af20b2 Variable objects: added support for composite types
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 95
diff changeset
   937
    debugger send: 'quit' andWait: false.
d8fee2af20b2 Variable objects: added support for composite types
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 95
diff changeset
   938
d8fee2af20b2 Variable objects: added support for composite types
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 95
diff changeset
   939
    "Created: / 30-01-2018 / 10:27:40 / Jan Vrany <jan.vrany@fit.cvut.cz>"
152
fab425b52c21 Refactor `GDBProcess` hierarchy to improve portability
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 144
diff changeset
   940
    "Modified: / 18-10-2018 / 10:57:56 / 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
   941
!
4add55336dfe Variable objects: automagically update values whenever changed.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 103
diff changeset
   942
4add55336dfe Variable objects: automagically update values whenever changed.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 103
diff changeset
   943
test_variables_02
4add55336dfe Variable objects: automagically update values whenever changed.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 103
diff changeset
   944
    "
4add55336dfe Variable objects: automagically update values whenever changed.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 103
diff changeset
   945
    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
   946
    across multiple run-stop cycles
4add55336dfe Variable objects: automagically update values whenever changed.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 103
diff changeset
   947
    "    
4add55336dfe Variable objects: automagically update values whenever changed.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 103
diff changeset
   948
    | variables1 variables2 |
4add55336dfe Variable objects: automagically update values whenever changed.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 103
diff changeset
   949
110
727d8a9e6d5d Variable objecys: added `GDBVariableObject >> #visualizer` and `#visualizer:`
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 109
diff changeset
   950
    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
   951
4add55336dfe Variable objects: automagically update values whenever changed.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 103
diff changeset
   952
    debugger send: 'b main'.
4add55336dfe Variable objects: automagically update values whenever changed.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 103
diff changeset
   953
    debugger send: 'r' andWaitFor: GDBStoppedEvent.
4add55336dfe Variable objects: automagically update values whenever changed.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 103
diff changeset
   954
    debugger send: 's' andWaitFor: GDBStoppedEvent.
4add55336dfe Variable objects: automagically update values whenever changed.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 103
diff changeset
   955
4add55336dfe Variable objects: automagically update values whenever changed.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 103
diff changeset
   956
    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
   957
    debugger send: 'next' andWaitFor: GDBStoppedEvent.
4add55336dfe Variable objects: automagically update values whenever changed.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 103
diff changeset
   958
    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
   959
4add55336dfe Variable objects: automagically update values whenever changed.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 103
diff changeset
   960
    self assert: variables1 size = 3.
4add55336dfe Variable objects: automagically update values whenever changed.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 103
diff changeset
   961
    self assert: variables2 size = 3.
4add55336dfe Variable objects: automagically update values whenever changed.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 103
diff changeset
   962
    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
   963
        self assert: var1 == var2    
4add55336dfe Variable objects: automagically update values whenever changed.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 103
diff changeset
   964
    ].
4add55336dfe Variable objects: automagically update values whenever changed.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 103
diff changeset
   965
4add55336dfe Variable objects: automagically update values whenever changed.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 103
diff changeset
   966
    debugger send: 'c' andWaitFor: GDBThreadGroupExitedEvent.
4add55336dfe Variable objects: automagically update values whenever changed.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 103
diff changeset
   967
    debugger send: 'quit' andWait: false.
4add55336dfe Variable objects: automagically update values whenever changed.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 103
diff changeset
   968
4add55336dfe Variable objects: automagically update values whenever changed.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 103
diff changeset
   969
    "Created: / 01-02-2018 / 21:45:03 / Jan Vrany <jan.vrany@fit.cvut.cz>"
152
fab425b52c21 Refactor `GDBProcess` hierarchy to improve portability
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 144
diff changeset
   970
    "Modified: / 18-10-2018 / 10:58:00 / 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
   971
!
4add55336dfe Variable objects: automagically update values whenever changed.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 103
diff changeset
   972
4add55336dfe Variable objects: automagically update values whenever changed.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 103
diff changeset
   973
test_variables_03
4add55336dfe Variable objects: automagically update values whenever changed.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 103
diff changeset
   974
    "
4add55336dfe Variable objects: automagically update values whenever changed.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 103
diff changeset
   975
    This test tests GDBVariableObject >> hasChanged
4add55336dfe Variable objects: automagically update values whenever changed.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 103
diff changeset
   976
    " 
4add55336dfe Variable objects: automagically update values whenever changed.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 103
diff changeset
   977
    | variables d d_i |
4add55336dfe Variable objects: automagically update values whenever changed.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 103
diff changeset
   978
110
727d8a9e6d5d Variable objecys: added `GDBVariableObject >> #visualizer` and `#visualizer:`
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 109
diff changeset
   979
    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
   980
4add55336dfe Variable objects: automagically update values whenever changed.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 103
diff changeset
   981
    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
   982
    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
   983
    debugger send: 'del'.
104
4add55336dfe Variable objects: automagically update values whenever changed.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 103
diff changeset
   984
4add55336dfe Variable objects: automagically update values whenever changed.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 103
diff changeset
   985
    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
   986
    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
   987
    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
   988
    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
   989
    d := variables third varobj.
4add55336dfe Variable objects: automagically update values whenever changed.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 103
diff changeset
   990
    self assert: d hasChildren.
4add55336dfe Variable objects: automagically update values whenever changed.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 103
diff changeset
   991
    self assert: d expression = 'd'.
4add55336dfe Variable objects: automagically update values whenever changed.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 103
diff changeset
   992
    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
   993
    d_i := d children first.
4add55336dfe Variable objects: automagically update values whenever changed.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 103
diff changeset
   994
    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
   995
    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
   996
    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
   997
    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
   998
4add55336dfe Variable objects: automagically update values whenever changed.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 103
diff changeset
   999
    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
  1000
    debugger send: 'finish' andWaitFor: GDBStoppedEvent.
4add55336dfe Variable objects: automagically update values whenever changed.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 103
diff changeset
  1001
    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
  1002
    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
  1003
    self assert: d_i hasChanged.
4add55336dfe Variable objects: automagically update values whenever changed.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 103
diff changeset
  1004
    self assert: d_i hasChanged.
4add55336dfe Variable objects: automagically update values whenever changed.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 103
diff changeset
  1005
    self assert: d_i hasChanged.
4add55336dfe Variable objects: automagically update values whenever changed.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 103
diff changeset
  1006
4add55336dfe Variable objects: automagically update values whenever changed.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 103
diff changeset
  1007
    debugger send: 's' andWaitFor: GDBStoppedEvent.
4add55336dfe Variable objects: automagically update values whenever changed.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 103
diff changeset
  1008
    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
  1009
    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
  1010
4add55336dfe Variable objects: automagically update values whenever changed.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 103
diff changeset
  1011
    debugger send: 'c' andWaitFor: GDBThreadGroupExitedEvent.
4add55336dfe Variable objects: automagically update values whenever changed.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 103
diff changeset
  1012
    debugger send: 'quit' andWait: false.
4add55336dfe Variable objects: automagically update values whenever changed.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 103
diff changeset
  1013
4add55336dfe Variable objects: automagically update values whenever changed.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 103
diff changeset
  1014
    "Created: / 01-02-2018 / 21:57:01 / Jan Vrany <jan.vrany@fit.cvut.cz>"
152
fab425b52c21 Refactor `GDBProcess` hierarchy to improve portability
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 144
diff changeset
  1015
    "Modified: / 18-10-2018 / 10:58:05 / 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
  1016
!
12c96f17fc53 Variable objects: invalidate variable object when thread on inferior terminates
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 104
diff changeset
  1017
12c96f17fc53 Variable objects: invalidate variable object when thread on inferior terminates
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 104
diff changeset
  1018
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
  1019
    "
12c96f17fc53 Variable objects: invalidate variable object when thread on inferior terminates
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 104
diff changeset
  1020
    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
  1021
    inferior terminated.
12c96f17fc53 Variable objects: invalidate variable object when thread on inferior terminates
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 104
diff changeset
  1022
    " 
12c96f17fc53 Variable objects: invalidate variable object when thread on inferior terminates
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 104
diff changeset
  1023
    | 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
  1024
12c96f17fc53 Variable objects: invalidate variable object when thread on inferior terminates
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 104
diff changeset
  1025
    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
  1026
    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
  1027
110
727d8a9e6d5d Variable objecys: added `GDBVariableObject >> #visualizer` and `#visualizer:`
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 109
diff changeset
  1028
    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
  1029
12c96f17fc53 Variable objects: invalidate variable object when thread on inferior terminates
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 104
diff changeset
  1030
12c96f17fc53 Variable objects: invalidate variable object when thread on inferior terminates
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 104
diff changeset
  1031
    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
  1032
    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
  1033
    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
  1034
12c96f17fc53 Variable objects: invalidate variable object when thread on inferior terminates
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 104
diff changeset
  1035
    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
  1036
    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
  1037
    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
  1038
    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
  1039
    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
  1040
    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
  1041
    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
  1042
    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
  1043
12c96f17fc53 Variable objects: invalidate variable object when thread on inferior terminates
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 104
diff changeset
  1044
    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
  1045
    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
  1046
    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
  1047
12c96f17fc53 Variable objects: invalidate variable object when thread on inferior terminates
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 104
diff changeset
  1048
    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
  1049
    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
  1050
    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
  1051
    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
  1052
    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
  1053
    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
  1054
    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
  1055
12c96f17fc53 Variable objects: invalidate variable object when thread on inferior terminates
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 104
diff changeset
  1056
    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
  1057
12c96f17fc53 Variable objects: invalidate variable object when thread on inferior terminates
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 104
diff changeset
  1058
    "Created: / 04-02-2018 / 22:04:59 / Jan Vrany <jan.vrany@fit.cvut.cz>"
152
fab425b52c21 Refactor `GDBProcess` hierarchy to improve portability
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 144
diff changeset
  1059
    "Modified: / 18-10-2018 / 10:58:18 / 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
  1060
!
12c96f17fc53 Variable objects: invalidate variable object when thread on inferior terminates
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 104
diff changeset
  1061
12c96f17fc53 Variable objects: invalidate variable object when thread on inferior terminates
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 104
diff changeset
  1062
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
  1063
    "
12c96f17fc53 Variable objects: invalidate variable object when thread on inferior terminates
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 104
diff changeset
  1064
    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
  1065
    frame returned
12c96f17fc53 Variable objects: invalidate variable object when thread on inferior terminates
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 104
diff changeset
  1066
    " 
12c96f17fc53 Variable objects: invalidate variable object when thread on inferior terminates
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 104
diff changeset
  1067
    | variables d |
12c96f17fc53 Variable objects: invalidate variable object when thread on inferior terminates
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 104
diff changeset
  1068
110
727d8a9e6d5d Variable objecys: added `GDBVariableObject >> #visualizer` and `#visualizer:`
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 109
diff changeset
  1069
    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
  1070
12c96f17fc53 Variable objects: invalidate variable object when thread on inferior terminates
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 104
diff changeset
  1071
    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
  1072
    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
  1073
12c96f17fc53 Variable objects: invalidate variable object when thread on inferior terminates
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 104
diff changeset
  1074
    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
  1075
    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
  1076
    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
  1077
    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
  1078
    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
  1079
    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
  1080
12c96f17fc53 Variable objects: invalidate variable object when thread on inferior terminates
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 104
diff changeset
  1081
    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
  1082
12c96f17fc53 Variable objects: invalidate variable object when thread on inferior terminates
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 104
diff changeset
  1083
    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
  1084
    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
  1085
    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
  1086
    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
  1087
12c96f17fc53 Variable objects: invalidate variable object when thread on inferior terminates
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 104
diff changeset
  1088
    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
  1089
12c96f17fc53 Variable objects: invalidate variable object when thread on inferior terminates
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 104
diff changeset
  1090
    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
  1091
    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
  1092
    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
  1093
    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
  1094
    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
  1095
12c96f17fc53 Variable objects: invalidate variable object when thread on inferior terminates
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 104
diff changeset
  1096
    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
  1097
12c96f17fc53 Variable objects: invalidate variable object when thread on inferior terminates
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 104
diff changeset
  1098
    "Created: / 12-02-2018 / 21:34:04 / Jan Vrany <jan.vrany@fit.cvut.cz>"
152
fab425b52c21 Refactor `GDBProcess` hierarchy to improve portability
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 144
diff changeset
  1099
    "Modified: / 18-10-2018 / 10:58:29 / 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
  1100
!
f57ce907abf4 Variable objects: added `GDBVariableObject >> #duplicate`
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 108
diff changeset
  1101
f57ce907abf4 Variable objects: added `GDBVariableObject >> #duplicate`
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 108
diff changeset
  1102
test_variables_06
f57ce907abf4 Variable objects: added `GDBVariableObject >> #duplicate`
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 108
diff changeset
  1103
    "
f57ce907abf4 Variable objects: added `GDBVariableObject >> #duplicate`
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 108
diff changeset
  1104
    This test tests GDBVariableObject >> duplicate
f57ce907abf4 Variable objects: added `GDBVariableObject >> #duplicate`
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 108
diff changeset
  1105
    " 
f57ce907abf4 Variable objects: added `GDBVariableObject >> #duplicate`
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 108
diff changeset
  1106
    | variables d1 d_i1 d_i2 |
f57ce907abf4 Variable objects: added `GDBVariableObject >> #duplicate`
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 108
diff changeset
  1107
110
727d8a9e6d5d Variable objecys: added `GDBVariableObject >> #visualizer` and `#visualizer:`
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 109
diff changeset
  1108
    debugger executable: GDBDebuggeesResource current binaryVariables1.
109
f57ce907abf4 Variable objects: added `GDBVariableObject >> #duplicate`
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 108
diff changeset
  1109
f57ce907abf4 Variable objects: added `GDBVariableObject >> #duplicate`
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 108
diff changeset
  1110
    debugger send: 'b set_data_i'.
f57ce907abf4 Variable objects: added `GDBVariableObject >> #duplicate`
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 108
diff changeset
  1111
    debugger send: 'r' andWaitFor: GDBStoppedEvent.
f57ce907abf4 Variable objects: added `GDBVariableObject >> #duplicate`
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 108
diff changeset
  1112
    debugger send: 'del'.
f57ce907abf4 Variable objects: added `GDBVariableObject >> #duplicate`
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 108
diff changeset
  1113
f57ce907abf4 Variable objects: added `GDBVariableObject >> #duplicate`
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 108
diff changeset
  1114
    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
  1115
    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
  1116
    self assert: variables third name = 'd'.
f57ce907abf4 Variable objects: added `GDBVariableObject >> #duplicate`
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 108
diff changeset
  1117
    self assert: variables third varobj expression = 'd'.   
f57ce907abf4 Variable objects: added `GDBVariableObject >> #duplicate`
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 108
diff changeset
  1118
    d1 := variables third varobj.
f57ce907abf4 Variable objects: added `GDBVariableObject >> #duplicate`
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 108
diff changeset
  1119
    self assert: d1 hasChildren.
f57ce907abf4 Variable objects: added `GDBVariableObject >> #duplicate`
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 108
diff changeset
  1120
    self assert: d1 expression = 'd'.
f57ce907abf4 Variable objects: added `GDBVariableObject >> #duplicate`
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 108
diff changeset
  1121
    self assert: d1 children size = 3.   
f57ce907abf4 Variable objects: added `GDBVariableObject >> #duplicate`
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 108
diff changeset
  1122
    d_i1 := d1 children first.
f57ce907abf4 Variable objects: added `GDBVariableObject >> #duplicate`
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 108
diff changeset
  1123
    self assert: d_i1 expression = 'i'.
f57ce907abf4 Variable objects: added `GDBVariableObject >> #duplicate`
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 108
diff changeset
  1124
    self assert: d_i1 value = '1'.
f57ce907abf4 Variable objects: added `GDBVariableObject >> #duplicate`
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 108
diff changeset
  1125
    self assert: d_i1 hasChanged not.
f57ce907abf4 Variable objects: added `GDBVariableObject >> #duplicate`
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 108
diff changeset
  1126
    self assert: d_i1 hasChildren not .
f57ce907abf4 Variable objects: added `GDBVariableObject >> #duplicate`
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 108
diff changeset
  1127
f57ce907abf4 Variable objects: added `GDBVariableObject >> #duplicate`
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 108
diff changeset
  1128
    d_i2 := d_i1 duplicate.
f57ce907abf4 Variable objects: added `GDBVariableObject >> #duplicate`
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 108
diff changeset
  1129
    self assert: d_i2 expression = '(d).i'.
f57ce907abf4 Variable objects: added `GDBVariableObject >> #duplicate`
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 108
diff changeset
  1130
    self assert: d_i2 path = '(d).i'.
f57ce907abf4 Variable objects: added `GDBVariableObject >> #duplicate`
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 108
diff changeset
  1131
    self assert: d_i2 value = '1'.
f57ce907abf4 Variable objects: added `GDBVariableObject >> #duplicate`
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 108
diff changeset
  1132
    self assert: d_i2 hasChanged not.
f57ce907abf4 Variable objects: added `GDBVariableObject >> #duplicate`
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 108
diff changeset
  1133
    self assert: d_i2 hasChildren not .
f57ce907abf4 Variable objects: added `GDBVariableObject >> #duplicate`
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 108
diff changeset
  1134
    
f57ce907abf4 Variable objects: added `GDBVariableObject >> #duplicate`
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 108
diff changeset
  1135
f57ce907abf4 Variable objects: added `GDBVariableObject >> #duplicate`
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 108
diff changeset
  1136
    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
  1137
    debugger send: 'finish' andWaitFor: GDBStoppedEvent.
f57ce907abf4 Variable objects: added `GDBVariableObject >> #duplicate`
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 108
diff changeset
  1138
    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
  1139
    self assert: d_i2 value = '12'.
f57ce907abf4 Variable objects: added `GDBVariableObject >> #duplicate`
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 108
diff changeset
  1140
    self assert: d_i2 hasChanged.
f57ce907abf4 Variable objects: added `GDBVariableObject >> #duplicate`
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 108
diff changeset
  1141
    self assert: d_i2 hasChanged.
f57ce907abf4 Variable objects: added `GDBVariableObject >> #duplicate`
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 108
diff changeset
  1142
    self assert: d_i2 hasChanged.
f57ce907abf4 Variable objects: added `GDBVariableObject >> #duplicate`
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 108
diff changeset
  1143
f57ce907abf4 Variable objects: added `GDBVariableObject >> #duplicate`
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 108
diff changeset
  1144
    debugger send: 's' andWaitFor: GDBStoppedEvent.
f57ce907abf4 Variable objects: added `GDBVariableObject >> #duplicate`
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 108
diff changeset
  1145
    self assert: d_i2 value = '12'.
f57ce907abf4 Variable objects: added `GDBVariableObject >> #duplicate`
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 108
diff changeset
  1146
    self assert: d_i2 hasChanged not.
f57ce907abf4 Variable objects: added `GDBVariableObject >> #duplicate`
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 108
diff changeset
  1147
f57ce907abf4 Variable objects: added `GDBVariableObject >> #duplicate`
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 108
diff changeset
  1148
    debugger send: 'c' andWaitFor: GDBThreadGroupExitedEvent.
f57ce907abf4 Variable objects: added `GDBVariableObject >> #duplicate`
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 108
diff changeset
  1149
    debugger send: 'quit' andWait: false.
f57ce907abf4 Variable objects: added `GDBVariableObject >> #duplicate`
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 108
diff changeset
  1150
f57ce907abf4 Variable objects: added `GDBVariableObject >> #duplicate`
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 108
diff changeset
  1151
    "Created: / 13-02-2018 / 22:27:13 / Jan Vrany <jan.vrany@fit.cvut.cz>"
152
fab425b52c21 Refactor `GDBProcess` hierarchy to improve portability
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 144
diff changeset
  1152
    "Modified: / 18-10-2018 / 10:58:33 / 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
  1153
!
f57ce907abf4 Variable objects: added `GDBVariableObject >> #duplicate`
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 108
diff changeset
  1154
f57ce907abf4 Variable objects: added `GDBVariableObject >> #duplicate`
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 108
diff changeset
  1155
test_variables_07
f57ce907abf4 Variable objects: added `GDBVariableObject >> #duplicate`
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 108
diff changeset
  1156
    | stack v1 v2 v3 |
f57ce907abf4 Variable objects: added `GDBVariableObject >> #duplicate`
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 108
diff changeset
  1157
f57ce907abf4 Variable objects: added `GDBVariableObject >> #duplicate`
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 108
diff changeset
  1158
    debugger executable: GDBDebuggeesResource current binaryFactorial1.
f57ce907abf4 Variable objects: added `GDBVariableObject >> #duplicate`
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 108
diff changeset
  1159
    self assert: debugger breakpoints isEmpty.
f57ce907abf4 Variable objects: added `GDBVariableObject >> #duplicate`
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 108
diff changeset
  1160
f57ce907abf4 Variable objects: added `GDBVariableObject >> #duplicate`
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 108
diff changeset
  1161
    debugger send: 'b factorial'.
f57ce907abf4 Variable objects: added `GDBVariableObject >> #duplicate`
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 108
diff changeset
  1162
    self assert: debugger breakpoints size == 1.
f57ce907abf4 Variable objects: added `GDBVariableObject >> #duplicate`
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 108
diff changeset
  1163
f57ce907abf4 Variable objects: added `GDBVariableObject >> #duplicate`
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 108
diff changeset
  1164
    debugger send: 'r' andWaitFor: GDBStoppedEvent.
f57ce907abf4 Variable objects: added `GDBVariableObject >> #duplicate`
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 108
diff changeset
  1165
    debugger send: 'c' andWaitFor: GDBStoppedEvent.
f57ce907abf4 Variable objects: added `GDBVariableObject >> #duplicate`
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 108
diff changeset
  1166
f57ce907abf4 Variable objects: added `GDBVariableObject >> #duplicate`
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 108
diff changeset
  1167
    stack := debugger selectedInferior threads first stack.   
f57ce907abf4 Variable objects: added `GDBVariableObject >> #duplicate`
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 108
diff changeset
  1168
f57ce907abf4 Variable objects: added `GDBVariableObject >> #duplicate`
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 108
diff changeset
  1169
    debugger selectFrame: stack third.
f57ce907abf4 Variable objects: added `GDBVariableObject >> #duplicate`
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 108
diff changeset
  1170
    v1 := debugger evaluate: 'i'  in: stack first.
f57ce907abf4 Variable objects: added `GDBVariableObject >> #duplicate`
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 108
diff changeset
  1171
    v2 := debugger evaluate: 'i'  in: stack second.
f57ce907abf4 Variable objects: added `GDBVariableObject >> #duplicate`
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 108
diff changeset
  1172
    self assert: v1 value = '4'.
f57ce907abf4 Variable objects: added `GDBVariableObject >> #duplicate`
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 108
diff changeset
  1173
    self assert: v2 value = '5'.
f57ce907abf4 Variable objects: added `GDBVariableObject >> #duplicate`
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 108
diff changeset
  1174
f57ce907abf4 Variable objects: added `GDBVariableObject >> #duplicate`
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 108
diff changeset
  1175
    debugger selectFrame: stack first.
f57ce907abf4 Variable objects: added `GDBVariableObject >> #duplicate`
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 108
diff changeset
  1176
    v3 := debugger evaluate: 'i'.
f57ce907abf4 Variable objects: added `GDBVariableObject >> #duplicate`
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 108
diff changeset
  1177
    self assert: v3 value = '4'.  
f57ce907abf4 Variable objects: added `GDBVariableObject >> #duplicate`
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 108
diff changeset
  1178
f57ce907abf4 Variable objects: added `GDBVariableObject >> #duplicate`
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 108
diff changeset
  1179
    debugger send: 'del'.
f57ce907abf4 Variable objects: added `GDBVariableObject >> #duplicate`
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 108
diff changeset
  1180
    self assert: debugger breakpoints isEmpty.
f57ce907abf4 Variable objects: added `GDBVariableObject >> #duplicate`
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 108
diff changeset
  1181
f57ce907abf4 Variable objects: added `GDBVariableObject >> #duplicate`
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 108
diff changeset
  1182
    debugger send: 'c' andWaitFor: GDBThreadGroupExitedEvent.
f57ce907abf4 Variable objects: added `GDBVariableObject >> #duplicate`
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 108
diff changeset
  1183
    self assert: debugger breakpoints isEmpty.
f57ce907abf4 Variable objects: added `GDBVariableObject >> #duplicate`
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 108
diff changeset
  1184
f57ce907abf4 Variable objects: added `GDBVariableObject >> #duplicate`
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 108
diff changeset
  1185
    debugger send: 'quit' andWait: false.
f57ce907abf4 Variable objects: added `GDBVariableObject >> #duplicate`
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 108
diff changeset
  1186
f57ce907abf4 Variable objects: added `GDBVariableObject >> #duplicate`
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 108
diff changeset
  1187
    "Created: / 20-03-2018 / 22:32:00 / Jan Vrany <jan.vrany@fit.cvut.cz>"
152
fab425b52c21 Refactor `GDBProcess` hierarchy to improve portability
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 144
diff changeset
  1188
    "Modified: / 18-10-2018 / 10:58:42 / 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
  1189
!
c939f8a4c3cd Added support for dynamic varobjs
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 120
diff changeset
  1190
c939f8a4c3cd Added support for dynamic varobjs
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 120
diff changeset
  1191
test_variables_08
c939f8a4c3cd Added support for dynamic varobjs
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 120
diff changeset
  1192
    "
c939f8a4c3cd Added support for dynamic varobjs
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 120
diff changeset
  1193
    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
  1194
    "
123
1e2c548b0cde Fixed `GDBVariableObject >> #duplicate` for children od dynamic varobjs
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 122
diff changeset
  1195
    | c1 c1_cdr c1_cdr_cdr |
122
c939f8a4c3cd Added support for dynamic varobjs
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 120
diff changeset
  1196
c939f8a4c3cd Added support for dynamic varobjs
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 120
diff changeset
  1197
    debugger executable: GDBDebuggeesResource current binaryPyVarobj.
c939f8a4c3cd Added support for dynamic varobjs
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 120
diff changeset
  1198
    self assert: debugger breakpoints isEmpty.
c939f8a4c3cd Added support for dynamic varobjs
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 120
diff changeset
  1199
c939f8a4c3cd Added support for dynamic varobjs
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 120
diff changeset
  1200
    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
  1201
            / 'c' / 'py-varobj.py') pathName.
c939f8a4c3cd Added support for dynamic varobjs
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 120
diff changeset
  1202
    debugger enablePrettyPrinting.
c939f8a4c3cd Added support for dynamic varobjs
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 120
diff changeset
  1203
    debugger send: 'b py-varobj.c:22'.
c939f8a4c3cd Added support for dynamic varobjs
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 120
diff changeset
  1204
    debugger send: 'r'.
c939f8a4c3cd Added support for dynamic varobjs
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 120
diff changeset
  1205
c939f8a4c3cd Added support for dynamic varobjs
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 120
diff changeset
  1206
    c1 := debugger evaluate: '&c1'.
c939f8a4c3cd Added support for dynamic varobjs
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 120
diff changeset
  1207
    self assert: c1 isDynamic.
c939f8a4c3cd Added support for dynamic varobjs
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 120
diff changeset
  1208
    self assert: c1 path = '&c1'.
c939f8a4c3cd Added support for dynamic varobjs
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 120
diff changeset
  1209
c939f8a4c3cd Added support for dynamic varobjs
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 120
diff changeset
  1210
    c1_cdr := c1 children second.
c939f8a4c3cd Added support for dynamic varobjs
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 120
diff changeset
  1211
    self assert: c1_cdr expression = 'cdr'.
c939f8a4c3cd Added support for dynamic varobjs
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 120
diff changeset
  1212
    self assert: c1_cdr isDynamic.
c939f8a4c3cd Added support for dynamic varobjs
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 120
diff changeset
  1213
    self assert: c1_cdr parent == c1.
c939f8a4c3cd Added support for dynamic varobjs
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 120
diff changeset
  1214
    self should: [ c1_cdr path ] raise: GDBError.
c939f8a4c3cd Added support for dynamic varobjs
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 120
diff changeset
  1215
c939f8a4c3cd Added support for dynamic varobjs
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 120
diff changeset
  1216
    c1_cdr_cdr := c1_cdr children second.
c939f8a4c3cd Added support for dynamic varobjs
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 120
diff changeset
  1217
    self assert: c1_cdr_cdr expression = 'cdr'.
c939f8a4c3cd Added support for dynamic varobjs
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 120
diff changeset
  1218
    self assert: c1_cdr_cdr isDynamic.
c939f8a4c3cd Added support for dynamic varobjs
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 120
diff changeset
  1219
    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
  1220
    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
  1221
c939f8a4c3cd Added support for dynamic varobjs
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 120
diff changeset
  1222
    debugger send: 'quit' andWait: false.
c939f8a4c3cd Added support for dynamic varobjs
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 120
diff changeset
  1223
c939f8a4c3cd Added support for dynamic varobjs
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 120
diff changeset
  1224
    "Created: / 01-06-2018 / 16:27:29 / Jan Vrany <jan.vrany@fit.cvut.cz>"
152
fab425b52c21 Refactor `GDBProcess` hierarchy to improve portability
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 144
diff changeset
  1225
    "Modified: / 18-10-2018 / 10:58:50 / Jan Vrany <jan.vrany@fit.cvut.cz>"
123
1e2c548b0cde Fixed `GDBVariableObject >> #duplicate` for children od dynamic varobjs
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 122
diff changeset
  1226
!
1e2c548b0cde Fixed `GDBVariableObject >> #duplicate` for children od dynamic varobjs
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 122
diff changeset
  1227
1e2c548b0cde Fixed `GDBVariableObject >> #duplicate` for children od dynamic varobjs
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 122
diff changeset
  1228
test_variables_09
1e2c548b0cde Fixed `GDBVariableObject >> #duplicate` for children od dynamic varobjs
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 122
diff changeset
  1229
    "
1e2c548b0cde Fixed `GDBVariableObject >> #duplicate` for children od dynamic varobjs
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 122
diff changeset
  1230
    Test #duplicate on children of a dynamic varobj
1e2c548b0cde Fixed `GDBVariableObject >> #duplicate` for children od dynamic varobjs
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 122
diff changeset
  1231
    "
1e2c548b0cde Fixed `GDBVariableObject >> #duplicate` for children od dynamic varobjs
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 122
diff changeset
  1232
    | c1 c1_cdr c1_cdr_d  c1_cdr_d_cdr c1_cdr_d_cdr_d |
1e2c548b0cde Fixed `GDBVariableObject >> #duplicate` for children od dynamic varobjs
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 122
diff changeset
  1233
1e2c548b0cde Fixed `GDBVariableObject >> #duplicate` for children od dynamic varobjs
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 122
diff changeset
  1234
    debugger executable: GDBDebuggeesResource current binaryPyVarobj.
1e2c548b0cde Fixed `GDBVariableObject >> #duplicate` for children od dynamic varobjs
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 122
diff changeset
  1235
    self assert: debugger breakpoints isEmpty.
1e2c548b0cde Fixed `GDBVariableObject >> #duplicate` for children od dynamic varobjs
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 122
diff changeset
  1236
1e2c548b0cde Fixed `GDBVariableObject >> #duplicate` for children od dynamic varobjs
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 122
diff changeset
  1237
    debugger send: 'source ', ((Smalltalk getPackageDirectoryForPackage:self class package)
1e2c548b0cde Fixed `GDBVariableObject >> #duplicate` for children od dynamic varobjs
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 122
diff changeset
  1238
            / 'c' / 'py-varobj.py') pathName.
1e2c548b0cde Fixed `GDBVariableObject >> #duplicate` for children od dynamic varobjs
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 122
diff changeset
  1239
    debugger enablePrettyPrinting.
1e2c548b0cde Fixed `GDBVariableObject >> #duplicate` for children od dynamic varobjs
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 122
diff changeset
  1240
    debugger send: 'b py-varobj.c:22'.
1e2c548b0cde Fixed `GDBVariableObject >> #duplicate` for children od dynamic varobjs
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 122
diff changeset
  1241
    debugger send: 'r'.
1e2c548b0cde Fixed `GDBVariableObject >> #duplicate` for children od dynamic varobjs
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 122
diff changeset
  1242
1e2c548b0cde Fixed `GDBVariableObject >> #duplicate` for children od dynamic varobjs
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 122
diff changeset
  1243
    c1 := debugger evaluate: '&c1'.
1e2c548b0cde Fixed `GDBVariableObject >> #duplicate` for children od dynamic varobjs
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 122
diff changeset
  1244
    self assert: c1 isDynamic.
1e2c548b0cde Fixed `GDBVariableObject >> #duplicate` for children od dynamic varobjs
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 122
diff changeset
  1245
    self assert: c1 path = '&c1'.
1e2c548b0cde Fixed `GDBVariableObject >> #duplicate` for children od dynamic varobjs
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 122
diff changeset
  1246
1e2c548b0cde Fixed `GDBVariableObject >> #duplicate` for children od dynamic varobjs
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 122
diff changeset
  1247
    c1_cdr := c1 children second.
1e2c548b0cde Fixed `GDBVariableObject >> #duplicate` for children od dynamic varobjs
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 122
diff changeset
  1248
    self assert: c1_cdr expression = 'cdr'.
1e2c548b0cde Fixed `GDBVariableObject >> #duplicate` for children od dynamic varobjs
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 122
diff changeset
  1249
    self assert: c1_cdr isDynamic.
1e2c548b0cde Fixed `GDBVariableObject >> #duplicate` for children od dynamic varobjs
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 122
diff changeset
  1250
    self assert: c1_cdr parent == c1.
1e2c548b0cde Fixed `GDBVariableObject >> #duplicate` for children od dynamic varobjs
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 122
diff changeset
  1251
1e2c548b0cde Fixed `GDBVariableObject >> #duplicate` for children od dynamic varobjs
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 122
diff changeset
  1252
    c1_cdr_d := c1_cdr duplicate.
1e2c548b0cde Fixed `GDBVariableObject >> #duplicate` for children od dynamic varobjs
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 122
diff changeset
  1253
    self assert: c1_cdr_d ~= c1_cdr.
1e2c548b0cde Fixed `GDBVariableObject >> #duplicate` for children od dynamic varobjs
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 122
diff changeset
  1254
    self assert: c1_cdr_d parent ~= c1_cdr parent.
1e2c548b0cde Fixed `GDBVariableObject >> #duplicate` for children od dynamic varobjs
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 122
diff changeset
  1255
1e2c548b0cde Fixed `GDBVariableObject >> #duplicate` for children od dynamic varobjs
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 122
diff changeset
  1256
    c1_cdr_d_cdr := c1_cdr_d children second.
1e2c548b0cde Fixed `GDBVariableObject >> #duplicate` for children od dynamic varobjs
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 122
diff changeset
  1257
    self assert: c1_cdr_d_cdr expression = 'cdr'.
1e2c548b0cde Fixed `GDBVariableObject >> #duplicate` for children od dynamic varobjs
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 122
diff changeset
  1258
    self assert: c1_cdr_d_cdr isDynamic.
1e2c548b0cde Fixed `GDBVariableObject >> #duplicate` for children od dynamic varobjs
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 122
diff changeset
  1259
    self assert: c1_cdr_d_cdr parent == c1_cdr_d
1e2c548b0cde Fixed `GDBVariableObject >> #duplicate` for children od dynamic varobjs
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 122
diff changeset
  1260
.
1e2c548b0cde Fixed `GDBVariableObject >> #duplicate` for children od dynamic varobjs
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 122
diff changeset
  1261
    c1_cdr_d_cdr_d := c1_cdr_d_cdr duplicate.
1e2c548b0cde Fixed `GDBVariableObject >> #duplicate` for children od dynamic varobjs
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 122
diff changeset
  1262
    self assert: c1_cdr_d_cdr_d ~= c1_cdr_d_cdr.
1e2c548b0cde Fixed `GDBVariableObject >> #duplicate` for children od dynamic varobjs
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 122
diff changeset
  1263
    self assert: c1_cdr_d_cdr_d parent ~= c1_cdr_d_cdr parent.
1e2c548b0cde Fixed `GDBVariableObject >> #duplicate` for children od dynamic varobjs
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 122
diff changeset
  1264
1e2c548b0cde Fixed `GDBVariableObject >> #duplicate` for children od dynamic varobjs
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 122
diff changeset
  1265
    debugger send: 'quit' andWait: false.
1e2c548b0cde Fixed `GDBVariableObject >> #duplicate` for children od dynamic varobjs
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 122
diff changeset
  1266
1e2c548b0cde Fixed `GDBVariableObject >> #duplicate` for children od dynamic varobjs
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 122
diff changeset
  1267
    "Created: / 04-06-2018 / 15:08:29 / Jan Vrany <jan.vrany@fit.cvut.cz>"
152
fab425b52c21 Refactor `GDBProcess` hierarchy to improve portability
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 144
diff changeset
  1268
    "Modified: / 18-10-2018 / 10:58:55 / Jan Vrany <jan.vrany@fit.cvut.cz>"
127
1254cc005f57 Added support for 'synthetic' frame variables
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 126
diff changeset
  1269
!
1254cc005f57 Added support for 'synthetic' frame variables
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 126
diff changeset
  1270
1254cc005f57 Added support for 'synthetic' frame variables
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 126
diff changeset
  1271
test_variables_10a
1254cc005f57 Added support for 'synthetic' frame variables
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 126
diff changeset
  1272
    "
1254cc005f57 Added support for 'synthetic' frame variables
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 126
diff changeset
  1273
    Test 'synthatic' variables
1254cc005f57 Added support for 'synthetic' frame variables
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 126
diff changeset
  1274
    "
1254cc005f57 Added support for 'synthetic' frame variables
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 126
diff changeset
  1275
    | stack |
1254cc005f57 Added support for 'synthetic' frame variables
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 126
diff changeset
  1276
1254cc005f57 Added support for 'synthetic' frame variables
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 126
diff changeset
  1277
    debugger executable: GDBDebuggeesResource current binaryFactorial1.
1254cc005f57 Added support for 'synthetic' frame variables
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 126
diff changeset
  1278
    self assert: debugger breakpoints isEmpty.
1254cc005f57 Added support for 'synthetic' frame variables
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 126
diff changeset
  1279
1254cc005f57 Added support for 'synthetic' frame variables
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 126
diff changeset
  1280
    debugger send: 'source ', ((Smalltalk getPackageDirectoryForPackage:self class package)
1254cc005f57 Added support for 'synthetic' frame variables
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 126
diff changeset
  1281
            / 'c' / 'py-framedecorator.py') pathName.
1254cc005f57 Added support for 'synthetic' frame variables
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 126
diff changeset
  1282
    debugger enableFrameFilters.
1254cc005f57 Added support for 'synthetic' frame variables
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 126
diff changeset
  1283
    debugger send: 'b factorial'.
1254cc005f57 Added support for 'synthetic' frame variables
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 126
diff changeset
  1284
    debugger send: 'r' andWaitFor: GDBStoppedEvent.
1254cc005f57 Added support for 'synthetic' frame variables
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 126
diff changeset
  1285
1254cc005f57 Added support for 'synthetic' frame variables
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 126
diff changeset
  1286
    stack := debugger selectedInferior threads first stack.
1254cc005f57 Added support for 'synthetic' frame variables
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 126
diff changeset
  1287
    self assert: stack first variables size == 7.
1254cc005f57 Added support for 'synthetic' frame variables
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 126
diff changeset
  1288
    self assert: stack first variables first name = 'syntheticArg0'.
1254cc005f57 Added support for 'synthetic' frame variables
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 126
diff changeset
  1289
    self assert: stack first variables first varobj isNil.
1254cc005f57 Added support for 'synthetic' frame variables
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 126
diff changeset
  1290
    self assert: stack first variables fourth name = 'i'.
1254cc005f57 Added support for 'synthetic' frame variables
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 126
diff changeset
  1291
    self assert: stack first variables fourth varobj notNil.
1254cc005f57 Added support for 'synthetic' frame variables
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 126
diff changeset
  1292
    "
1254cc005f57 Added support for 'synthetic' frame variables
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 126
diff changeset
  1293
    VDBFrameApplication new
1254cc005f57 Added support for 'synthetic' frame variables
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 126
diff changeset
  1294
        debugger: debugger;
1254cc005f57 Added support for 'synthetic' frame variables
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 126
diff changeset
  1295
        frame: stack first;
1254cc005f57 Added support for 'synthetic' frame variables
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 126
diff changeset
  1296
        open.
1254cc005f57 Added support for 'synthetic' frame variables
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 126
diff changeset
  1297
    "
1254cc005f57 Added support for 'synthetic' frame variables
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 126
diff changeset
  1298
    debugger send: 'quit' andWait: false.
1254cc005f57 Added support for 'synthetic' frame variables
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 126
diff changeset
  1299
1254cc005f57 Added support for 'synthetic' frame variables
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 126
diff changeset
  1300
    "Created: / 05-07-2018 / 11:48:58 / Jan Vrany <jan.vrany@fit.cvut.cz>"
152
fab425b52c21 Refactor `GDBProcess` hierarchy to improve portability
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 144
diff changeset
  1301
    "Modified: / 18-10-2018 / 10:59:03 / Jan Vrany <jan.vrany@fit.cvut.cz>"
56
20989de12cfb More work on variables + tests
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
  1302
! !
20989de12cfb More work on variables + tests
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
  1303
66
43c941cacd43 Added test for -exec-run & -exec-interrupt
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 63
diff changeset
  1304
!GDBDebuggerTestsR class methodsFor:'documentation'!
43c941cacd43 Added test for -exec-run & -exec-interrupt
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 63
diff changeset
  1305
43c941cacd43 Added test for -exec-run & -exec-interrupt
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 63
diff changeset
  1306
version_HG
43c941cacd43 Added test for -exec-run & -exec-interrupt
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 63
diff changeset
  1307
43c941cacd43 Added test for -exec-run & -exec-interrupt
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 63
diff changeset
  1308
    ^ '$Changeset: <not expanded> $'
43c941cacd43 Added test for -exec-run & -exec-interrupt
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 63
diff changeset
  1309
! !
43c941cacd43 Added test for -exec-run & -exec-interrupt
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 63
diff changeset
  1310