80 lines
		
	
	
		
			1.5 KiB
		
	
	
	
		
			Plaintext
		
	
	
	
	
	
			
		
		
	
	
			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
 | 
						|
 |