# connect gdb to Valgrind gdbserver:
target remote | ./vgdb --wait=60 --vgdb-prefix=./vgdb-prefix-mcvabits
echo vgdb launched process attached\n
monitor v.set vgdb-error 999999
#
#
# insert break:
break breakme
#
# continue till //1break:
continue
#
# up to main:
up
#
# print local string variables:
print main_name
print undefined
# save address of undefined 
set $0xundefined = &undefined
#
# Verif A-bits, V-bits, Get V-bits: A,V,G [0..9]
eval "monitor check_memory addressable 0x%lx 10", $0xundefined
eval "monitor check_memory defined     0x%lx 10", $0xundefined
eval "monitor get_vbits                0x%lx 10", $0xundefined
eval "monitor xb                       0x%lx 10", $0xundefined
#
# continue till //2break:
continue
#
# A,V,G [0..9] after the undefinition of some bytes by executable:
eval "monitor check_memory addressable 0x%lx 10", $0xundefined
eval "monitor check_memory defined     0x%lx 10", $0xundefined
eval "monitor get_vbits                0x%lx 10", $0xundefined
#
# Redefine [2..4]
set $0xundefined_2 = (char*)$0xundefined + 2
eval "monitor make_memory defined 0x%lx 3", $0xundefined_2
# A,V,G
eval "monitor check_memory addressable 0x%lx 10", $0xundefined
eval "monitor check_memory defined     0x%lx 10", $0xundefined
eval "monitor get_vbits                0x%lx 10", $0xundefined
#
# Undefine [2..5]
eval "monitor make_memory  undefined   0x%lx 4", $0xundefined_2
# A,V,G [0..9]
eval "monitor check_memory addressable 0x%lx 10", $0xundefined
eval "monitor check_memory defined     0x%lx 10", $0xundefined
eval "monitor get_vbits                0x%lx 10", $0xundefined
#
# noaccess [2..3]
eval "monitor make_memory  noaccess    0x%lx 2", $0xundefined_2
# A,V,G [0..1]
eval "monitor check_memory addressable 0x%lx 2", $0xundefined
eval "monitor check_memory defined     0x%lx 2", $0xundefined
eval "monitor get_vbits                0x%lx 2", $0xundefined
# A,V,G [2..3]
eval "monitor check_memory addressable 0x%lx 2", $0xundefined_2
eval "monitor check_memory defined     0x%lx 2", $0xundefined_2
eval "monitor get_vbits                0x%lx 2", $0xundefined_2
# A,V,G [4..9]
set  $0xundefined_4 = (char*) $0xundefined_2 + 2
eval "monitor check_memory addressable 0x%lx 6", $0xundefined_4
eval "monitor check_memory defined     0x%lx 6", $0xundefined_4
eval "monitor get_vbits                0x%lx 6", $0xundefined_4
#
# Definedifaddressable undefined[0..9]
eval "monitor make_memory  Definedifaddressable 0x%lx 10", $0xundefined
# A,V,G
eval "monitor check_memory addressable 0x%lx 10", $0xundefined
eval "monitor check_memory defined     0x%lx 10", $0xundefined
eval "monitor get_vbits                0x%lx 10", $0xundefined
#
monitor v.kill
quit