.gdbinit revision 5710834a502f2f73e7fbc2d1265a2d840a97e716
f3220f54126b25e1cf93cc26c17177b7aef850fdfielding# gdb macros which may be useful for folks using gdb to debug
f3220f54126b25e1cf93cc26c17177b7aef850fdfielding# apache. Delete it if it bothers you.
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 while $i < $n
f3220f54126b25e1cf93cc26c17177b7aef850fdfielding printf "[%u] '%s'='%s'\n", $i, $t[$i].key, $t[$i].val
f3220f54126b25e1cf93cc26c17177b7aef850fdfielding set $i = $i + 1
f3220f54126b25e1cf93cc26c17177b7aef850fdfieldingdocument dump_table
f3220f54126b25e1cf93cc26c17177b7aef850fdfielding Print the key/value pairs in a table.
75ad9d694b36c11047c0b747cf7fc31a4fdbf6e4dougm run -DONE_PROCESS
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 while $i < $n
f3220f54126b25e1cf93cc26c17177b7aef850fdfielding printf "[%u] '%s'\n", $i, $a[$i]
f3220f54126b25e1cf93cc26c17177b7aef850fdfielding set $i = $i + 1
f3220f54126b25e1cf93cc26c17177b7aef850fdfieldingdocument dump_string_array
f3220f54126b25e1cf93cc26c17177b7aef850fdfielding Print all of the elements in an array of strings.
a5a57eb904a8e19297b2c84596f24cede337f6edjwoolleydefine printmemn
a5a57eb904a8e19297b2c84596f24cede337f6edjwoolley while $i < $arg1
a5a57eb904a8e19297b2c84596f24cede337f6edjwoolley if $arg0[$i] < 0x20 || $arg0[$i] > 0x7e
a5a57eb904a8e19297b2c84596f24cede337f6edjwoolley printf "%c", $arg0[$i]
a5a57eb904a8e19297b2c84596f24cede337f6edjwoolley set $i = $i + 1
a5a57eb904a8e19297b2c84596f24cede337f6edjwoolleydefine print_bkt_datacol
a5a57eb904a8e19297b2c84596f24cede337f6edjwoolley # arg0 == column name
a5a57eb904a8e19297b2c84596f24cede337f6edjwoolley # arg1 == format
a5a57eb904a8e19297b2c84596f24cede337f6edjwoolley # arg2 == value
a5a57eb904a8e19297b2c84596f24cede337f6edjwoolley # arg3 == suppress header?
a5a57eb904a8e19297b2c84596f24cede337f6edjwoolley set $suppressheader = $arg3
a5a57eb904a8e19297b2c84596f24cede337f6edjwoolley if !$suppressheader
a5a57eb904a8e19297b2c84596f24cede337f6edjwoolley printf $arg0
a5a57eb904a8e19297b2c84596f24cede337f6edjwoolley printf " | "
a5a57eb904a8e19297b2c84596f24cede337f6edjwoolley printf $arg1, $arg2
a5a57eb904a8e19297b2c84596f24cede337f6edjwoolleydefine dump_bucket_ex
a5a57eb904a8e19297b2c84596f24cede337f6edjwoolley # arg0 == bucket
a5a57eb904a8e19297b2c84596f24cede337f6edjwoolley # arg1 == suppress header?
a5a57eb904a8e19297b2c84596f24cede337f6edjwoolley set $bucket = (apr_bucket *)$arg0
a5a57eb904a8e19297b2c84596f24cede337f6edjwoolley set $sh = $arg1
a5a57eb904a8e19297b2c84596f24cede337f6edjwoolley set $refcount = -1
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 printf "\n "
a5a57eb904a8e19297b2c84596f24cede337f6edjwoolley if (($bucket->type == &apr_bucket_type_eos) || \
a5a57eb904a8e19297b2c84596f24cede337f6edjwoolley ($bucket->type == &apr_bucket_type_flush))
a5a57eb904a8e19297b2c84596f24cede337f6edjwoolley # metadata buckets, no content
a5a57eb904a8e19297b2c84596f24cede337f6edjwoolley print_bkt_datacol "contents" "%c" ' ' $sh
a5a57eb904a8e19297b2c84596f24cede337f6edjwoolley print_bkt_datacol "rc" "n/%c" 'a' $sh
a5a57eb904a8e19297b2c84596f24cede337f6edjwoolley if ($bucket->type == &ap_bucket_type_error)
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 if (($bucket->type == &apr_bucket_type_file) || \
a5a57eb904a8e19297b2c84596f24cede337f6edjwoolley ($bucket->type == &apr_bucket_type_pipe) || \
a5a57eb904a8e19297b2c84596f24cede337f6edjwoolley ($bucket->type == &apr_bucket_type_socket))
a5a57eb904a8e19297b2c84596f24cede337f6edjwoolley # buckets that contain data not in memory (ie not printable)
a5a57eb904a8e19297b2c84596f24cede337f6edjwoolley print_bkt_datacol "contents" "[**unprintable**%c" ']' $sh
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 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 # in-memory buckets
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 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 set $data = $p->base+$bucket->start
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 if (($bucket->type == &apr_bucket_type_transient) || \
a5a57eb904a8e19297b2c84596f24cede337f6edjwoolley ($bucket->type == &apr_bucket_type_immortal))
a5a57eb904a8e19297b2c84596f24cede337f6edjwoolley set $data = ((char *)$bucket->data)+$bucket->start
a5a57eb904a8e19297b2c84596f24cede337f6edjwoolley printf " | ["
a5a57eb904a8e19297b2c84596f24cede337f6edjwoolley printf " contents=["
a5a57eb904a8e19297b2c84596f24cede337f6edjwoolley set $datalen = $bucket->length
a5a57eb904a8e19297b2c84596f24cede337f6edjwoolley if $datalen > 17
a5a57eb904a8e19297b2c84596f24cede337f6edjwoolley printmem $data 17
a5a57eb904a8e19297b2c84596f24cede337f6edjwoolley printf "..."
a5a57eb904a8e19297b2c84596f24cede337f6edjwoolley set $datalen = 20
a5a57eb904a8e19297b2c84596f24cede337f6edjwoolley printmemn $data $datalen
a5a57eb904a8e19297b2c84596f24cede337f6edjwoolley while $datalen < 20
a5a57eb904a8e19297b2c84596f24cede337f6edjwoolley set $datalen = $datalen + 1
a5a57eb904a8e19297b2c84596f24cede337f6edjwoolley if $refcount != -1
a5a57eb904a8e19297b2c84596f24cede337f6edjwoolley print_bkt_datacol "rc" "%d" $refcount $sh
a5a57eb904a8e19297b2c84596f24cede337f6edjwoolley print_bkt_datacol "rc" "n/%c" 'a' $sh
a5a57eb904a8e19297b2c84596f24cede337f6edjwoolley # 3rd-party bucket type
a5a57eb904a8e19297b2c84596f24cede337f6edjwoolley print_bkt_datacol "contents" "[**unknown**%c" ']' $sh
a5a57eb904a8e19297b2c84596f24cede337f6edjwoolley print_bkt_datacol "rc" "n/%c" 'a' $sh
a5a57eb904a8e19297b2c84596f24cede337f6edjwoolley printf "\n"
e5d6e4b6e930968edfdc8e94c67988eb34382619dougmdefine dump_bucket
a5a57eb904a8e19297b2c84596f24cede337f6edjwoolley dump_bucket_ex $arg0 0
e5d6e4b6e930968edfdc8e94c67988eb34382619dougmdocument dump_bucket
e5d6e4b6e930968edfdc8e94c67988eb34382619dougm Print bucket info
e5d6e4b6e930968edfdc8e94c67988eb34382619dougmdefine dump_brigade
a5a57eb904a8e19297b2c84596f24cede337f6edjwoolley set $bb = (apr_bucket_brigade *)$arg0
a5a57eb904a8e19297b2c84596f24cede337f6edjwoolley set $bucket = $bb->list.next
a5a57eb904a8e19297b2c84596f24cede337f6edjwoolley set $sentinel = ((char *)((&($bb->list)) \
a5a57eb904a8e19297b2c84596f24cede337f6edjwoolley - ((size_t) &((apr_bucket *)0)->link)))
e5d6e4b6e930968edfdc8e94c67988eb34382619dougm printf "dump of brigade 0x%lx\n", (unsigned long)$bb
a5a57eb904a8e19297b2c84596f24cede337f6edjwoolley printf " | type (address) | length | "
a5a57eb904a8e19297b2c84596f24cede337f6edjwoolley printf "data addr | contents | rc\n"
a5a57eb904a8e19297b2c84596f24cede337f6edjwoolley printf "----------------------------------------"
a5a57eb904a8e19297b2c84596f24cede337f6edjwoolley printf "----------------------------------------\n"
e5d6e4b6e930968edfdc8e94c67988eb34382619dougm if $bucket == $sentinel
e5d6e4b6e930968edfdc8e94c67988eb34382619dougm printf "brigade is empty\n"
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
a5a57eb904a8e19297b2c84596f24cede337f6edjwoolley printf "end of brigade\n"
e5d6e4b6e930968edfdc8e94c67988eb34382619dougmdocument dump_brigade
e5d6e4b6e930968edfdc8e94c67988eb34382619dougm Print bucket brigade info
960ca33b37540da5d863a4c0a88092d5ec85b3dadougmdefine dump_filters
960ca33b37540da5d863a4c0a88092d5ec85b3dadougm set $f = $arg0
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
960ca33b37540da5d863a4c0a88092d5ec85b3dadougmdocument dump_filters
960ca33b37540da5d863a4c0a88092d5ec85b3dadougm Print filter chain info
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
4637615de8c93269b8942c581968810ec3c53821dougmdocument dump_process_rec
4637615de8c93269b8942c581968810ec3c53821dougm Print process_rec info
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)
4637615de8c93269b8942c581968810ec3c53821dougmdocument dump_server_rec
4637615de8c93269b8942c581968810ec3c53821dougm Print server_rec info
4637615de8c93269b8942c581968810ec3c53821dougmdefine dump_servers
4637615de8c93269b8942c581968810ec3c53821dougm set $s = $arg0
4637615de8c93269b8942c581968810ec3c53821dougm dump_server_rec($s)
4637615de8c93269b8942c581968810ec3c53821dougm printf "\n"
4637615de8c93269b8942c581968810ec3c53821dougm set $s = $s->next
4637615de8c93269b8942c581968810ec3c53821dougmdocument dump_servers
4637615de8c93269b8942c581968810ec3c53821dougm Print server_rec list info