0
我在gdb會話中啓動了Apache http server(版本2.4.12)。我踩着通過request.c模塊中的代碼,我打印出變量的內容這個內存地址包含什麼?
這是代碼
1546 AP_DECLARE(int) ap_file_walk(request_rec *r)
1547 {
1548 ap_conf_vector_t *now_merged = NULL;
1549 core_dir_config *dconf = ap_get_core_module_config(r->per_dir_config);
1550 ap_conf_vector_t **sec_ent = NULL;
1551 int num_sec = 0;
這是* R的輸出,我感興趣的是:
used_path_info = 2,
eos_sent = 0,
per_dir_config = 0x7fffe4251028,
request_config = 0x7fffe4258370,
log = 0x7ffff7fc1288,
log_id = 0x0,
這是我所得到的,當我檢查per_dir_config
(gdb) print 0x7fffe4251028
$99 = 140737021022248
(gdb) x/s 0x7fffe4251028
0x7fffe4251028: "\370\022%\344\377\177"
(gdb)
會這樣meone有時間向我解釋"\370\022%\344\377\177"
是什麼?
'r-> per_dir_config'是指向'ap_conf_vector_t'結構的指針。你得到的字符串是內容(部分,也許)。 – 2015-02-24 20:04:16
它是一個由7個字符組成的序列,其中包括''\ 370',''\ 022','''',''\ 344',''\ 377',''\ 177 '',''\ 0''(終止的空字符是隱含的)。 GDB主要以八進制格式向你展示它們。這是最好的GDB能夠做到的:當你通過地址直接訪問內存時,它對數據類型一無所知。 – 2015-02-24 22:48:30
爲什麼不直接使用print r-> per_dir_config? – dbrank0 2015-02-25 07:48:21