]> git.ipfire.org Git - thirdparty/apache/httpd.git/commitdiff
Merge r1879381, r1879382, r1879383, r1879384 from trunk:
authorRuediger Pluem <rpluem@apache.org>
Thu, 9 Jul 2020 19:01:05 +0000 (19:01 +0000)
committerRuediger Pluem <rpluem@apache.org>
Thu, 9 Jul 2020 19:01:05 +0000 (19:01 +0000)
* 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

.gdbinit

index 76ddc548dd0bf70a3b25ab0fee9d670af60cd895..25d9ca31d02f107b043b971953cb842692537906 100644 (file)
--- 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