On 5/28/20 9:54 PM, [email protected] wrote:
> Author: ylavic
> Date: Thu May 28 19:54:02 2020
> New Revision: 1878247
> 
> URL: http://svn.apache.org/viewvc?rev=1878247&view=rev
> Log:
> .gdbinit: dump pool (pre_)cleanups [skip ci]
> 
> Modified:
>     httpd/httpd/trunk/.gdbinit

Really nice one.

> 
> Modified: httpd/httpd/trunk/.gdbinit
> URL: 
> http://svn.apache.org/viewvc/httpd/httpd/trunk/.gdbinit?rev=1878247&r1=1878246&r2=1878247&view=diff
> ==============================================================================
> --- httpd/httpd/trunk/.gdbinit (original)
> +++ httpd/httpd/trunk/.gdbinit Thu May 28 19:54:02 2020

> @@ -530,16 +530,29 @@ class DumpPoolAndChilds (gdb.Command):
>        tag = darg['tag'].string()
>      else:
>        tag = "No tag"
> -    print("Pool '%s' [%s]: %d/%d free (%d blocks) allocator: %s free blocks 
> in allocator: %i kiB" % (tag, arg, free, size, nodes, darg['allocator'], 
> self._allocator_free_blocks(darg['allocator'])))
> +    print("%sPool '%s' [%s]: %d/%d free (%d blocks) allocator: %s free 
> blocks in allocator: %i kiB" % (indent, tag, arg, free, size, nodes, 
> darg['allocator'], self._allocator_free_blocks(darg['allocator'])))
>      self.free = self.free + free
>      self.size = self.size + size
>      self.nodes = self.nodes + nodes
> +    c_num = 0
> +    c = darg['pre_cleanups']
> +    while c:
> +        c_num = c_num + 1
> +        dc = c.dereference()
> +        print("%s  pre_cleanup #%.2i: data = %s, plain_cleanup_fn = %s, 
> child_cleanup_fn = %s" % (indent, c_num, dc['data'], 
> dc['plain_cleanup_fn'].dereference(), dc['plain_cleanup_fn'].dereference()))
> +        c = dc['next']
> +    c = darg['cleanups']

Wouldn't it make sense to do a c_num = 0 here again?

> +    while c:
> +        c_num = c_num + 1
> +        dc = c.dereference()
> +        print("%s  pst_cleanup #%.2i: data = %s, plain_cleanup_fn = %s, 
> child_cleanup_fn = %s" % (indent, c_num, dc['data'], 
> dc['plain_cleanup_fn'].dereference(), dc['plain_cleanup_fn'].dereference()))
> +        c = dc['next']
>  
>    def _dump(self, arg, depth):
>      pool = arg
> +    indent = "%*c" % (depth * 4 + 1, " ")
>      while pool:
> -        print("%*c" % (depth * 4 + 1, " "), end="")
> -        self._dump_one_pool(pool)
> +        self._dump_one_pool(pool, indent)
>          if pool['child'] != 0:
>              self._dump(pool['child'], depth + 1)
>          pool = pool['sibling']
> 
> 

Regards

RĂ¼diger

Reply via email to