2025-03-01 00:01:05 -05:00

80 lines
1.5 KiB
Plaintext

# gdb scripts for dumping resizeable arrays.
#
# Unfortunately, there does not seem to be a way to do this without
# cutting and pasting for every type.
define plainarray
set $n = $arg0.num
set $i = 0
printf "%u items\n", $n
while ($i < $n)
print $arg0.v[$i]
set $i++
end
end
document plainarray
Print a plain (untyped) resizeable array.
Usage: plainarray myarray
end
define array
set $n = $arg0.arr.num
set $i = 0
printf "%u items\n", $n
while ($i < $n)
print $arg0.arr.v[$i]
set $i++
end
end
document array
Print the pointers in a typed resizeable array.
(Use plainarray for an untyped resizeable array.)
Usage: array allcpus
end
define cpuarray
set $n = $arg0.arr.num
set $i = 0
printf "%u cpus\n", $n
while ($i < $n)
printf "cpu %u:\n", $i
print *(struct cpu *)($arg0.arr.v[$i])
set $i++
end
end
document cpuarray
Print an array of struct cpu.
Usage: cpuarray allcpus
end
define threadarray
set $n = $arg0.arr.num
set $i = 0
printf "%u threads\n", $n
while ($i < $n)
printf "thread %u:\n", $i
print *(struct thread *)($arg0.arr.v[$i])
set $i++
end
end
document threadarray
Print an array of struct thread.
Usage: threadarray curproc->p_threads
end
define vnodearray
set $n = $arg0.arr.num
set $i = 0
printf "%u vnodes\n", $n
while ($i < $n)
printf "vnode %u:\n", $i
print *(struct vnode *)($arg0.arr.v[$i])
set $i++
end
end
document vnodearray
Print an array of struct vnode.
Usage: vnodearray sfs->sfs_vnodes
end