From: Ruediger Pluem Date: Thu, 9 Jul 2020 19:01:05 +0000 (+0000) Subject: Merge r1879381, r1879382, r1879383, r1879384 from trunk: X-Git-Tag: 2.4.44~25 X-Git-Url: http://git.ipfire.org/?a=commitdiff_plain;h=e6312dbfd0e18998d64c83bb686cd95af5f8f469;p=thirdparty%2Fapache%2Fhttpd.git Merge r1879381, r1879382, r1879383, r1879384 from trunk: * Let dump_brigade print the length of the brigade * Create helper function isValidAddress to determine if an address is valid [skip ci] * Use isValidAddress when dumping buckets [skip ci] * Improve formating and aligning [skip ci] Submitted by: rpluem git-svn-id: https://svn.apache.org/repos/asf/httpd/httpd/branches/2.4.x@1879724 13f79535-47bb-0310-9956-ffa450edef68 --- diff --git a/.gdbinit b/.gdbinit index 76ddc548dd0..25d9ca31d02 100644 --- a/.gdbinit +++ b/.gdbinit @@ -205,17 +205,21 @@ define dump_bucket_ex printf " contents=[" end set $datalen = $bucket->length - if $datalen > 17 - printmem $data 17 - printf "..." - set $datalen = 20 + if $isValidAddress($data) == 1 + if $datalen > 17 + printmem $data 17 + printf "..." + set $datalen = 20 + else + printmemn $data $datalen + end + printf "]" + while $datalen < 20 + printf " " + set $datalen = $datalen + 1 + end else - printmemn $data $datalen - end - printf "]" - while $datalen < 20 - printf " " - set $datalen = $datalen + 1 + printf "Iv addr %12lx]", $data end if $refcount != -1 @@ -281,13 +285,18 @@ define dump_brigade end set $j = 0 + set $brigade_length = 0 while $bucket != $sentinel printf "%2d", $j dump_bucket_ex $bucket 1 set $j = $j + 1 + if $bucket->length > 0 + set $brigade_length = $brigade_length + $bucket->length + end set $bucket = $bucket->link.next end printf "end of brigade\n" + printf "Length of brigade (excluding buckets of unknown length): %u\n", $brigade_length end document dump_brigade Print bucket brigade info @@ -563,6 +572,27 @@ document dump_pool_and_children Dump the whole pool hierarchy starting from the given pool. end +python + +class isValidAddress (gdb.Function): + """Determines if the argument is a valid address.""" + + def __init__(self): + super(isValidAddress, self).__init__("isValidAddress") + + def invoke(self, address): + inf = gdb.inferiors()[0] + result = 1 + try: + inf.read_memory(address, 8) + except: + result = 0 + return result + +isValidAddress() + +end + # Set sane defaults for common signals: handle SIGPIPE noprint pass nostop handle SIGUSR1 print pass nostop