diff options
Diffstat (limited to 'rubbos/app/httpd-2.0.64/.gdbinit')
-rw-r--r-- | rubbos/app/httpd-2.0.64/.gdbinit | 273 |
1 files changed, 273 insertions, 0 deletions
diff --git a/rubbos/app/httpd-2.0.64/.gdbinit b/rubbos/app/httpd-2.0.64/.gdbinit new file mode 100644 index 00000000..f60f31a4 --- /dev/null +++ b/rubbos/app/httpd-2.0.64/.gdbinit @@ -0,0 +1,273 @@ +# gdb macros which may be useful for folks using gdb to debug +# apache. Delete it if it bothers you. + +define dump_table + set $t = (apr_table_entry_t *)((apr_array_header_t *)$arg0)->elts + set $n = ((apr_array_header_t *)$arg0)->nelts + set $i = 0 + while $i < $n + printf "[%u] '%s'='%s'\n", $i, $t[$i].key, $t[$i].val + set $i = $i + 1 + end +end +document dump_table + Print the key/value pairs in a table. +end + + +define rh + run -f /home/dgaudet/ap2/conf/mpm.conf +end + +define ro + run -DONE_PROCESS +end + +define dump_string_array + set $a = (char **)((apr_array_header_t *)$arg0)->elts + set $n = (int)((apr_array_header_t *)$arg0)->nelts + set $i = 0 + while $i < $n + printf "[%u] '%s'\n", $i, $a[$i] + set $i = $i + 1 + end +end +document dump_string_array + Print all of the elements in an array of strings. +end + +define printmemn + set $i = 0 + while $i < $arg1 + if $arg0[$i] < 0x20 || $arg0[$i] > 0x7e + printf "~" + else + printf "%c", $arg0[$i] + end + set $i = $i + 1 + end +end + +define print_bkt_datacol + # arg0 == column name + # arg1 == format + # arg2 == value + # arg3 == suppress header? + set $suppressheader = $arg3 + + if !$suppressheader + printf " " + printf $arg0 + printf "=" + else + printf " | " + end + printf $arg1, $arg2 +end + +define dump_bucket_ex + # arg0 == bucket + # arg1 == suppress header? + set $bucket = (apr_bucket *)$arg0 + set $sh = $arg1 + set $refcount = -1 + + print_bkt_datacol "bucket" "%-9s" $bucket->type->name $sh + printf "(0x%08lx)", (unsigned long)$bucket + print_bkt_datacol "length" "%-6ld" (long)($bucket->length) $sh + print_bkt_datacol "data" "0x%08lx" $bucket->data $sh + + if !$sh + printf "\n " + end + + if (($bucket->type == &apr_bucket_type_eos) || \ + ($bucket->type == &apr_bucket_type_flush)) + + # metadata buckets, no content + print_bkt_datacol "contents" "%c" ' ' $sh + printf " " + print_bkt_datacol "rc" "n/%c" 'a' $sh + + else + if ($bucket->type == &ap_bucket_type_error) + + # metadata bucket, no content but it does have an error code in it + print_bkt_datacol "contents" "%c" ' ' $sh + set $status = ((ap_bucket_error *)$bucket->data)->status + printf " (status=%3d) ", $status + print_bkt_datacol "rc" "n/%c" 'a' $sh + + else + if (($bucket->type == &apr_bucket_type_file) || \ + ($bucket->type == &apr_bucket_type_pipe) || \ + ($bucket->type == &apr_bucket_type_socket)) + + # buckets that contain data not in memory (ie not printable) + + print_bkt_datacol "contents" "[**unprintable**%c" ']' $sh + printf " " + if $bucket->type == &apr_bucket_type_file + set $refcount = ((apr_bucket_refcount *)$bucket->data)->refcount + print_bkt_datacol "rc" "%d" $refcount $sh + end + + else + if (($bucket->type == &apr_bucket_type_heap) || \ + ($bucket->type == &apr_bucket_type_pool) || \ + ($bucket->type == &apr_bucket_type_mmap) || \ + ($bucket->type == &apr_bucket_type_transient) || \ + ($bucket->type == &apr_bucket_type_immortal)) + + # in-memory buckets + + if $bucket->type == &apr_bucket_type_heap + set $refcount = ((apr_bucket_refcount *)$bucket->data)->refcount + set $p = (apr_bucket_heap *)$bucket->data + set $data = $p->base+$bucket->start + + else + if $bucket->type == &apr_bucket_type_pool + set $refcount = ((apr_bucket_refcount *)$bucket->data)->refcount + set $p = (apr_bucket_pool *)$bucket->data + if !$p->pool + set $p = (apr_bucket_heap *)$bucket->data + end + set $data = $p->base+$bucket->start + + else + if $bucket->type == &apr_bucket_type_mmap + # is this safe if not APR_HAS_MMAP? + set $refcount = ((apr_bucket_refcount *)$bucket->data)->refcount + set $p = (apr_bucket_mmap *)$bucket->data + set $data = ((char *)$p->mmap->mm)+$bucket->start + + else + if (($bucket->type == &apr_bucket_type_transient) || \ + ($bucket->type == &apr_bucket_type_immortal)) + set $data = ((char *)$bucket->data)+$bucket->start + + end + end + end + end + + if $sh + printf " | [" + else + printf " contents=[" + end + set $datalen = $bucket->length + 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 + + if $refcount != -1 + print_bkt_datacol "rc" "%d" $refcount $sh + else + print_bkt_datacol "rc" "n/%c" 'a' $sh + end + + else + # 3rd-party bucket type + print_bkt_datacol "contents" "[**unknown**%c" ']' $sh + printf " " + print_bkt_datacol "rc" "n/%c" 'a' $sh + end + end + end + end + + printf "\n" + +end + +define dump_bucket + dump_bucket_ex $arg0 0 +end +document dump_bucket + Print bucket info +end + +define dump_brigade + set $bb = (apr_bucket_brigade *)$arg0 + set $bucket = $bb->list.next + set $sentinel = ((char *)((&($bb->list)) \ + - ((size_t) &((apr_bucket *)0)->link))) + printf "dump of brigade 0x%lx\n", (unsigned long)$bb + + printf " | type (address) | length | " + printf "data addr | contents | rc\n" + printf "----------------------------------------" + printf "----------------------------------------\n" + + if $bucket == $sentinel + printf "brigade is empty\n" + end + + set $j = 0 + while $bucket != $sentinel + printf "%2d", $j + dump_bucket_ex $bucket 1 + set $j = $j + 1 + set $bucket = $bucket->link.next + end + printf "end of brigade\n" +end +document dump_brigade + Print bucket brigade info +end + +define dump_filters + set $f = $arg0 + while $f + printf "%s(0x%lx): ctx=0x%lx, r=0x%lx, c=0x%lx\n", \ + $f->frec->name, (unsigned long)$f, (unsigned long)$f->ctx, \ + $f->r, $f->c + set $f = $f->next + end +end +document dump_filters + Print filter chain info +end + +define dump_process_rec + set $p = $arg0 + printf "process_rec=0x%lx:\n", (unsigned long)$p + printf " pool=0x%lx, pconf=0x%lx\n", \ + (unsigned long)$p->pool, (unsigned long)$p->pconf +end +document dump_process_rec + Print process_rec info +end + +define dump_server_rec + set $s = $arg0 + printf "name=%s:%d\n", \ + $s->server_hostname, $s->port + dump_process_rec($s->process) +end +document dump_server_rec + Print server_rec info +end + +define dump_servers + set $s = $arg0 + while $s + dump_server_rec($s) + printf "\n" + set $s = $s->next + end +end +document dump_servers + Print server_rec list info +end |