GDBMI_break_passcount.st
author Jan Vrany <jan.vrany@labware.com>
Mon, 28 Jun 2021 12:43:27 +0100
changeset 231 dcadeaddd0c8
parent 91 472a4841a8b6
child 259 651864c2aa29
permissions -rw-r--r--
Update (internal) list of breakpoints when creating / modifying / deleting using MI commands This commit correctly updates internal breakpoint list when breakpoints are manipulated through MI. In that case, GDB does not generate breakpoint events, so this commit adds command post-execute hook that injects an artifical breakpoint event back onto an event queue.
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: 78
diff changeset
     1
"
472a4841a8b6 License this package under 'GNU Lesser General Public License'
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 78
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: 78
diff changeset
     3
Copyright (C) 2015-now Jan Vrany
231
dcadeaddd0c8 Update (internal) list of breakpoints when creating / modifying / deleting using MI commands
Jan Vrany <jan.vrany@labware.com>
parents: 91
diff changeset
     4
Copyright (C) 2021 LabWare
91
472a4841a8b6 License this package under 'GNU Lesser General Public License'
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 78
diff changeset
     5
472a4841a8b6 License this package under 'GNU Lesser General Public License'
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 78
diff changeset
     6
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: 78
diff changeset
     7
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: 78
diff changeset
     8
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: 78
diff changeset
     9
version 2.1 of the License. 
472a4841a8b6 License this package under 'GNU Lesser General Public License'
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 78
diff changeset
    10
472a4841a8b6 License this package under 'GNU Lesser General Public License'
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 78
diff changeset
    11
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: 78
diff changeset
    12
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: 78
diff changeset
    13
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: 78
diff changeset
    14
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: 78
diff changeset
    15
472a4841a8b6 License this package under 'GNU Lesser General Public License'
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 78
diff changeset
    16
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: 78
diff changeset
    17
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: 78
diff changeset
    18
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: 78
diff changeset
    19
"
12
568a2971c977 Generated classes for MI commands.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    20
"{ Package: 'jv:libgdbs' }"
568a2971c977 Generated classes for MI commands.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    21
78
c24e7d8bc881 BUpdated build files.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 12
diff changeset
    22
"{ NameSpace: Smalltalk }"
c24e7d8bc881 BUpdated build files.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 12
diff changeset
    23
12
568a2971c977 Generated classes for MI commands.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    24
GDBMICommand subclass:#GDBMI_break_passcount
568a2971c977 Generated classes for MI commands.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    25
	instanceVariableNames:''
568a2971c977 Generated classes for MI commands.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    26
	classVariableNames:''
568a2971c977 Generated classes for MI commands.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    27
	poolDictionaries:''
568a2971c977 Generated classes for MI commands.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    28
	category:'GDB-Core-Commands-MI'
568a2971c977 Generated classes for MI commands.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    29
!
568a2971c977 Generated classes for MI commands.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    30
568a2971c977 Generated classes for MI commands.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    31
!GDBMI_break_passcount class methodsFor:'documentation'!
568a2971c977 Generated classes for MI commands.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    32
91
472a4841a8b6 License this package under 'GNU Lesser General Public License'
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 78
diff changeset
    33
copyright
472a4841a8b6 License this package under 'GNU Lesser General Public License'
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 78
diff changeset
    34
"
472a4841a8b6 License this package under 'GNU Lesser General Public License'
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 78
diff changeset
    35
jv:libgdbs - GNU Debugger Interface Library
472a4841a8b6 License this package under 'GNU Lesser General Public License'
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 78
diff changeset
    36
Copyright (C) 2015-now Jan Vrany
231
dcadeaddd0c8 Update (internal) list of breakpoints when creating / modifying / deleting using MI commands
Jan Vrany <jan.vrany@labware.com>
parents: 91
diff changeset
    37
Copyright (C) 2021 LabWare
91
472a4841a8b6 License this package under 'GNU Lesser General Public License'
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 78
diff changeset
    38
472a4841a8b6 License this package under 'GNU Lesser General Public License'
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 78
diff changeset
    39
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: 78
diff changeset
    40
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: 78
diff changeset
    41
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: 78
diff changeset
    42
version 2.1 of the License. 
472a4841a8b6 License this package under 'GNU Lesser General Public License'
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 78
diff changeset
    43
472a4841a8b6 License this package under 'GNU Lesser General Public License'
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 78
diff changeset
    44
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: 78
diff changeset
    45
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: 78
diff changeset
    46
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: 78
diff changeset
    47
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: 78
diff changeset
    48
472a4841a8b6 License this package under 'GNU Lesser General Public License'
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 78
diff changeset
    49
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: 78
diff changeset
    50
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: 78
diff changeset
    51
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: 78
diff changeset
    52
"
472a4841a8b6 License this package under 'GNU Lesser General Public License'
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 78
diff changeset
    53
!
472a4841a8b6 License this package under 'GNU Lesser General Public License'
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 78
diff changeset
    54
12
568a2971c977 Generated classes for MI commands.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    55
documentation
568a2971c977 Generated classes for MI commands.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    56
"
568a2971c977 Generated classes for MI commands.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    57
The `-break-passcount' Command
568a2971c977 Generated classes for MI commands.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    58
------------------------------
568a2971c977 Generated classes for MI commands.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    59
568a2971c977 Generated classes for MI commands.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    60
Synopsis
568a2971c977 Generated classes for MI commands.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    61
........
568a2971c977 Generated classes for MI commands.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    62
568a2971c977 Generated classes for MI commands.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    63
      -break-passcount TRACEPOINT-NUMBER PASSCOUNT
568a2971c977 Generated classes for MI commands.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    64
568a2971c977 Generated classes for MI commands.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    65
   Set the passcount for tracepoint TRACEPOINT-NUMBER to PASSCOUNT.  If
568a2971c977 Generated classes for MI commands.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    66
the breakpoint referred to by TRACEPOINT-NUMBER is not a tracepoint,
568a2971c977 Generated classes for MI commands.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    67
error is emitted.  This corresponds to CLI command `passcount'.
568a2971c977 Generated classes for MI commands.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    68
568a2971c977 Generated classes for MI commands.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    69
568a2971c977 Generated classes for MI commands.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    70
"
568a2971c977 Generated classes for MI commands.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    71
! !
568a2971c977 Generated classes for MI commands.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    72
568a2971c977 Generated classes for MI commands.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    73
!GDBMI_break_passcount methodsFor:'accessing'!
568a2971c977 Generated classes for MI commands.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    74
568a2971c977 Generated classes for MI commands.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    75
operation
568a2971c977 Generated classes for MI commands.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    76
	^ 'break-passcount'
568a2971c977 Generated classes for MI commands.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    77
! !
568a2971c977 Generated classes for MI commands.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    78
231
dcadeaddd0c8 Update (internal) list of breakpoints when creating / modifying / deleting using MI commands
Jan Vrany <jan.vrany@labware.com>
parents: 91
diff changeset
    79
!GDBMI_break_passcount methodsFor:'accessing-descriptors'!
dcadeaddd0c8 Update (internal) list of breakpoints when creating / modifying / deleting using MI commands
Jan Vrany <jan.vrany@labware.com>
parents: 91
diff changeset
    80
dcadeaddd0c8 Update (internal) list of breakpoints when creating / modifying / deleting using MI commands
Jan Vrany <jan.vrany@labware.com>
parents: 91
diff changeset
    81
resultDescription
dcadeaddd0c8 Update (internal) list of breakpoints when creating / modifying / deleting using MI commands
Jan Vrany <jan.vrany@labware.com>
parents: 91
diff changeset
    82
    ^ (super resultDescription)
dcadeaddd0c8 Update (internal) list of breakpoints when creating / modifying / deleting using MI commands
Jan Vrany <jan.vrany@labware.com>
parents: 91
diff changeset
    83
        define:#bkpt as:GDBBreakpoint;
dcadeaddd0c8 Update (internal) list of breakpoints when creating / modifying / deleting using MI commands
Jan Vrany <jan.vrany@labware.com>
parents: 91
diff changeset
    84
        yourself
dcadeaddd0c8 Update (internal) list of breakpoints when creating / modifying / deleting using MI commands
Jan Vrany <jan.vrany@labware.com>
parents: 91
diff changeset
    85
dcadeaddd0c8 Update (internal) list of breakpoints when creating / modifying / deleting using MI commands
Jan Vrany <jan.vrany@labware.com>
parents: 91
diff changeset
    86
    "Created: / 22-05-2021 / 15:28:49 / 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: 91
diff changeset
    87
! !
dcadeaddd0c8 Update (internal) list of breakpoints when creating / modifying / deleting using MI commands
Jan Vrany <jan.vrany@labware.com>
parents: 91
diff changeset
    88
dcadeaddd0c8 Update (internal) list of breakpoints when creating / modifying / deleting using MI commands
Jan Vrany <jan.vrany@labware.com>
parents: 91
diff changeset
    89
!GDBMI_break_passcount methodsFor:'hooks'!
dcadeaddd0c8 Update (internal) list of breakpoints when creating / modifying / deleting using MI commands
Jan Vrany <jan.vrany@labware.com>
parents: 91
diff changeset
    90
dcadeaddd0c8 Update (internal) list of breakpoints when creating / modifying / deleting using MI commands
Jan Vrany <jan.vrany@labware.com>
parents: 91
diff changeset
    91
postExecuteIn: debugger result: result 
dcadeaddd0c8 Update (internal) list of breakpoints when creating / modifying / deleting using MI commands
Jan Vrany <jan.vrany@labware.com>
parents: 91
diff changeset
    92
    result isDone ifTrue: [ 
dcadeaddd0c8 Update (internal) list of breakpoints when creating / modifying / deleting using MI commands
Jan Vrany <jan.vrany@labware.com>
parents: 91
diff changeset
    93
        | event |
dcadeaddd0c8 Update (internal) list of breakpoints when creating / modifying / deleting using MI commands
Jan Vrany <jan.vrany@labware.com>
parents: 91
diff changeset
    94
        event := GDBBreakpointModifiedEvent new.
dcadeaddd0c8 Update (internal) list of breakpoints when creating / modifying / deleting using MI commands
Jan Vrany <jan.vrany@labware.com>
parents: 91
diff changeset
    95
        self assert: (result propertyAt: #bkpt) notNil.
dcadeaddd0c8 Update (internal) list of breakpoints when creating / modifying / deleting using MI commands
Jan Vrany <jan.vrany@labware.com>
parents: 91
diff changeset
    96
        event _bkpt: (Array with: (result propertyAt: #bkpt)).
dcadeaddd0c8 Update (internal) list of breakpoints when creating / modifying / deleting using MI commands
Jan Vrany <jan.vrany@labware.com>
parents: 91
diff changeset
    97
        debugger push: event
dcadeaddd0c8 Update (internal) list of breakpoints when creating / modifying / deleting using MI commands
Jan Vrany <jan.vrany@labware.com>
parents: 91
diff changeset
    98
    ].
dcadeaddd0c8 Update (internal) list of breakpoints when creating / modifying / deleting using MI commands
Jan Vrany <jan.vrany@labware.com>
parents: 91
diff changeset
    99
dcadeaddd0c8 Update (internal) list of breakpoints when creating / modifying / deleting using MI commands
Jan Vrany <jan.vrany@labware.com>
parents: 91
diff changeset
   100
    "Created: / 22-05-2021 / 15:31:20 / 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: 91
diff changeset
   101
    "Modified: / 28-06-2021 / 12:35:05 / 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: 91
diff changeset
   102
! !
dcadeaddd0c8 Update (internal) list of breakpoints when creating / modifying / deleting using MI commands
Jan Vrany <jan.vrany@labware.com>
parents: 91
diff changeset
   103