以下面的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,然后我想获取comm
和mm
的值.
有两种做法,第一种是获取on_rq
在task_struct
内部的偏移量,然后相减得到task_struct
的首地址,然后就可以获取任何一个成员的值。
下面介绍第二种:
crash> *task_struct.comm,mm -l task_struct.on_rq 0xffff893e3846e060
comm = "sh\000entry.sh\000]\000\000",
mm = 0xffff893cb80fd000,
标签:task,crash,struct,int,unsigned,rq,地址,结构
From: https://www.cnblogs.com/pengdonglin137/p/17726721.html