首页 > 其他分享 >crash —— 如何知道哪些数据结构内嵌了指定的数据结构或者内嵌了指向指定数据结构的指针

crash —— 如何知道哪些数据结构内嵌了指定的数据结构或者内嵌了指向指定数据结构的指针

时间:2023-09-24 11:24:18浏览次数:43  
标签:内嵌 task struct 33 32 指定 40 数据结构

需求

有时我们有这样的需求,比如我们知道了结构体task_struct,然后我们又想知道内核中有哪些数据结构中包含了task_struct,或者包含了指向task_struct的指针。

做法

whatis -m可以做到:

crash> whatis -m task_struct
  SIZE  TYPE
     8  rcuwait
    16  core_thread
    16  io_task_cancel
    16  ns_get_path_task_args
    16  tgid_iter
    24  ldsem_waiter
    24  migration_arg
    24  migration_swap_arg
    24  rt_wake_q_head
    24  swait_queue
    32  default_wait_cb
    32  hwlat_kthread_data
    32  io_tctx_node
    32  io_wq_data
    32  irq_work
    32  msg_sender
...

此外还支持对列出的数据结构的大小进行过滤:

  • 获取大小为32字节的结构
crash> whatis -r 32 -m task_struct
SIZE  TYPE
  32  default_wait_cb
  32  hwlat_kthread_data
  32  io_tctx_node
  32  io_wq_data
  32  irq_work
  32  msg_sender
  32  nfs_referral_count
  32  perf_switch_event
  32  remote_function_call
  32  request_wait
  32  semaphore_waiter
  • 获取大小范围32-48字节的结构
crash> whatis -r 32-48 -m task_struct
SIZE  TYPE
  32  default_wait_cb
  32  hwlat_kthread_data
  32  io_tctx_node
  32  io_wq_data
  32  irq_work
  32  msg_sender
  32  nfs_referral_count
  32  perf_switch_event
  32  remote_function_call
  32  request_wait
  32  semaphore_waiter
  40  bpf_iter_seq_task_file_info
  40  debuggerinfo_struct
  40  ext_wait_queue
  40  klist_waiter
  40  mmap_unlock_irq_work
  40  mutex_waiter
  40  perf_comm_event
  40  to_kill
  48  execute_cb
  48  perf_task_event
  48  rwsem_waiter
  48  send_signal_irq_work

有时遇到slab内存泄漏,比如发现kmalloc-64这个slab占用的内存太大,我们可以用这个命令来获取大致是这个尺寸的结构有哪些:

crash> whatis -r 33-64
SIZE  TYPE
  33  cfg80211_ssid
  33  hdcp2_ake_send_hprime
  33  hdcp2_lc_send_lprime
  33  hdcp2_rep_stream_ready
  33  iso_directory_record
  33  netdev_phys_item_id
  34  acpi_pld_info
  34  bdb_lvds_options
  34  g4x_wm_state
  34  i2c_smbus_data
  34  ptp_header
  34  sky2_stat
  36  acpi_cedt_cfmws
  36  acpi_resource_i2c_serialbus
  36  acpi_resource_pin_function
...

标签:内嵌,task,struct,33,32,指定,40,数据结构
From: https://www.cnblogs.com/pengdonglin137/p/17725739.html

相关文章

  • crash —— 如何获取指定大小范围的数据结构有哪些?
    crash——如何知道哪些数据结构内嵌了指定的数据结构或者内嵌了指向指定数据结构的指针......
  • 解除锁定:一键批量完成 【解除锁定】所有指定文件
    ......
  • crash —— 查看数据结构内部成员的偏移量和地址
    whatis如果提前知道数据类型的定义,可以直接用struct、union等,否则可以直接用whatis。crash>whatis-opagestructpage{[0]unsignedlongflags;union{struct{union{[8]structlist_headlru;......
  • 【Java 基础篇】Java LinkedList 详解:数据结构的灵活伙伴
    在Java编程中,数据结构起着至关重要的作用。这些数据结构可以帮助我们组织和管理数据,使我们的代码更加高效和可维护。其中之一是LinkedList,它是一个灵活的数据结构,允许我们高效地进行插入和删除操作。本篇博客将深入探讨Java中的LinkedList,从基础概念到高级用法,为您呈现全面的......
  • 数据结构之 - 链表数据结构详解: 从基础到实现
    链表(LinkedList)是计算机科学中常用的数据结构之一,它具有灵活的内存分配和高效的插入、删除操作。本文将深入介绍链表的特性、基本类型、操作以及在实际应用中的使用场景。1.什么是链表?链表是一种线性数据结构,由一系列节点组成,每个节点包含数据和指向下一个节点的引用(或指针)。与数......
  • 【数据结构】第四章 多维数组与广义表
    4.1数组的逻辑结构和基本运算数组可看成是一种特殊的线性表,其特殊在于,表中的数组元素本身也是一种线性表。在早期的高级语言中,数组是唯一可供使用的数据类型。由于数组中各元素具有统一的类型,并且数组元素的下标一般具有固定的上界和下界,因此,数组的处理比其他复杂的结构更为简单。......
  • 数据结构之 - 深入了解数组数据结构
    数组是计算机科学中最基本且常用的数据结构之一。在本文中,我们将深入介绍数组的特性、操作以及在实际应用中的使用场景。通过全面了解数组,你将能够更好地理解它的原理和如何应用于解决问题。1.什么是数组?数组是一种线性数据结构,它由一系列相同类型的元素组成,这些元素被存储在连续......
  • 指定年份和月份,输出该月的天数
    #define_CRT_SECURE_NO_WARNINGS1#include<stdio.h>intrun_year(inty){ if(y%100!=0&&y%4==0||y%400==0) { return1; } else return0;}//判断y是不是闰年;如果是,返回1intgetdays_ofmonth(inty,intm){ intarr[]={0,31,28,31,......
  • 利用Python从现有的Excel表格中复制指定列生成新的Excel文件
    importxlrdimportxlwtimportpatternsaspatternsfile1='通讯专线汇总统计表.xls'file2='附件:历史存量邮电费明细.xls'data1=xlrd.open_workbook(file1)table1=data1.sheet_by_index(0)nrows1=table1.nrowszx_infos=[]#读取“通讯专线汇总统计表.xls”文件中......
  • C# 指定物理目录下载文件,Response.End导致“正在中止线程”异常的问题
    https://blog.51cto.com/u_15116285/5964873https://blog.csdn.net/phphot/article/details/4211921https://www.codenong.com/20988445/https://www.dbmng.com/art-2500.html现象:通过浏览器下载pdf文件,下载可以正常下载,可是却会抛出异常,提示正在中止线程。查了资料,能看懂的......