]> granicus.if.org Git - apache/blob - .gdbinit
Correct behavior of HTTP request headers sent by ab in presence of -H command-
[apache] / .gdbinit
1 # gdb macros which may be useful for folks using gdb to debug
2 # apache.  Delete it if it bothers you.
3
4 define dump_table
5     set $t = (apr_table_entry_t *)((apr_array_header_t *)$arg0)->elts
6     set $n = ((apr_array_header_t *)$arg0)->nelts
7     set $i = 0
8     while $i < $n
9         if $t[$i].val == (void *)0L
10            printf "[%u] '%s'=>NULL\n", $i, $t[$i].key
11         else
12            printf "[%u] '%s'='%s'\n", $i, $t[$i].key, $t[$i].val
13         end
14         set $i = $i + 1
15     end
16 end
17 document dump_table
18     Print the key/value pairs in a table.
19 end
20
21
22 define rh
23         run -f /home/dgaudet/ap2/conf/mpm.conf
24 end
25
26 define ro
27         run -DONE_PROCESS
28 end
29
30 define dump_string_array
31     set $a = (char **)((apr_array_header_t *)$arg0)->elts
32     set $n = (int)((apr_array_header_t *)$arg0)->nelts
33     set $i = 0
34     while $i < $n
35         printf "[%u] '%s'\n", $i, $a[$i]
36         set $i = $i + 1
37     end
38 end
39 document dump_string_array
40     Print all of the elements in an array of strings.
41 end
42
43 define printmemn
44     set $i = 0
45     while $i < $arg1
46         if $arg0[$i] < 0x20 || $arg0[$i] > 0x7e
47             printf "~"
48         else
49             printf "%c", $arg0[$i]
50         end
51         set $i = $i + 1
52     end
53 end
54
55 define print_bkt_datacol
56     # arg0 == column name
57     # arg1 == format
58     # arg2 == value
59     # arg3 == suppress header?
60     set $suppressheader = $arg3
61
62     if !$suppressheader
63         printf " "
64         printf $arg0
65         printf "="
66     else
67         printf " | "
68     end
69     printf $arg1, $arg2
70 end
71
72 define dump_bucket_ex
73     # arg0 == bucket
74     # arg1 == suppress header?
75     set $bucket = (struct apr_bucket *)$arg0
76     set $sh = $arg1
77     set $refcount = -1
78
79     print_bkt_datacol "bucket" "%-9s" $bucket->type->name $sh
80     printf "(0x%08lx)", (unsigned long)$bucket
81     print_bkt_datacol "length" "%-6ld" (long)($bucket->length) $sh
82     print_bkt_datacol "data" "0x%08lx" $bucket->data $sh
83
84     if !$sh
85         printf "\n    "
86     end
87
88     if (($bucket->type == &apr_bucket_type_eos)   || \
89         ($bucket->type == &apr_bucket_type_flush))
90
91         # metadata buckets, no content
92         print_bkt_datacol "contents" "%c" ' ' $sh
93         printf "                     "
94         print_bkt_datacol "rc" "n/%c" 'a' $sh
95
96     else
97     if ($bucket->type == &ap_bucket_type_error)
98
99         # metadata bucket, no content but it does have an error code in it
100         print_bkt_datacol "contents" "%c" ' ' $sh
101         set $status = ((ap_bucket_error *)$bucket->data)->status
102         printf " (status=%3d)        ", $status
103         print_bkt_datacol "rc" "n/%c" 'a' $sh
104
105     else
106     if (($bucket->type == &apr_bucket_type_file) || \
107         ($bucket->type == &apr_bucket_type_pipe) || \
108         ($bucket->type == &apr_bucket_type_socket))
109
110         # buckets that contain data not in memory (ie not printable)
111
112         print_bkt_datacol "contents" "[**unprintable**%c" ']' $sh
113         printf "     "
114         if $bucket->type == &apr_bucket_type_file
115             set $refcount = ((apr_bucket_refcount *)$bucket->data)->refcount
116             print_bkt_datacol "rc" "%d" $refcount $sh
117         end
118
119     else
120     if (($bucket->type == &apr_bucket_type_heap)      || \
121         ($bucket->type == &apr_bucket_type_pool)      || \
122         ($bucket->type == &apr_bucket_type_mmap)      || \
123         ($bucket->type == &apr_bucket_type_transient) || \
124         ($bucket->type == &apr_bucket_type_immortal))
125
126         # in-memory buckets
127
128         if $bucket->type == &apr_bucket_type_heap
129             set $refcount = ((apr_bucket_refcount *)$bucket->data)->refcount
130             set $p = (apr_bucket_heap *)$bucket->data
131             set $data = $p->base+$bucket->start
132
133         else
134         if $bucket->type == &apr_bucket_type_pool
135             set $refcount = ((apr_bucket_refcount *)$bucket->data)->refcount
136             set $p = (apr_bucket_pool *)$bucket->data
137             if !$p->pool
138                 set $p = (apr_bucket_heap *)$bucket->data
139             end
140             set $data = $p->base+$bucket->start
141
142         else
143         if $bucket->type == &apr_bucket_type_mmap
144             # is this safe if not APR_HAS_MMAP?
145             set $refcount = ((apr_bucket_refcount *)$bucket->data)->refcount
146             set $p = (apr_bucket_mmap *)$bucket->data
147             set $data = ((char *)$p->mmap->mm)+$bucket->start
148
149         else
150         if (($bucket->type == &apr_bucket_type_transient) || \
151             ($bucket->type == &apr_bucket_type_immortal))
152             set $data = ((char *)$bucket->data)+$bucket->start
153
154         end
155         end
156         end
157         end
158
159         if $sh
160             printf " | ["
161         else
162             printf " contents=["
163         end
164         set $datalen = $bucket->length
165         if $datalen > 17
166             printmem $data 17
167             printf "..."
168             set $datalen = 20
169         else
170             printmemn $data $datalen
171         end
172         printf "]"
173         while $datalen < 20
174             printf " "
175             set $datalen = $datalen + 1
176         end
177
178         if $refcount != -1
179             print_bkt_datacol "rc" "%d" $refcount $sh
180         else
181             print_bkt_datacol "rc" "n/%c" 'a' $sh
182         end
183
184     else
185         # 3rd-party bucket type
186         print_bkt_datacol "contents" "[**unknown**%c" ']' $sh
187         printf "         "
188         print_bkt_datacol "rc" "n/%c" 'a' $sh
189     end
190     end
191     end
192     end
193
194     printf "\n"
195
196 end
197
198 define dump_bucket
199     dump_bucket_ex $arg0 0
200 end
201 document dump_bucket
202     Print bucket info
203 end
204
205 define dump_brigade
206     set $bb = (apr_bucket_brigade *)$arg0
207     set $bucket = $bb->list.next
208     set $sentinel = ((char *)((&($bb->list)) \
209                                - ((size_t) &((struct apr_bucket *)0)->link)))
210     printf "dump of brigade 0x%lx\n", (unsigned long)$bb
211
212     printf "   | type     (address)    | length | "
213     printf "data addr  | contents               | rc\n"
214     printf "----------------------------------------"
215     printf "----------------------------------------\n"
216
217     if $bucket == $sentinel
218         printf "brigade is empty\n"
219     end
220
221     set $j = 0
222     while $bucket != $sentinel
223         printf "%2d", $j
224         dump_bucket_ex $bucket 1
225         set $j = $j + 1
226         set $bucket = $bucket->link.next
227     end
228     printf "end of brigade\n"
229 end
230 document dump_brigade
231     Print bucket brigade info
232 end
233
234 define dump_filters
235     set $f = $arg0
236     while $f
237         printf "%s(0x%lx): ctx=0x%lx, r=0x%lx, c=0x%lx\n", \
238         $f->frec->name, (unsigned long)$f, (unsigned long)$f->ctx, \
239         $f->r, $f->c
240         set $f = $f->next
241     end
242 end
243 document dump_filters
244     Print filter chain info
245 end
246
247 define dump_process_rec
248     set $p = $arg0
249     printf "process_rec=0x%lx:\n", (unsigned long)$p
250     printf "   pool=0x%lx, pconf=0x%lx\n", \
251            (unsigned long)$p->pool, (unsigned long)$p->pconf
252 end
253 document dump_process_rec
254     Print process_rec info
255 end
256
257 define dump_server_rec
258     set $s = $arg0
259     printf "name=%s:%d\n", \
260             $s->server_hostname, $s->port
261     dump_process_rec($s->process)
262 end
263 document dump_server_rec
264     Print server_rec info
265 end
266
267 define dump_servers
268     set $s = $arg0
269     while $s
270         dump_server_rec($s)
271         printf "\n"
272         set $s = $s->next
273     end
274 end
275 document dump_servers
276     Print server_rec list info
277 end