crash —— 如果知道结构体内部某个成员的地址,如何输出结构体内容?

简介: crash —— 如果知道结构体内部某个成员的地址,如何输出结构体内容?

以下面的task_struct为例:

crash> *task_struct -ox ffff893e3846e000
struct task_struct {
  [ffff893e3846e000] struct thread_info thread_info;
  [ffff893e3846e010] volatile long state;
  [ffff893e3846e018] void *stack;
  [ffff893e3846e020] atomic_t usage;
  [ffff893e3846e024] unsigned int flags;
  [ffff893e3846e028] unsigned int ptrace;
  [ffff893e3846e030] struct llist_node wake_entry;
  [ffff893e3846e038] int on_cpu;
  [ffff893e3846e03c] unsigned int cpu;
  [ffff893e3846e040] unsigned int wakee_flips;
  [ffff893e3846e048] unsigned long wakee_flip_decay_ts;
  [ffff893e3846e050] struct task_struct *last_wakee;
  [ffff893e3846e058] int recent_used_cpu;
  [ffff893e3846e05c] int wake_cpu;
  [ffff893e3846e060] int on_rq;
  [ffff893e3846e064] int prio;
  [ffff893e3846e068] int static_prio;
  [ffff893e3846e06c] int normal_prio;
...
}

假如知道了on_rq成员的地址ffff893e3846e060,然后我想获取commmm的值.

有两种做法,第一种是获取on_rqtask_struct内部的偏移量,然后相减得到task_struct的首地址,然后就可以获取任何一个成员的值。

下面介绍第二种:

crash> *task_struct.comm,mm -l task_struct.on_rq 0xffff893e3846e060
  comm = "sh\000entry.sh\000]\000\000",
  mm = 0xffff893cb80fd000,
相关文章
|
6月前
结构体例子
编写一个程序输出10个学生的姓名,性别,总分,语文,数学,外语成绩的成绩单。
45 3
|
2月前
crash —— 如何获取结构体成员指向的结构的内容?
crash —— 如何获取结构体成员指向的结构的内容?
|
2月前
crash —— 查看数据结构内部成员的偏移量和地址
crash —— 查看数据结构内部成员的偏移量和地址
|
5月前
|
编译器 C语言 C++
结构体的详解(想要彻底了解结构体,那么看这一篇就够了!)
结构体的详解(想要彻底了解结构体,那么看这一篇就够了!)
|
6月前
|
安全
C learning_15 结构体类型的声明、结构体初始化、结构体成员访问、结构体传参
C learning_15 结构体类型的声明、结构体初始化、结构体成员访问、结构体传参
|
5月前
|
存储 编译器 C语言
C语言学习记录——结构体(声明、初始化、自引用、内存对齐、结构体设计、修改默认对齐数、结构体传参)一
C语言学习记录——结构体(声明、初始化、自引用、内存对齐、结构体设计、修改默认对齐数、结构体传参)一
55 2
|
5月前
|
编译器 Linux C语言
C语言学习记录——结构体(声明、初始化、自引用、内存对齐、结构体设计、修改默认对齐数、结构体传参)二
C语言学习记录——结构体(声明、初始化、自引用、内存对齐、结构体设计、修改默认对齐数、结构体传参)二
50 1
|
5月前
|
Go
go反射获取变量类型、值、结构体成员、结构体方法
go反射获取变量类型、值、结构体成员、结构体方法
|
6月前
结构体变量的定义以及与结构体变量调用的两种方式
结构体变量的定义以及与结构体变量调用的两种方式
88 0
|
C语言
【C语言】结构体 -- 结构体的声明 -- 定义和初始化 -- 成员的访问 -- 结构体传参
【C语言】结构体 -- 结构体的声明 -- 定义和初始化 -- 成员的访问 -- 结构体传参