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,
相关文章
|
域名解析 弹性计算 Apache
WordPress自助建站教程
本场景将基于一台基础环境为CentOS 7.8的ECS(云服务器)实例,在LAMP环境中安装WordPress,帮助您快速搭建自己的云上博客。
|
存储 C语言
C 语言文件读取全指南:打开、读取、逐行输出
要从文件读取,可以使用 r 模式: FILE *fptr; // 以读取模式打开文件 fptr = fopen("filename.txt", "r"); 这将使 filename.txt 打开以进行读取。 在 C 中读取文件需要一点工作。坚持住!我们将一步一步地指导您。 接下来,我们需要创建一个足够大的字符串来存储文件的内容。 例如,让我们创建一个可以存储多达 100 个字符的字符串:
1362 2
C 语言文件读取全指南:打开、读取、逐行输出
|
存储 Cloud Native Linux
C++封装了socket通信类
C++封装了socket通信类
|
29天前
|
人工智能 文字识别 搜索推荐
uTools软件安装教程及使用教程!一个跨平台的桌面效率工具!快速办公软件
uTools是一款跨平台效率工具,支持Win/Mac/Linux,通过“Alt+空格”呼出搜索框,集成OCR、翻译、计算器、剪贴板等数十款插件,打造个性化办公环境,轻量高效,即开即用。
332 2
|
安全 网络安全 开发工具
git 提示:fatal: Could not read from remote repository.
git 提示:fatal: Could not read from remote repository.
1834 0
git 提示:fatal: Could not read from remote repository.
|
2月前
|
IDE 编译器 开发工具
MSVC,VC++ 运行时库,msvcp140.dll,msvcp120.dll等报错
本文介绍了Microsoft Visual C++(MSVC)的核心概念、运行时库及其在Windows平台开发中的应用。内容涵盖MSVC的编译器、链接器、调试工具等核心组件,以及MSVC版本与Visual Studio的对应关系。同时解析了VC++运行时库(如msvcp140.dll)的作用和安装方式,帮助开发者理解程序依赖的底层机制,并提供常见问题的解决参考链接。
347 3
|
运维 NoSQL Ubuntu
深入理解Linux中的"crash"命令:内核崩溃的调试利器
`crash`是Linux内核崩溃调试工具,用于分析内核崩溃转储文件,提供GDB-like的交互式CLI。通过加载`vmcore`文件和内核映像,管理员可以查看系统状态、调用栈、内存布局等。安装`crash`可使用包管理器,如`apt-get`或`yum/dnf`。尽管有学习曲线且依赖转储文件,但`crash`在系统故障排查中极其重要。
|
IDE Linux 程序员
技术经验解读:【转】IO空间,IO端口,MMIO
技术经验解读:【转】IO空间,IO端口,MMIO
1002 0
|
JSON 测试技术 数据格式
Playwright 测试报告器
Playwright 测试报告器
457 4