~ubuntu-branches/ubuntu/feisty/apache2/feisty

« back to all changes in this revision

Viewing changes to .gdbinit

  • Committer: Bazaar Package Importer
  • Author(s): Andreas Barth
  • Date: 2006-12-09 21:05:45 UTC
  • mfrom: (0.6.1 upstream)
  • Revision ID: james.westby@ubuntu.com-20061209210545-h70s0xaqc2v8vqr2
Tags: 2.2.3-3.2
* Non-maintainer upload.
* 043_ajp_connection_reuse: Patch from upstream Bugzilla, fixing a critical
  issue with regard to connection reuse in mod_proxy_ajp.
  Closes: #396265

Show diffs side-by-side

added added

removed removed

Lines of Context:
 
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