换句话说,有没有一个命令可以在一个地址找到符号,同时使用 ptype 显示这个符号的详细信息?或者如果没有,我怎么写一个用户定义的命令来满足这个需求?</p>
例如,现在我可以先使用“info symbol”命令在地址中获取数据结构的名称(ngx_errlog_module_ctx),而不是像这样使用ptype显示数据结构的详细信息:</p>
(gdb) info symbol 0x80b4568
ngx_errlog_module_ctx in section .data of /usr/local/nginx/sbin/nginx
(gdb) ptype ngx_errlog_module_ctx
type = struct {
ngx_str_t name;
void *(*create_conf)(ngx_cycle_t *);
char *(*init_conf)(ngx_cycle_t *, void *);
}
但是现在,我如何编写一个可以像这样使用的用户定义命令(ptype_with_address):
ptype_with_address 0x80b4568
ngx_errlog_module_ctx in section .data of /usr/local/nginx/sbin/nginx
type = struct {
ngx_str_t name;
void *(*create_conf)(ngx_cycle_t *);
char *(*init_conf)(ngx_cycle_t *, void *);
}
我想这样做是因为我正在研究 nginx 的代码,我想编写一个用户定义的命令来显示所有 ngx_modules 的详细信息,包括每个模块的 ctx 成员变量。