这个内存地址包含什么?

时间:2015-02-24 19:56:16

标签: c apache gdb

我在gdb会话中启动了Apache http服务器(版本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) 

有人有时间向我解释"\370\022%\344\377\177"是什么吗?

1 个答案:

答案 0 :(得分:0)

当字符不可打印时,此字符串"\370\022%\344\377\177"是以八进制形式由r-> per_dir_config指向的core_dir_config结构的开头。在十六进制中,您将拥有:

\370 = 11 111 000 = f8
\022 = 00 010 010 = 12
% = (ascii value) = 25
\344 = 11 100 100 = e4
\377 = 11 111 111 = ff
\177 = 01 111 111 = 7f

根据其他指针的值,我猜你的计算机有一个小端处理器,所以你必须反转字节顺序。那么价值是:

0x7fffe42512f8

它是r-> per_dir_config指向的core_dir_config结构的d字段的值。 由于d是char *,因此您可以键入x/s 0x7fffe42512f8来查看字符串。