VDBVirtualMemoryMap.st
author Jan Vrany <jan.vrany@fit.cvut.cz>
Thu, 20 Jun 2019 13:51:41 +0100
changeset 173 bc6174f3570f
parent 49 2ec7f7ed9242
child 264 23960fcb9dac
permissions -rw-r--r--
Refactor support for VDB customization scripts Upon strartup, VDB now loads `~/.vdbinit.st`. If that file does not exist, it loads default `vdbinit.st`. This default file also serves as an example and documentation for available settings.
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
49
2ec7f7ed9242 License this package under 'Creative Commons Attribution-NonCommercial 4.0 International License'
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 48
diff changeset
     1
"
2ec7f7ed9242 License this package under 'Creative Commons Attribution-NonCommercial 4.0 International License'
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 48
diff changeset
     2
jv:vdb - Visual / VM Debugger
2ec7f7ed9242 License this package under 'Creative Commons Attribution-NonCommercial 4.0 International License'
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 48
diff changeset
     3
Copyright (C) 2015-now Jan Vrany
2ec7f7ed9242 License this package under 'Creative Commons Attribution-NonCommercial 4.0 International License'
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 48
diff changeset
     4
2ec7f7ed9242 License this package under 'Creative Commons Attribution-NonCommercial 4.0 International License'
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 48
diff changeset
     5
This software is licensed under 'Creative Commons Attribution-NonCommercial 4.0 International License'
2ec7f7ed9242 License this package under 'Creative Commons Attribution-NonCommercial 4.0 International License'
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 48
diff changeset
     6
2ec7f7ed9242 License this package under 'Creative Commons Attribution-NonCommercial 4.0 International License'
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 48
diff changeset
     7
You may find a full license text in LICENSE.txt or at http://creativecommons.org/licenses/by-nc/4.0/
2ec7f7ed9242 License this package under 'Creative Commons Attribution-NonCommercial 4.0 International License'
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 48
diff changeset
     8
"
48
0076f0700e5e Added VDBVirtualMemoryMap, a model for memory maps
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
     9
"{ Package: 'jv:vdb' }"
0076f0700e5e Added VDBVirtualMemoryMap, a model for memory maps
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    10
0076f0700e5e Added VDBVirtualMemoryMap, a model for memory maps
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    11
"{ NameSpace: Smalltalk }"
0076f0700e5e Added VDBVirtualMemoryMap, a model for memory maps
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    12
0076f0700e5e Added VDBVirtualMemoryMap, a model for memory maps
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    13
Object subclass:#VDBVirtualMemoryMap
0076f0700e5e Added VDBVirtualMemoryMap, a model for memory maps
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    14
	instanceVariableNames:'regions'
0076f0700e5e Added VDBVirtualMemoryMap, a model for memory maps
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    15
	classVariableNames:''
0076f0700e5e Added VDBVirtualMemoryMap, a model for memory maps
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    16
	poolDictionaries:''
0076f0700e5e Added VDBVirtualMemoryMap, a model for memory maps
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    17
	category:'VDB-Tools'
0076f0700e5e Added VDBVirtualMemoryMap, a model for memory maps
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    18
!
0076f0700e5e Added VDBVirtualMemoryMap, a model for memory maps
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    19
49
2ec7f7ed9242 License this package under 'Creative Commons Attribution-NonCommercial 4.0 International License'
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 48
diff changeset
    20
!VDBVirtualMemoryMap class methodsFor:'documentation'!
2ec7f7ed9242 License this package under 'Creative Commons Attribution-NonCommercial 4.0 International License'
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 48
diff changeset
    21
2ec7f7ed9242 License this package under 'Creative Commons Attribution-NonCommercial 4.0 International License'
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 48
diff changeset
    22
copyright
2ec7f7ed9242 License this package under 'Creative Commons Attribution-NonCommercial 4.0 International License'
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 48
diff changeset
    23
"
2ec7f7ed9242 License this package under 'Creative Commons Attribution-NonCommercial 4.0 International License'
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 48
diff changeset
    24
jv:vdb - Visual / VM Debugger
2ec7f7ed9242 License this package under 'Creative Commons Attribution-NonCommercial 4.0 International License'
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 48
diff changeset
    25
Copyright (C) 2015-now Jan Vrany
2ec7f7ed9242 License this package under 'Creative Commons Attribution-NonCommercial 4.0 International License'
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 48
diff changeset
    26
2ec7f7ed9242 License this package under 'Creative Commons Attribution-NonCommercial 4.0 International License'
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 48
diff changeset
    27
This software is licensed under 'Creative Commons Attribution-NonCommercial 4.0 International License'
2ec7f7ed9242 License this package under 'Creative Commons Attribution-NonCommercial 4.0 International License'
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 48
diff changeset
    28
2ec7f7ed9242 License this package under 'Creative Commons Attribution-NonCommercial 4.0 International License'
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 48
diff changeset
    29
You may find a full license text in LICENSE.txt or at http://creativecommons.org/licenses/by-nc/4.0/
2ec7f7ed9242 License this package under 'Creative Commons Attribution-NonCommercial 4.0 International License'
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 48
diff changeset
    30
"
2ec7f7ed9242 License this package under 'Creative Commons Attribution-NonCommercial 4.0 International License'
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 48
diff changeset
    31
! !
2ec7f7ed9242 License this package under 'Creative Commons Attribution-NonCommercial 4.0 International License'
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 48
diff changeset
    32
48
0076f0700e5e Added VDBVirtualMemoryMap, a model for memory maps
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    33
!VDBVirtualMemoryMap class methodsFor:'instance creation'!
0076f0700e5e Added VDBVirtualMemoryMap, a model for memory maps
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    34
0076f0700e5e Added VDBVirtualMemoryMap, a model for memory maps
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    35
fromSysInternalsVmmapDump: aStringOrFilenameOrStream
0076f0700e5e Added VDBVirtualMemoryMap, a model for memory maps
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    36
    | s |
0076f0700e5e Added VDBVirtualMemoryMap, a model for memory maps
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    37
0076f0700e5e Added VDBVirtualMemoryMap, a model for memory maps
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    38
    s := aStringOrFilenameOrStream readStream.
0076f0700e5e Added VDBVirtualMemoryMap, a model for memory maps
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    39
    ^ [
0076f0700e5e Added VDBVirtualMemoryMap, a model for memory maps
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    40
        self new initializeFromSysInternalsVmmapDump: s
0076f0700e5e Added VDBVirtualMemoryMap, a model for memory maps
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    41
    ] ensure:[ 
0076f0700e5e Added VDBVirtualMemoryMap, a model for memory maps
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    42
        s close.
0076f0700e5e Added VDBVirtualMemoryMap, a model for memory maps
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    43
    ].
0076f0700e5e Added VDBVirtualMemoryMap, a model for memory maps
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    44
0076f0700e5e Added VDBVirtualMemoryMap, a model for memory maps
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    45
    "Created: / 13-10-2017 / 12:11:46 / Jan Vrany <jan.vrany@fit.cvut.cz>"
0076f0700e5e Added VDBVirtualMemoryMap, a model for memory maps
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    46
! !
0076f0700e5e Added VDBVirtualMemoryMap, a model for memory maps
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    47
0076f0700e5e Added VDBVirtualMemoryMap, a model for memory maps
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    48
!VDBVirtualMemoryMap methodsFor:'reading'!
0076f0700e5e Added VDBVirtualMemoryMap, a model for memory maps
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    49
0076f0700e5e Added VDBVirtualMemoryMap, a model for memory maps
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    50
initializeFromSysInternalsVmmapDump: aStream
0076f0700e5e Added VDBVirtualMemoryMap, a model for memory maps
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    51
    "
0076f0700e5e Added VDBVirtualMemoryMap, a model for memory maps
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    52
    Initializes regions from SysInterna's vmmap.exe dump (.mmp)
0076f0700e5e Added VDBVirtualMemoryMap, a model for memory maps
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    53
    "
0076f0700e5e Added VDBVirtualMemoryMap, a model for memory maps
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    54
    | dump snapshot |
0076f0700e5e Added VDBVirtualMemoryMap, a model for memory maps
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    55
0076f0700e5e Added VDBVirtualMemoryMap, a model for memory maps
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    56
    dump := XML::XMLParser parse: aStream.
0076f0700e5e Added VDBVirtualMemoryMap, a model for memory maps
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    57
    snapshot := (dump / 'root' / 'Snapshots' / 'Snapshot') last.
0076f0700e5e Added VDBVirtualMemoryMap, a model for memory maps
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    58
    regions := (snapshot / 'MemoryRegions' / 'Region') 
0076f0700e5e Added VDBVirtualMemoryMap, a model for memory maps
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    59
                select:[ :node | 
0076f0700e5e Added VDBVirtualMemoryMap, a model for memory maps
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    60
                    (node @ 'Commit') ~= '0'.
0076f0700e5e Added VDBVirtualMemoryMap, a model for memory maps
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    61
                ]
0076f0700e5e Added VDBVirtualMemoryMap, a model for memory maps
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    62
                thenCollect:[ :node |
0076f0700e5e Added VDBVirtualMemoryMap, a model for memory maps
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    63
                    | region |
0076f0700e5e Added VDBVirtualMemoryMap, a model for memory maps
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    64
0076f0700e5e Added VDBVirtualMemoryMap, a model for memory maps
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    65
                    region := VDBVirtualMemoryRegion new
0076f0700e5e Added VDBVirtualMemoryMap, a model for memory maps
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    66
                                address:     (node @ 'Address') asInteger;
0076f0700e5e Added VDBVirtualMemoryMap, a model for memory maps
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    67
                                size:        (node @ 'Size') asInteger;
0076f0700e5e Added VDBVirtualMemoryMap, a model for memory maps
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    68
                                protection:  (node @ 'Protection') asInteger;
0076f0700e5e Added VDBVirtualMemoryMap, a model for memory maps
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    69
                                comment:     (node @ 'Details');
0076f0700e5e Added VDBVirtualMemoryMap, a model for memory maps
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    70
                                yourself.
0076f0700e5e Added VDBVirtualMemoryMap, a model for memory maps
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    71
                ] as: OrderedCollection.
0076f0700e5e Added VDBVirtualMemoryMap, a model for memory maps
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    72
0076f0700e5e Added VDBVirtualMemoryMap, a model for memory maps
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    73
    regions sort:[ :a :b | a address  < b address ].
0076f0700e5e Added VDBVirtualMemoryMap, a model for memory maps
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    74
0076f0700e5e Added VDBVirtualMemoryMap, a model for memory maps
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    75
    "Created: / 13-10-2017 / 12:06:43 / Jan Vrany <jan.vrany@fit.cvut.cz>"
0076f0700e5e Added VDBVirtualMemoryMap, a model for memory maps
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    76
! !
0076f0700e5e Added VDBVirtualMemoryMap, a model for memory maps
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    77