GDBMemoryDump.st
author Jan Vrany <jan.vrany@fit.cvut.cz>
Mon, 25 Feb 2019 17:55:20 +0000
changeset 177 e7bd05df3d6b
parent 126 fb73b0af430b
child 259 651864c2aa29
permissions -rw-r--r--
Introduce new internal API `GDBDebuggerObject >> updateFrom:` to update one ("old") object with another one ("new"). This is used in cases when we want to preserve an identity of API objects.
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
97
b17c889076e4 Added API for memory dumps
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
     1
"
b17c889076e4 Added API for memory dumps
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
     2
jv:libgdbs - GNU Debugger Interface Library
b17c889076e4 Added API for memory dumps
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
     3
Copyright (C) 2015-now Jan Vrany
b17c889076e4 Added API for memory dumps
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
     4
b17c889076e4 Added API for memory dumps
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
     5
This library is free software; you can redistribute it and/or
b17c889076e4 Added API for memory dumps
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
     6
modify it under the terms of the GNU Lesser General Public
b17c889076e4 Added API for memory dumps
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
     7
License as published by the Free Software Foundation; either
b17c889076e4 Added API for memory dumps
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
     8
version 2.1 of the License. 
b17c889076e4 Added API for memory dumps
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
     9
b17c889076e4 Added API for memory dumps
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    10
This library is distributed in the hope that it will be useful,
b17c889076e4 Added API for memory dumps
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    11
but WITHOUT ANY WARRANTY; without even the implied warranty of
b17c889076e4 Added API for memory dumps
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    12
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
b17c889076e4 Added API for memory dumps
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    13
Lesser General Public License for more details.
b17c889076e4 Added API for memory dumps
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    14
b17c889076e4 Added API for memory dumps
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    15
You should have received a copy of the GNU Lesser General Public
b17c889076e4 Added API for memory dumps
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    16
License along with this library; if not, write to the Free Software
b17c889076e4 Added API for memory dumps
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    17
Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301  USA
b17c889076e4 Added API for memory dumps
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    18
"
b17c889076e4 Added API for memory dumps
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    19
"{ Package: 'jv:libgdbs' }"
b17c889076e4 Added API for memory dumps
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    20
b17c889076e4 Added API for memory dumps
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    21
"{ NameSpace: Smalltalk }"
b17c889076e4 Added API for memory dumps
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    22
b17c889076e4 Added API for memory dumps
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    23
GDBObject subclass:#GDBMemoryDump
b17c889076e4 Added API for memory dumps
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    24
	instanceVariableNames:'addr nr_bytes total_bytes next_row prev_row next_page prev_page
b17c889076e4 Added API for memory dumps
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    25
		memory'
b17c889076e4 Added API for memory dumps
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    26
	classVariableNames:''
b17c889076e4 Added API for memory dumps
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    27
	poolDictionaries:''
b17c889076e4 Added API for memory dumps
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    28
	category:'GDB-Core'
b17c889076e4 Added API for memory dumps
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    29
!
b17c889076e4 Added API for memory dumps
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    30
b17c889076e4 Added API for memory dumps
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    31
!GDBMemoryDump class methodsFor:'documentation'!
b17c889076e4 Added API for memory dumps
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    32
b17c889076e4 Added API for memory dumps
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    33
copyright
b17c889076e4 Added API for memory dumps
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    34
"
b17c889076e4 Added API for memory dumps
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    35
jv:libgdbs - GNU Debugger Interface Library
b17c889076e4 Added API for memory dumps
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    36
Copyright (C) 2015-now Jan Vrany
b17c889076e4 Added API for memory dumps
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    37
b17c889076e4 Added API for memory dumps
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    38
This library is free software; you can redistribute it and/or
b17c889076e4 Added API for memory dumps
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    39
modify it under the terms of the GNU Lesser General Public
b17c889076e4 Added API for memory dumps
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    40
License as published by the Free Software Foundation; either
b17c889076e4 Added API for memory dumps
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    41
version 2.1 of the License. 
b17c889076e4 Added API for memory dumps
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    42
b17c889076e4 Added API for memory dumps
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    43
This library is distributed in the hope that it will be useful,
b17c889076e4 Added API for memory dumps
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    44
but WITHOUT ANY WARRANTY; without even the implied warranty of
b17c889076e4 Added API for memory dumps
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    45
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
b17c889076e4 Added API for memory dumps
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    46
Lesser General Public License for more details.
b17c889076e4 Added API for memory dumps
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    47
b17c889076e4 Added API for memory dumps
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    48
You should have received a copy of the GNU Lesser General Public
b17c889076e4 Added API for memory dumps
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    49
License along with this library; if not, write to the Free Software
b17c889076e4 Added API for memory dumps
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    50
Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301  USA
b17c889076e4 Added API for memory dumps
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    51
"
b17c889076e4 Added API for memory dumps
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    52
!
b17c889076e4 Added API for memory dumps
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    53
b17c889076e4 Added API for memory dumps
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    54
documentation
b17c889076e4 Added API for memory dumps
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    55
"
b17c889076e4 Added API for memory dumps
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    56
    GDBMemoryDump object represents a memory dump as produced by
b17c889076e4 Added API for memory dumps
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    57
    `x` or `-data-read-memory` commands.
b17c889076e4 Added API for memory dumps
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    58
b17c889076e4 Added API for memory dumps
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    59
    [author:]
b17c889076e4 Added API for memory dumps
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    60
        Jan Vrany <jan.vrany@fit.cvut.cz>
b17c889076e4 Added API for memory dumps
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    61
b17c889076e4 Added API for memory dumps
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    62
    [instance variables:]
b17c889076e4 Added API for memory dumps
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    63
b17c889076e4 Added API for memory dumps
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    64
    [class variables:]
b17c889076e4 Added API for memory dumps
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    65
b17c889076e4 Added API for memory dumps
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    66
    [see also:]
b17c889076e4 Added API for memory dumps
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    67
        GDBMI_data_read_memory
b17c889076e4 Added API for memory dumps
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    68
        https://sourceware.org/gdb/onlinedocs/gdb/GDB_002fMI-Data-Manipulation.html
b17c889076e4 Added API for memory dumps
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    69
b17c889076e4 Added API for memory dumps
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    70
"
b17c889076e4 Added API for memory dumps
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    71
! !
b17c889076e4 Added API for memory dumps
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    72
b17c889076e4 Added API for memory dumps
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    73
!GDBMemoryDump class methodsFor:'accessing-magritte'!
b17c889076e4 Added API for memory dumps
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    74
b17c889076e4 Added API for memory dumps
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    75
description
b17c889076e4 Added API for memory dumps
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    76
    ^ (super description)
126
fb73b0af430b Added initial support for disassembling
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 97
diff changeset
    77
        define:#addr as:String;
97
b17c889076e4 Added API for memory dumps
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    78
        define:#nr_bytes as:Integer;
b17c889076e4 Added API for memory dumps
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    79
        define:#total_bytes as:Integer;
b17c889076e4 Added API for memory dumps
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    80
        define:#memory as: Array of: GDBMemoryDumpRow;
b17c889076e4 Added API for memory dumps
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    81
        yourself
b17c889076e4 Added API for memory dumps
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    82
b17c889076e4 Added API for memory dumps
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    83
    "Created: / 25-01-2018 / 08:41:56 / Jan Vrany <jan.vrany@fit.cvut.cz>"
126
fb73b0af430b Added initial support for disassembling
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 97
diff changeset
    84
    "Modified: / 03-07-2018 / 17:06:37 / Jan Vrany <jan.vrany@fit.cvut.cz>"
97
b17c889076e4 Added API for memory dumps
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    85
! !
b17c889076e4 Added API for memory dumps
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    86
b17c889076e4 Added API for memory dumps
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    87
!GDBMemoryDump methodsFor:'accessing'!
b17c889076e4 Added API for memory dumps
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    88
b17c889076e4 Added API for memory dumps
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    89
addr
b17c889076e4 Added API for memory dumps
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    90
    ^ addr
b17c889076e4 Added API for memory dumps
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    91
!
b17c889076e4 Added API for memory dumps
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    92
b17c889076e4 Added API for memory dumps
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    93
memory
b17c889076e4 Added API for memory dumps
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    94
    ^ memory
b17c889076e4 Added API for memory dumps
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    95
! !
b17c889076e4 Added API for memory dumps
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    96
b17c889076e4 Added API for memory dumps
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    97
!GDBMemoryDump methodsFor:'displaying'!
b17c889076e4 Added API for memory dumps
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    98
b17c889076e4 Added API for memory dumps
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    99
displayOn: aStream
b17c889076e4 Added API for memory dumps
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   100
    | addrW colW |
b17c889076e4 Added API for memory dumps
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   101
b17c889076e4 Added API for memory dumps
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   102
    addrW := addr size.
b17c889076e4 Added API for memory dumps
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   103
    colW := memory inject: 0 into:[:w1 :r | r data inject: w1 into: [ :w2 :val | w2 max: val size ] ].
b17c889076e4 Added API for memory dumps
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   104
    memory do:[:row|
126
fb73b0af430b Added initial support for disassembling
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 97
diff changeset
   105
        aStream nextPutAll: '0x'.
fb73b0af430b Added initial support for disassembling
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 97
diff changeset
   106
        row addr printOn: aStream base: 16 size: 16 fill: $0.
fb73b0af430b Added initial support for disassembling
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 97
diff changeset
   107
        aStream nextPut: $;; space.
97
b17c889076e4 Added API for memory dumps
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   108
        row data do:[:each | 
b17c889076e4 Added API for memory dumps
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   109
            aStream nextPutAll: each; next: colW - each size + 2 put: Character space.
b17c889076e4 Added API for memory dumps
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   110
        ].
b17c889076e4 Added API for memory dumps
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   111
        row ascii notNil ifTrue:[ 
b17c889076e4 Added API for memory dumps
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   112
            aStream space; nextPutAll: row ascii.
b17c889076e4 Added API for memory dumps
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   113
        ].
b17c889076e4 Added API for memory dumps
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   114
        aStream cr.
b17c889076e4 Added API for memory dumps
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   115
    ].
b17c889076e4 Added API for memory dumps
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   116
b17c889076e4 Added API for memory dumps
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   117
    "Created: / 25-01-2018 / 23:07:29 / Jan Vrany <jan.vrany@fit.cvut.cz>"
126
fb73b0af430b Added initial support for disassembling
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 97
diff changeset
   118
    "Modified: / 04-07-2018 / 14:00:49 / Jan Vrany <jan.vrany@fit.cvut.cz>"
97
b17c889076e4 Added API for memory dumps
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   119
! !
b17c889076e4 Added API for memory dumps
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   120
b17c889076e4 Added API for memory dumps
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   121
!GDBMemoryDump methodsFor:'inspecting'!
b17c889076e4 Added API for memory dumps
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   122
b17c889076e4 Added API for memory dumps
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   123
inspector2TabCondition
b17c889076e4 Added API for memory dumps
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   124
    <inspector2Tab>
b17c889076e4 Added API for memory dumps
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   125
b17c889076e4 Added API for memory dumps
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   126
    ^ Tools::Inspector2Tab new
b17c889076e4 Added API for memory dumps
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   127
            priority: 90;
b17c889076e4 Added API for memory dumps
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   128
            label:'Memory';  
b17c889076e4 Added API for memory dumps
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   129
            text: [ self displayString ]
b17c889076e4 Added API for memory dumps
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   130
            yourself.
b17c889076e4 Added API for memory dumps
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   131
b17c889076e4 Added API for memory dumps
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   132
    "Created: / 25-01-2018 / 23:16:01 / Jan Vrany <jan.vrany@fit.cvut.cz>"
b17c889076e4 Added API for memory dumps
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   133
! !
b17c889076e4 Added API for memory dumps
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   134