crash —— 如何查看数据是什么类型以及函数原型

简介: crash —— 如何查看数据是什么类型以及函数原型

在crash中可以用whatis命令查看数据类型信息以及函数的原型。

如果想知道某个数据是什么类型那么可以用下面的方法:

查看结构体的定义

crash> whatis mm_struct
struct mm_struct {
struct {
struct maple_tree mm_mt;
unsigned long (*get_unmapped_area)(struct file *, unsigned long, unsigned long, unsigned long, unsigned lon;
        unsigned long mmap_base;
        unsigned long mmap_legacy_base;
...

上面显示mm_struct是一个结构体,那么也可以用struct命令:

crash> struct mm_struct
struct mm_struct {
struct {
struct maple_tree mm_mt;
unsigned long (*get_unmapped_area)(struct file *, unsigned long, unsigned long, unsigned long, unsigned lon;
        unsigned long mmap_base;
        unsigned long mmap_legacy_base;
...

查看联合体的定义

crash> whatis snd_pcm_sync_id
union snd_pcm_sync_id {
unsigned char id[16];
unsigned short id16[8];
unsigned int id32[4];
}
SIZE: 16

查看typedef类型

crash> whatis call_single_data_t
typedef struct __call_single_data {
struct __call_single_node node;
smp_call_func_t func;
void *info;
} call_single_data_t;
SIZE: 32
crash> whatis cpumask_var_t
typedef struct cpumask {
unsigned long bits[1];
} [1] cpumask_var_t;
SIZE: 8
crash> whatis smp_call_func_t
typedef void (*)(void *) smp_call_func_t;
SIZE: 8

查看枚举类型的定义

crash> whatis acpi_execute_type
typedef enum {
  OSL_GLOBAL_LOCK_HANDLER = 0
  OSL_NOTIFY_HANDLER = 1
  OSL_GPE_HANDLER = 2
  OSL_DEBUGGER_MAIN_THREAD = 3
  OSL_DEBUGGER_EXEC_THREAD = 4
  OSL_EC_POLL_HANDLER = 5
  OSL_EC_BURST_HANDLER = 6
} acpi_execute_type;
crash> whatis pageflags
enum pageflags {
  PG_locked = 0
  PG_referenced = 1
  PG_uptodate = 2
  PG_dirty = 3
  PG_lru = 4
  PG_active = 5
  PG_workingset = 6
  PG_waiters = 7
  PG_error = 8
  PG_slab = 9
  PG_owner_priv_1 = 10
  PG_arch_1 = 11
  ...
};

查看函数原型

crash> whatis blk_update_request
bool blk_update_request(struct request *, blk_status_t, unsigned int);

查看全局变量的类型

crash> whatis cfd_data
struct call_function_data cfd_data;
相关文章
crash —— 查看数据结构内部成员的偏移量和地址
crash —— 查看数据结构内部成员的偏移量和地址
|
9月前
|
存储 关系型数据库 BI
实时计算UniFlow:Flink+Paimon构建流批一体实时湖仓
实时计算架构中,传统湖仓架构在数据流量管控和应用场景支持上表现良好,但在实际运营中常忽略细节,导致新问题。为解决这些问题,提出了流批一体的实时计算湖仓架构——UniFlow。该架构通过统一的流批计算引擎、存储格式(如Paimon)和Flink CDC工具,简化开发流程,降低成本,并确保数据一致性和实时性。UniFlow还引入了Flink Materialized Table,实现了声明式ETL,优化了调度和执行模式,使用户能灵活调整新鲜度与成本。最终,UniFlow不仅提高了开发和运维效率,还提供了更实时的数据支持,满足业务决策需求。
|
网络协议 测试技术 开发者
网工就该了解:localhost 与 127.0.0.1 的区别
网工就该了解:localhost 与 127.0.0.1 的区别
177 1
|
中间件 测试技术 调度
利用率夹紧(Utilization Clamping) 【ChatGPT】
利用率夹紧(Utilization Clamping) 【ChatGPT】
|
Windows
window如何批量创建文件夹
【5月更文挑战第20天】window如何批量创建文件夹
792 1
|
负载均衡 算法 Linux
深入理解Linux内核进程CPU负载均衡机制(下)
深入理解Linux内核进程CPU负载均衡机制
|
数据采集 搜索推荐 算法
fuzzywuzzy,一个好用的 Python 库!
fuzzywuzzy,一个好用的 Python 库!
321 0

热门文章

最新文章