f3220f54126b25e1cf93cc26c17177b7aef850fdfielding# gdb macros which may be useful for folks using gdb to debug
f3220f54126b25e1cf93cc26c17177b7aef850fdfielding# apache. Delete it if it bothers you.
f3220f54126b25e1cf93cc26c17177b7aef850fdfielding
f3220f54126b25e1cf93cc26c17177b7aef850fdfieldingdefine dump_table
1708435e9c63465fd70c21025bd51cb44170d2dbdougm set $t = (apr_table_entry_t *)((apr_array_header_t *)$arg0)->elts
1708435e9c63465fd70c21025bd51cb44170d2dbdougm set $n = ((apr_array_header_t *)$arg0)->nelts
f3220f54126b25e1cf93cc26c17177b7aef850fdfielding set $i = 0
f3220f54126b25e1cf93cc26c17177b7aef850fdfielding while $i < $n
8083dd9b5cd66b86c4939cf7a85162334f249578jorton if $t[$i].val == (void *)0L
8083dd9b5cd66b86c4939cf7a85162334f249578jorton printf "[%u] '%s'=>NULL\n", $i, $t[$i].key
8083dd9b5cd66b86c4939cf7a85162334f249578jorton else
cc32b2d336621b97566b21ac80f8a19d83ab9279jorton printf "[%u] '%s'='%s' [%p]\n", $i, $t[$i].key, $t[$i].val, $t[$i].val
8083dd9b5cd66b86c4939cf7a85162334f249578jorton end
f3220f54126b25e1cf93cc26c17177b7aef850fdfielding set $i = $i + 1
f3220f54126b25e1cf93cc26c17177b7aef850fdfielding end
f3220f54126b25e1cf93cc26c17177b7aef850fdfieldingend
f3220f54126b25e1cf93cc26c17177b7aef850fdfieldingdocument dump_table
f3220f54126b25e1cf93cc26c17177b7aef850fdfielding Print the key/value pairs in a table.
f3220f54126b25e1cf93cc26c17177b7aef850fdfieldingend
f3220f54126b25e1cf93cc26c17177b7aef850fdfielding
5e76c0a474af3d8f511ae9c59062e191a3ff4d6fylavicdefine dump_skiplist
5e76c0a474af3d8f511ae9c59062e191a3ff4d6fylavic set $sl = (apr_skiplist *)$arg0
5e76c0a474af3d8f511ae9c59062e191a3ff4d6fylavic set $m = $sl->bottom
5e76c0a474af3d8f511ae9c59062e191a3ff4d6fylavic printf "skiplist@%p: size=%lu: height=%d\n", $sl, $sl->size, $sl->height
5e76c0a474af3d8f511ae9c59062e191a3ff4d6fylavic while ($m)
5e76c0a474af3d8f511ae9c59062e191a3ff4d6fylavic printf "(%p,%.12lx)", $m, $m->data
5e76c0a474af3d8f511ae9c59062e191a3ff4d6fylavic set $u = $m->up
5e76c0a474af3d8f511ae9c59062e191a3ff4d6fylavic while ($u)
5e76c0a474af3d8f511ae9c59062e191a3ff4d6fylavic printf " (%p,%.12lx)", $u, $u->data
5e76c0a474af3d8f511ae9c59062e191a3ff4d6fylavic set $u = $u->up
5e76c0a474af3d8f511ae9c59062e191a3ff4d6fylavic end
5e76c0a474af3d8f511ae9c59062e191a3ff4d6fylavic printf "\n"
5e76c0a474af3d8f511ae9c59062e191a3ff4d6fylavic set $m = $m->next
5e76c0a474af3d8f511ae9c59062e191a3ff4d6fylavic end
5e76c0a474af3d8f511ae9c59062e191a3ff4d6fylavicend
5e76c0a474af3d8f511ae9c59062e191a3ff4d6fylavicdocument dump_skiplist
5e76c0a474af3d8f511ae9c59062e191a3ff4d6fylavic Print the nodes/values in a skiplist
5e76c0a474af3d8f511ae9c59062e191a3ff4d6fylavicend
5e76c0a474af3d8f511ae9c59062e191a3ff4d6fylavic
da20f402fdea6ec91be2a0cd1f040c668a92e7f7jortondefine dump_string_hash
da20f402fdea6ec91be2a0cd1f040c668a92e7f7jorton set $h = $arg0->array
da20f402fdea6ec91be2a0cd1f040c668a92e7f7jorton set $n = $arg0->max
da20f402fdea6ec91be2a0cd1f040c668a92e7f7jorton set $i = 0
da20f402fdea6ec91be2a0cd1f040c668a92e7f7jorton while $i < $n
da20f402fdea6ec91be2a0cd1f040c668a92e7f7jorton set $ent = $h[$i]
da20f402fdea6ec91be2a0cd1f040c668a92e7f7jorton while $ent != (void *)0L
da20f402fdea6ec91be2a0cd1f040c668a92e7f7jorton printf "'%s' => '%p'\n", $ent->key, $ent->val
da20f402fdea6ec91be2a0cd1f040c668a92e7f7jorton set $ent = $ent->next
da20f402fdea6ec91be2a0cd1f040c668a92e7f7jorton end
da20f402fdea6ec91be2a0cd1f040c668a92e7f7jorton set $i = $i + 1
da20f402fdea6ec91be2a0cd1f040c668a92e7f7jorton end
da20f402fdea6ec91be2a0cd1f040c668a92e7f7jortonend
da20f402fdea6ec91be2a0cd1f040c668a92e7f7jortondocument dump_string_hash
da20f402fdea6ec91be2a0cd1f040c668a92e7f7jorton Print the entries in a hash table indexed by strings
da20f402fdea6ec91be2a0cd1f040c668a92e7f7jortonend
ff8c037448da2a14a00420b285ea3b8f2f4738e0fielding
da20f402fdea6ec91be2a0cd1f040c668a92e7f7jortondefine dump_string_shash
da20f402fdea6ec91be2a0cd1f040c668a92e7f7jorton set $h = $arg0->array
da20f402fdea6ec91be2a0cd1f040c668a92e7f7jorton set $n = $arg0->max
da20f402fdea6ec91be2a0cd1f040c668a92e7f7jorton set $i = 0
da20f402fdea6ec91be2a0cd1f040c668a92e7f7jorton while $i < $n
da20f402fdea6ec91be2a0cd1f040c668a92e7f7jorton set $ent = $h[$i]
da20f402fdea6ec91be2a0cd1f040c668a92e7f7jorton while $ent != (void *)0L
da20f402fdea6ec91be2a0cd1f040c668a92e7f7jorton printf "'%s' => '%s'\n", $ent->key, $ent->val
da20f402fdea6ec91be2a0cd1f040c668a92e7f7jorton set $ent = $ent->next
da20f402fdea6ec91be2a0cd1f040c668a92e7f7jorton end
da20f402fdea6ec91be2a0cd1f040c668a92e7f7jorton set $i = $i + 1
da20f402fdea6ec91be2a0cd1f040c668a92e7f7jorton end
da20f402fdea6ec91be2a0cd1f040c668a92e7f7jortonend
da20f402fdea6ec91be2a0cd1f040c668a92e7f7jortondocument dump_string_shash
da20f402fdea6ec91be2a0cd1f040c668a92e7f7jorton Print the entries in a hash table indexed by strings with string values
ff8c037448da2a14a00420b285ea3b8f2f4738e0fieldingend
ff8c037448da2a14a00420b285ea3b8f2f4738e0fielding
75ad9d694b36c11047c0b747cf7fc31a4fdbf6e4dougmdefine ro
75ad9d694b36c11047c0b747cf7fc31a4fdbf6e4dougm run -DONE_PROCESS
75ad9d694b36c11047c0b747cf7fc31a4fdbf6e4dougmend
75ad9d694b36c11047c0b747cf7fc31a4fdbf6e4dougm
f3220f54126b25e1cf93cc26c17177b7aef850fdfieldingdefine dump_string_array
1708435e9c63465fd70c21025bd51cb44170d2dbdougm set $a = (char **)((apr_array_header_t *)$arg0)->elts
1708435e9c63465fd70c21025bd51cb44170d2dbdougm set $n = (int)((apr_array_header_t *)$arg0)->nelts
f3220f54126b25e1cf93cc26c17177b7aef850fdfielding set $i = 0
f3220f54126b25e1cf93cc26c17177b7aef850fdfielding while $i < $n
f3220f54126b25e1cf93cc26c17177b7aef850fdfielding printf "[%u] '%s'\n", $i, $a[$i]
f3220f54126b25e1cf93cc26c17177b7aef850fdfielding set $i = $i + 1
f3220f54126b25e1cf93cc26c17177b7aef850fdfielding end
f3220f54126b25e1cf93cc26c17177b7aef850fdfieldingend
f3220f54126b25e1cf93cc26c17177b7aef850fdfieldingdocument dump_string_array
f3220f54126b25e1cf93cc26c17177b7aef850fdfielding Print all of the elements in an array of strings.
f3220f54126b25e1cf93cc26c17177b7aef850fdfieldingend
e5d6e4b6e930968edfdc8e94c67988eb34382619dougm
a5a57eb904a8e19297b2c84596f24cede337f6edjwoolleydefine printmemn
a5a57eb904a8e19297b2c84596f24cede337f6edjwoolley set $i = 0
a5a57eb904a8e19297b2c84596f24cede337f6edjwoolley while $i < $arg1
a5a57eb904a8e19297b2c84596f24cede337f6edjwoolley if $arg0[$i] < 0x20 || $arg0[$i] > 0x7e
a5a57eb904a8e19297b2c84596f24cede337f6edjwoolley printf "~"
a5a57eb904a8e19297b2c84596f24cede337f6edjwoolley else
a5a57eb904a8e19297b2c84596f24cede337f6edjwoolley printf "%c", $arg0[$i]
a5a57eb904a8e19297b2c84596f24cede337f6edjwoolley end
a5a57eb904a8e19297b2c84596f24cede337f6edjwoolley set $i = $i + 1
a5a57eb904a8e19297b2c84596f24cede337f6edjwoolley end
a5a57eb904a8e19297b2c84596f24cede337f6edjwoolleyend
a5a57eb904a8e19297b2c84596f24cede337f6edjwoolley
a5a57eb904a8e19297b2c84596f24cede337f6edjwoolleydefine print_bkt_datacol
a5a57eb904a8e19297b2c84596f24cede337f6edjwoolley # arg0 == column name
a5a57eb904a8e19297b2c84596f24cede337f6edjwoolley # arg1 == format
a5a57eb904a8e19297b2c84596f24cede337f6edjwoolley # arg2 == value
a5a57eb904a8e19297b2c84596f24cede337f6edjwoolley # arg3 == suppress header?
a5a57eb904a8e19297b2c84596f24cede337f6edjwoolley set $suppressheader = $arg3
a5a57eb904a8e19297b2c84596f24cede337f6edjwoolley
a5a57eb904a8e19297b2c84596f24cede337f6edjwoolley if !$suppressheader
a5a57eb904a8e19297b2c84596f24cede337f6edjwoolley printf " "
a5a57eb904a8e19297b2c84596f24cede337f6edjwoolley printf $arg0
a5a57eb904a8e19297b2c84596f24cede337f6edjwoolley printf "="
a5a57eb904a8e19297b2c84596f24cede337f6edjwoolley else
a5a57eb904a8e19297b2c84596f24cede337f6edjwoolley printf " | "
a5a57eb904a8e19297b2c84596f24cede337f6edjwoolley end
a5a57eb904a8e19297b2c84596f24cede337f6edjwoolley printf $arg1, $arg2
a5a57eb904a8e19297b2c84596f24cede337f6edjwoolleyend
a5a57eb904a8e19297b2c84596f24cede337f6edjwoolley
a5a57eb904a8e19297b2c84596f24cede337f6edjwoolleydefine dump_bucket_ex
a5a57eb904a8e19297b2c84596f24cede337f6edjwoolley # arg0 == bucket
a5a57eb904a8e19297b2c84596f24cede337f6edjwoolley # arg1 == suppress header?
ea235773c733c1cd6892d95c459884cfe61a579cbrianp set $bucket = (struct apr_bucket *)$arg0
a5a57eb904a8e19297b2c84596f24cede337f6edjwoolley set $sh = $arg1
a5a57eb904a8e19297b2c84596f24cede337f6edjwoolley set $refcount = -1
a5a57eb904a8e19297b2c84596f24cede337f6edjwoolley
a5a57eb904a8e19297b2c84596f24cede337f6edjwoolley print_bkt_datacol "bucket" "%-9s" $bucket->type->name $sh
a5a57eb904a8e19297b2c84596f24cede337f6edjwoolley printf "(0x%08lx)", (unsigned long)$bucket
a5a57eb904a8e19297b2c84596f24cede337f6edjwoolley print_bkt_datacol "length" "%-6ld" (long)($bucket->length) $sh
a5a57eb904a8e19297b2c84596f24cede337f6edjwoolley print_bkt_datacol "data" "0x%08lx" $bucket->data $sh
a5a57eb904a8e19297b2c84596f24cede337f6edjwoolley
a5a57eb904a8e19297b2c84596f24cede337f6edjwoolley if !$sh
a5a57eb904a8e19297b2c84596f24cede337f6edjwoolley printf "\n "
a5a57eb904a8e19297b2c84596f24cede337f6edjwoolley end
a5a57eb904a8e19297b2c84596f24cede337f6edjwoolley
a5a57eb904a8e19297b2c84596f24cede337f6edjwoolley if (($bucket->type == &apr_bucket_type_eos) || \
a5a57eb904a8e19297b2c84596f24cede337f6edjwoolley ($bucket->type == &apr_bucket_type_flush))
a5a57eb904a8e19297b2c84596f24cede337f6edjwoolley
a5a57eb904a8e19297b2c84596f24cede337f6edjwoolley # metadata buckets, no content
a5a57eb904a8e19297b2c84596f24cede337f6edjwoolley print_bkt_datacol "contents" "%c" ' ' $sh
a5a57eb904a8e19297b2c84596f24cede337f6edjwoolley printf " "
a5a57eb904a8e19297b2c84596f24cede337f6edjwoolley print_bkt_datacol "rc" "n/%c" 'a' $sh
a5a57eb904a8e19297b2c84596f24cede337f6edjwoolley
a5a57eb904a8e19297b2c84596f24cede337f6edjwoolley else
a5a57eb904a8e19297b2c84596f24cede337f6edjwoolley if ($bucket->type == &ap_bucket_type_error)
a5a57eb904a8e19297b2c84596f24cede337f6edjwoolley
a5a57eb904a8e19297b2c84596f24cede337f6edjwoolley # metadata bucket, no content but it does have an error code in it
a5a57eb904a8e19297b2c84596f24cede337f6edjwoolley print_bkt_datacol "contents" "%c" ' ' $sh
a5a57eb904a8e19297b2c84596f24cede337f6edjwoolley set $status = ((ap_bucket_error *)$bucket->data)->status
a5a57eb904a8e19297b2c84596f24cede337f6edjwoolley printf " (status=%3d) ", $status
a5a57eb904a8e19297b2c84596f24cede337f6edjwoolley print_bkt_datacol "rc" "n/%c" 'a' $sh
a5a57eb904a8e19297b2c84596f24cede337f6edjwoolley
a5a57eb904a8e19297b2c84596f24cede337f6edjwoolley else
a5a57eb904a8e19297b2c84596f24cede337f6edjwoolley if (($bucket->type == &apr_bucket_type_file) || \
a5a57eb904a8e19297b2c84596f24cede337f6edjwoolley ($bucket->type == &apr_bucket_type_pipe) || \
a5a57eb904a8e19297b2c84596f24cede337f6edjwoolley ($bucket->type == &apr_bucket_type_socket))
a5a57eb904a8e19297b2c84596f24cede337f6edjwoolley
a5a57eb904a8e19297b2c84596f24cede337f6edjwoolley # buckets that contain data not in memory (ie not printable)
a5a57eb904a8e19297b2c84596f24cede337f6edjwoolley
a5a57eb904a8e19297b2c84596f24cede337f6edjwoolley print_bkt_datacol "contents" "[**unprintable**%c" ']' $sh
5710834a502f2f73e7fbc2d1265a2d840a97e716jwoolley printf " "
a5a57eb904a8e19297b2c84596f24cede337f6edjwoolley if $bucket->type == &apr_bucket_type_file
a5a57eb904a8e19297b2c84596f24cede337f6edjwoolley set $refcount = ((apr_bucket_refcount *)$bucket->data)->refcount
a5a57eb904a8e19297b2c84596f24cede337f6edjwoolley print_bkt_datacol "rc" "%d" $refcount $sh
a5a57eb904a8e19297b2c84596f24cede337f6edjwoolley end
a5a57eb904a8e19297b2c84596f24cede337f6edjwoolley
a5a57eb904a8e19297b2c84596f24cede337f6edjwoolley else
a5a57eb904a8e19297b2c84596f24cede337f6edjwoolley if (($bucket->type == &apr_bucket_type_heap) || \
a5a57eb904a8e19297b2c84596f24cede337f6edjwoolley ($bucket->type == &apr_bucket_type_pool) || \
a5a57eb904a8e19297b2c84596f24cede337f6edjwoolley ($bucket->type == &apr_bucket_type_mmap) || \
a5a57eb904a8e19297b2c84596f24cede337f6edjwoolley ($bucket->type == &apr_bucket_type_transient) || \
a5a57eb904a8e19297b2c84596f24cede337f6edjwoolley ($bucket->type == &apr_bucket_type_immortal))
a5a57eb904a8e19297b2c84596f24cede337f6edjwoolley
a5a57eb904a8e19297b2c84596f24cede337f6edjwoolley # in-memory buckets
a5a57eb904a8e19297b2c84596f24cede337f6edjwoolley
a5a57eb904a8e19297b2c84596f24cede337f6edjwoolley if $bucket->type == &apr_bucket_type_heap
a5a57eb904a8e19297b2c84596f24cede337f6edjwoolley set $refcount = ((apr_bucket_refcount *)$bucket->data)->refcount
a5a57eb904a8e19297b2c84596f24cede337f6edjwoolley set $p = (apr_bucket_heap *)$bucket->data
a5a57eb904a8e19297b2c84596f24cede337f6edjwoolley set $data = $p->base+$bucket->start
a5a57eb904a8e19297b2c84596f24cede337f6edjwoolley
a5a57eb904a8e19297b2c84596f24cede337f6edjwoolley else
a5a57eb904a8e19297b2c84596f24cede337f6edjwoolley if $bucket->type == &apr_bucket_type_pool
a5a57eb904a8e19297b2c84596f24cede337f6edjwoolley set $refcount = ((apr_bucket_refcount *)$bucket->data)->refcount
a5a57eb904a8e19297b2c84596f24cede337f6edjwoolley set $p = (apr_bucket_pool *)$bucket->data
a8195ccda27932b4cd3ac09cda995dbcfdf5a195jwoolley if !$p->pool
a5a57eb904a8e19297b2c84596f24cede337f6edjwoolley set $p = (apr_bucket_heap *)$bucket->data
a5a57eb904a8e19297b2c84596f24cede337f6edjwoolley end
a5a57eb904a8e19297b2c84596f24cede337f6edjwoolley set $data = $p->base+$bucket->start
a5a57eb904a8e19297b2c84596f24cede337f6edjwoolley
a5a57eb904a8e19297b2c84596f24cede337f6edjwoolley else
a5a57eb904a8e19297b2c84596f24cede337f6edjwoolley if $bucket->type == &apr_bucket_type_mmap
a5a57eb904a8e19297b2c84596f24cede337f6edjwoolley # is this safe if not APR_HAS_MMAP?
a5a57eb904a8e19297b2c84596f24cede337f6edjwoolley set $refcount = ((apr_bucket_refcount *)$bucket->data)->refcount
a5a57eb904a8e19297b2c84596f24cede337f6edjwoolley set $p = (apr_bucket_mmap *)$bucket->data
a5a57eb904a8e19297b2c84596f24cede337f6edjwoolley set $data = ((char *)$p->mmap->mm)+$bucket->start
a5a57eb904a8e19297b2c84596f24cede337f6edjwoolley
a5a57eb904a8e19297b2c84596f24cede337f6edjwoolley else
a5a57eb904a8e19297b2c84596f24cede337f6edjwoolley if (($bucket->type == &apr_bucket_type_transient) || \
a5a57eb904a8e19297b2c84596f24cede337f6edjwoolley ($bucket->type == &apr_bucket_type_immortal))
a5a57eb904a8e19297b2c84596f24cede337f6edjwoolley set $data = ((char *)$bucket->data)+$bucket->start
a5a57eb904a8e19297b2c84596f24cede337f6edjwoolley
a5a57eb904a8e19297b2c84596f24cede337f6edjwoolley end
a5a57eb904a8e19297b2c84596f24cede337f6edjwoolley end
a5a57eb904a8e19297b2c84596f24cede337f6edjwoolley end
a5a57eb904a8e19297b2c84596f24cede337f6edjwoolley end
a5a57eb904a8e19297b2c84596f24cede337f6edjwoolley
a5a57eb904a8e19297b2c84596f24cede337f6edjwoolley if $sh
a5a57eb904a8e19297b2c84596f24cede337f6edjwoolley printf " | ["
a5a57eb904a8e19297b2c84596f24cede337f6edjwoolley else
a5a57eb904a8e19297b2c84596f24cede337f6edjwoolley printf " contents=["
a5a57eb904a8e19297b2c84596f24cede337f6edjwoolley end
a5a57eb904a8e19297b2c84596f24cede337f6edjwoolley set $datalen = $bucket->length
a5a57eb904a8e19297b2c84596f24cede337f6edjwoolley if $datalen > 17
a5a57eb904a8e19297b2c84596f24cede337f6edjwoolley printmem $data 17
a5a57eb904a8e19297b2c84596f24cede337f6edjwoolley printf "..."
a5a57eb904a8e19297b2c84596f24cede337f6edjwoolley set $datalen = 20
a5a57eb904a8e19297b2c84596f24cede337f6edjwoolley else
a5a57eb904a8e19297b2c84596f24cede337f6edjwoolley printmemn $data $datalen
a5a57eb904a8e19297b2c84596f24cede337f6edjwoolley end
a5a57eb904a8e19297b2c84596f24cede337f6edjwoolley printf "]"
a5a57eb904a8e19297b2c84596f24cede337f6edjwoolley while $datalen < 20
a5a57eb904a8e19297b2c84596f24cede337f6edjwoolley printf " "
a5a57eb904a8e19297b2c84596f24cede337f6edjwoolley set $datalen = $datalen + 1
a5a57eb904a8e19297b2c84596f24cede337f6edjwoolley end
a5a57eb904a8e19297b2c84596f24cede337f6edjwoolley
a5a57eb904a8e19297b2c84596f24cede337f6edjwoolley if $refcount != -1
a5a57eb904a8e19297b2c84596f24cede337f6edjwoolley print_bkt_datacol "rc" "%d" $refcount $sh
a5a57eb904a8e19297b2c84596f24cede337f6edjwoolley else
a5a57eb904a8e19297b2c84596f24cede337f6edjwoolley print_bkt_datacol "rc" "n/%c" 'a' $sh
a5a57eb904a8e19297b2c84596f24cede337f6edjwoolley end
a5a57eb904a8e19297b2c84596f24cede337f6edjwoolley
a5a57eb904a8e19297b2c84596f24cede337f6edjwoolley else
a5a57eb904a8e19297b2c84596f24cede337f6edjwoolley # 3rd-party bucket type
a5a57eb904a8e19297b2c84596f24cede337f6edjwoolley print_bkt_datacol "contents" "[**unknown**%c" ']' $sh
a5a57eb904a8e19297b2c84596f24cede337f6edjwoolley printf " "
a5a57eb904a8e19297b2c84596f24cede337f6edjwoolley print_bkt_datacol "rc" "n/%c" 'a' $sh
a5a57eb904a8e19297b2c84596f24cede337f6edjwoolley end
a5a57eb904a8e19297b2c84596f24cede337f6edjwoolley end
a5a57eb904a8e19297b2c84596f24cede337f6edjwoolley end
a5a57eb904a8e19297b2c84596f24cede337f6edjwoolley end
a5a57eb904a8e19297b2c84596f24cede337f6edjwoolley
a5a57eb904a8e19297b2c84596f24cede337f6edjwoolley printf "\n"
a5a57eb904a8e19297b2c84596f24cede337f6edjwoolley
a5a57eb904a8e19297b2c84596f24cede337f6edjwoolleyend
a5a57eb904a8e19297b2c84596f24cede337f6edjwoolley
e5d6e4b6e930968edfdc8e94c67988eb34382619dougmdefine dump_bucket
a5a57eb904a8e19297b2c84596f24cede337f6edjwoolley dump_bucket_ex $arg0 0
e5d6e4b6e930968edfdc8e94c67988eb34382619dougmend
e5d6e4b6e930968edfdc8e94c67988eb34382619dougmdocument dump_bucket
e5d6e4b6e930968edfdc8e94c67988eb34382619dougm Print bucket info
e5d6e4b6e930968edfdc8e94c67988eb34382619dougmend
e5d6e4b6e930968edfdc8e94c67988eb34382619dougm
e5d6e4b6e930968edfdc8e94c67988eb34382619dougmdefine dump_brigade
a5a57eb904a8e19297b2c84596f24cede337f6edjwoolley set $bb = (apr_bucket_brigade *)$arg0
a5a57eb904a8e19297b2c84596f24cede337f6edjwoolley set $bucket = $bb->list.next
a5a57eb904a8e19297b2c84596f24cede337f6edjwoolley set $sentinel = ((char *)((&($bb->list)) \
ea235773c733c1cd6892d95c459884cfe61a579cbrianp - ((size_t) &((struct apr_bucket *)0)->link)))
e5d6e4b6e930968edfdc8e94c67988eb34382619dougm printf "dump of brigade 0x%lx\n", (unsigned long)$bb
a5a57eb904a8e19297b2c84596f24cede337f6edjwoolley
a5a57eb904a8e19297b2c84596f24cede337f6edjwoolley printf " | type (address) | length | "
a5a57eb904a8e19297b2c84596f24cede337f6edjwoolley printf "data addr | contents | rc\n"
a5a57eb904a8e19297b2c84596f24cede337f6edjwoolley printf "----------------------------------------"
a5a57eb904a8e19297b2c84596f24cede337f6edjwoolley printf "----------------------------------------\n"
a5a57eb904a8e19297b2c84596f24cede337f6edjwoolley
e5d6e4b6e930968edfdc8e94c67988eb34382619dougm if $bucket == $sentinel
e5d6e4b6e930968edfdc8e94c67988eb34382619dougm printf "brigade is empty\n"
e5d6e4b6e930968edfdc8e94c67988eb34382619dougm end
e5d6e4b6e930968edfdc8e94c67988eb34382619dougm
a5a57eb904a8e19297b2c84596f24cede337f6edjwoolley set $j = 0
e5d6e4b6e930968edfdc8e94c67988eb34382619dougm while $bucket != $sentinel
a5a57eb904a8e19297b2c84596f24cede337f6edjwoolley printf "%2d", $j
a5a57eb904a8e19297b2c84596f24cede337f6edjwoolley dump_bucket_ex $bucket 1
a5a57eb904a8e19297b2c84596f24cede337f6edjwoolley set $j = $j + 1
e5d6e4b6e930968edfdc8e94c67988eb34382619dougm set $bucket = $bucket->link.next
e5d6e4b6e930968edfdc8e94c67988eb34382619dougm end
a5a57eb904a8e19297b2c84596f24cede337f6edjwoolley printf "end of brigade\n"
e5d6e4b6e930968edfdc8e94c67988eb34382619dougmend
e5d6e4b6e930968edfdc8e94c67988eb34382619dougmdocument dump_brigade
e5d6e4b6e930968edfdc8e94c67988eb34382619dougm Print bucket brigade info
75ad9d694b36c11047c0b747cf7fc31a4fdbf6e4dougmend
960ca33b37540da5d863a4c0a88092d5ec85b3dadougm
960ca33b37540da5d863a4c0a88092d5ec85b3dadougmdefine dump_filters
960ca33b37540da5d863a4c0a88092d5ec85b3dadougm set $f = $arg0
960ca33b37540da5d863a4c0a88092d5ec85b3dadougm while $f
960ca33b37540da5d863a4c0a88092d5ec85b3dadougm printf "%s(0x%lx): ctx=0x%lx, r=0x%lx, c=0x%lx\n", \
960ca33b37540da5d863a4c0a88092d5ec85b3dadougm $f->frec->name, (unsigned long)$f, (unsigned long)$f->ctx, \
960ca33b37540da5d863a4c0a88092d5ec85b3dadougm $f->r, $f->c
960ca33b37540da5d863a4c0a88092d5ec85b3dadougm set $f = $f->next
960ca33b37540da5d863a4c0a88092d5ec85b3dadougm end
960ca33b37540da5d863a4c0a88092d5ec85b3dadougmend
960ca33b37540da5d863a4c0a88092d5ec85b3dadougmdocument dump_filters
960ca33b37540da5d863a4c0a88092d5ec85b3dadougm Print filter chain info
960ca33b37540da5d863a4c0a88092d5ec85b3dadougmend
4637615de8c93269b8942c581968810ec3c53821dougm
0881d2831eff3798873e608e0b8a8478f5b84c8ajortondefine dump_filter_chain
0881d2831eff3798873e608e0b8a8478f5b84c8ajorton set $r = $arg0
0881d2831eff3798873e608e0b8a8478f5b84c8ajorton set $f = $r->output_filters
0881d2831eff3798873e608e0b8a8478f5b84c8ajorton while $f
0881d2831eff3798873e608e0b8a8478f5b84c8ajorton if $f == $r->output_filters
0881d2831eff3798873e608e0b8a8478f5b84c8ajorton printf "r->output_filters =>\n"
0881d2831eff3798873e608e0b8a8478f5b84c8ajorton end
0881d2831eff3798873e608e0b8a8478f5b84c8ajorton if $f == $r->proto_output_filters
0881d2831eff3798873e608e0b8a8478f5b84c8ajorton printf "r->proto_output_filters =>\n"
0881d2831eff3798873e608e0b8a8478f5b84c8ajorton end
0881d2831eff3798873e608e0b8a8478f5b84c8ajorton if $f == $r->connection->output_filters
0881d2831eff3798873e608e0b8a8478f5b84c8ajorton printf "r->connection->output_filters =>\n"
0881d2831eff3798873e608e0b8a8478f5b84c8ajorton end
0881d2831eff3798873e608e0b8a8478f5b84c8ajorton
0881d2831eff3798873e608e0b8a8478f5b84c8ajorton printf " %s(0x%lx): type=%d, ctx=0x%lx, r=%s(0x%lx), c=0x%lx\n", \
0881d2831eff3798873e608e0b8a8478f5b84c8ajorton $f->frec->name, (unsigned long)$f, $f->frec->ftype, (unsigned long)$f->ctx, \
0881d2831eff3798873e608e0b8a8478f5b84c8ajorton $f->r == $r ? "r" : ($f->r == 0L ? "null" : \
97757ecbab6d9a397a027c0f7d7bd634549eac77jorton ($f->r == $r->main ? "r->main" : \
97757ecbab6d9a397a027c0f7d7bd634549eac77jorton ($r->main && $f->r == $r->main->main ? "r->main->main" : "????"))), \
97757ecbab6d9a397a027c0f7d7bd634549eac77jorton $f->r, $f->c
0881d2831eff3798873e608e0b8a8478f5b84c8ajorton
0881d2831eff3798873e608e0b8a8478f5b84c8ajorton set $f = $f->next
0881d2831eff3798873e608e0b8a8478f5b84c8ajorton end
0881d2831eff3798873e608e0b8a8478f5b84c8ajortonend
0881d2831eff3798873e608e0b8a8478f5b84c8ajortondocument dump_filter_chain
0881d2831eff3798873e608e0b8a8478f5b84c8ajorton Print filter chain info given a request_rec pointer
0881d2831eff3798873e608e0b8a8478f5b84c8ajortonend
0881d2831eff3798873e608e0b8a8478f5b84c8ajorton
4637615de8c93269b8942c581968810ec3c53821dougmdefine dump_process_rec
4637615de8c93269b8942c581968810ec3c53821dougm set $p = $arg0
4637615de8c93269b8942c581968810ec3c53821dougm printf "process_rec=0x%lx:\n", (unsigned long)$p
4637615de8c93269b8942c581968810ec3c53821dougm printf " pool=0x%lx, pconf=0x%lx\n", \
4637615de8c93269b8942c581968810ec3c53821dougm (unsigned long)$p->pool, (unsigned long)$p->pconf
4637615de8c93269b8942c581968810ec3c53821dougmend
4637615de8c93269b8942c581968810ec3c53821dougmdocument dump_process_rec
4637615de8c93269b8942c581968810ec3c53821dougm Print process_rec info
4637615de8c93269b8942c581968810ec3c53821dougmend
4637615de8c93269b8942c581968810ec3c53821dougm
4637615de8c93269b8942c581968810ec3c53821dougmdefine dump_server_rec
4637615de8c93269b8942c581968810ec3c53821dougm set $s = $arg0
4637615de8c93269b8942c581968810ec3c53821dougm printf "name=%s:%d\n", \
4637615de8c93269b8942c581968810ec3c53821dougm $s->server_hostname, $s->port
4637615de8c93269b8942c581968810ec3c53821dougm dump_process_rec($s->process)
4637615de8c93269b8942c581968810ec3c53821dougmend
4637615de8c93269b8942c581968810ec3c53821dougmdocument dump_server_rec
4637615de8c93269b8942c581968810ec3c53821dougm Print server_rec info
4637615de8c93269b8942c581968810ec3c53821dougmend
4637615de8c93269b8942c581968810ec3c53821dougm
4637615de8c93269b8942c581968810ec3c53821dougmdefine dump_servers
4637615de8c93269b8942c581968810ec3c53821dougm set $s = $arg0
4637615de8c93269b8942c581968810ec3c53821dougm while $s
4637615de8c93269b8942c581968810ec3c53821dougm dump_server_rec($s)
4637615de8c93269b8942c581968810ec3c53821dougm printf "\n"
4637615de8c93269b8942c581968810ec3c53821dougm set $s = $s->next
4637615de8c93269b8942c581968810ec3c53821dougm end
4637615de8c93269b8942c581968810ec3c53821dougmend
4637615de8c93269b8942c581968810ec3c53821dougmdocument dump_servers
4637615de8c93269b8942c581968810ec3c53821dougm Print server_rec list info
4637615de8c93269b8942c581968810ec3c53821dougmend
da20f402fdea6ec91be2a0cd1f040c668a92e7f7jorton
adf403d4e9380c3beefc5827c81a80853e89c888jortondefine dump_request_tree
adf403d4e9380c3beefc5827c81a80853e89c888jorton set $r = $arg0
adf403d4e9380c3beefc5827c81a80853e89c888jorton set $i
adf403d4e9380c3beefc5827c81a80853e89c888jorton while $r
adf403d4e9380c3beefc5827c81a80853e89c888jorton printf "r=(0x%lx): uri=%s, handler=%s, r->main=0x%lx\n", \
adf403d4e9380c3beefc5827c81a80853e89c888jorton $r, $r->unparsed_uri, $r->handler ? $r->handler : "(none)", $r->main
adf403d4e9380c3beefc5827c81a80853e89c888jorton set $r = $r->main
adf403d4e9380c3beefc5827c81a80853e89c888jorton end
adf403d4e9380c3beefc5827c81a80853e89c888jortonend
adf403d4e9380c3beefc5827c81a80853e89c888jorton
da20f402fdea6ec91be2a0cd1f040c668a92e7f7jortondefine dump_allocator
da20f402fdea6ec91be2a0cd1f040c668a92e7f7jorton printf "Allocator current_free_index = %d, max_free_index = %d\n", \
da20f402fdea6ec91be2a0cd1f040c668a92e7f7jorton ($arg0)->current_free_index, ($arg0)->max_free_index
da20f402fdea6ec91be2a0cd1f040c668a92e7f7jorton printf "Allocator free list:\n"
da20f402fdea6ec91be2a0cd1f040c668a92e7f7jorton set $i = 0
da20f402fdea6ec91be2a0cd1f040c668a92e7f7jorton set $max =(sizeof $arg0->free)/(sizeof $arg0->free[0])
48f041362342dad4465d98a21ed2879b7fdcddf4sf set $kb = 0
da20f402fdea6ec91be2a0cd1f040c668a92e7f7jorton while $i < $max
da20f402fdea6ec91be2a0cd1f040c668a92e7f7jorton set $node = $arg0->free[$i]
da20f402fdea6ec91be2a0cd1f040c668a92e7f7jorton if $node != 0
da20f402fdea6ec91be2a0cd1f040c668a92e7f7jorton printf " #%2d: ", $i
da20f402fdea6ec91be2a0cd1f040c668a92e7f7jorton while $node != 0
48f041362342dad4465d98a21ed2879b7fdcddf4sf printf "%d, ", 4096 << $node->index
48f041362342dad4465d98a21ed2879b7fdcddf4sf set $kb = $kb + (4 << $node->index)
da20f402fdea6ec91be2a0cd1f040c668a92e7f7jorton set $node = $node->next
da20f402fdea6ec91be2a0cd1f040c668a92e7f7jorton end
da20f402fdea6ec91be2a0cd1f040c668a92e7f7jorton printf "ends.\n"
da20f402fdea6ec91be2a0cd1f040c668a92e7f7jorton end
da20f402fdea6ec91be2a0cd1f040c668a92e7f7jorton set $i = $i + 1
da20f402fdea6ec91be2a0cd1f040c668a92e7f7jorton end
48f041362342dad4465d98a21ed2879b7fdcddf4sf printf "Sum of free blocks: %dkiB\n", $kb
da20f402fdea6ec91be2a0cd1f040c668a92e7f7jortonend
da20f402fdea6ec91be2a0cd1f040c668a92e7f7jortondocument dump_allocator
da20f402fdea6ec91be2a0cd1f040c668a92e7f7jorton Print status of an allocator and its freelists.
da20f402fdea6ec91be2a0cd1f040c668a92e7f7jortonend
da20f402fdea6ec91be2a0cd1f040c668a92e7f7jorton
48f041362342dad4465d98a21ed2879b7fdcddf4sfdefine dump_one_pool
48f041362342dad4465d98a21ed2879b7fdcddf4sf set $p = $arg0
48f041362342dad4465d98a21ed2879b7fdcddf4sf set $size = 0
48f041362342dad4465d98a21ed2879b7fdcddf4sf set $free = 0
48f041362342dad4465d98a21ed2879b7fdcddf4sf set $nodes = 0
48f041362342dad4465d98a21ed2879b7fdcddf4sf set $node = $arg0->active
48f041362342dad4465d98a21ed2879b7fdcddf4sf set $done = 0
48f041362342dad4465d98a21ed2879b7fdcddf4sf while $done == 0
48f041362342dad4465d98a21ed2879b7fdcddf4sf set $size = $size + (4096 << $node->index)
48f041362342dad4465d98a21ed2879b7fdcddf4sf set $free = $free + ($node->endp - $node->first_avail)
48f041362342dad4465d98a21ed2879b7fdcddf4sf set $nodes = $nodes + 1
48f041362342dad4465d98a21ed2879b7fdcddf4sf set $node = $node->next
48f041362342dad4465d98a21ed2879b7fdcddf4sf if $node == $arg0->active
48f041362342dad4465d98a21ed2879b7fdcddf4sf set $done = 1
48f041362342dad4465d98a21ed2879b7fdcddf4sf end
48f041362342dad4465d98a21ed2879b7fdcddf4sf end
48f041362342dad4465d98a21ed2879b7fdcddf4sf printf "Pool '%s' [%p]: %d/%d free (%d blocks)\n", $p->tag, $p, $free, $size, $nodes
48f041362342dad4465d98a21ed2879b7fdcddf4sfend
48f041362342dad4465d98a21ed2879b7fdcddf4sf
da20f402fdea6ec91be2a0cd1f040c668a92e7f7jorton# Set sane defaults for common signals:
da20f402fdea6ec91be2a0cd1f040c668a92e7f7jortonhandle SIGPIPE noprint pass nostop
da20f402fdea6ec91be2a0cd1f040c668a92e7f7jortonhandle SIGUSR1 print pass nostop