crash —— 获取内核和模块的符号

简介: crash —— 获取内核和模块的符号

查看所有的内核符号以及地址

crash> sym -l
0 (D) __per_cpu_start
0 (D) irq_stack_union
4000 (D) cpu_debug_store
5000 (D) cpu_tss_rw
8000 (D) gdt_page
9000 (d) exception_stacks
e000 (d) entry_stack_storage
f000 (D) espfix_waddr
f008 (D) espfix_stack
f010 (D) cpu_llc_id
...
41a80 (d) rt_uncached_list
41ac0 (d) rt6_uncached_list
42000 (d) kvm_apic_eoi
42040 (D) steal_time
42080 (d) apf_reason
43000 (D) __per_cpu_end
ffffffff81000000 (T) _stext
ffffffff81000000 (T) _text
ffffffff81000000 (T) startup_64
ffffffff81000030 (T) secondary_startup_64
ffffffff810000f0 (T) verify_cpu
ffffffff810001f0 (T) start_cpu0
ffffffff81000200 (T) __startup_64
ffffffff81001000 (T) hypercall_page
ffffffff81001000 (t) xen_hypercall_set_trap_table
ffffffff81001020 (t) xen_hypercall_mmu_update
ffffffff81001040 (t) xen_hypercall_set_gdt
ffffffff81001060 (t) xen_hypercall_stack_switch
ffffffff81001080 (t) xen_hypercall_set_callbacks
ffffffff810010a0 (t) xen_hypercall_fpu_taskswitch
ffffffff810010c0 (t) xen_hypercall_sched_op_compat
...
ffffffffa0d8f9b8 (b) ipmi_user
ffffffffa0d8f9c0 (b) ready
ffffffffa0d8f9c4 (b) poweroff_powercycle
ffffffffa0d91000 MODULE END: ipmi_poweroff

搜索含有指定字符串的内核符号

crash> sym -q kernel
16be8 (d) in_kernel_fpu
177e0 (D) kernel_cpustat
ffffffff81007cd0 (T) perf_callchain_kernel
ffffffff81029db0 (t) dump_kernel_offset
ffffffff8102d860 (T) arch_check_bp_in_kernelspace
ffffffff810304c0 (T) __kernel_fpu_end
ffffffff810304e0 (T) kernel_fpu_end
ffffffff810307f0 (T) __kernel_fpu_begin
ffffffff81030870 (T) kernel_fpu_begin
ffffffff810324d0 (T) copy_xstate_to_kernel
ffffffff81032980 (T) copy_kernel_to_xstate
ffffffff8105f000 (T) relocate_kernel
ffffffff8106a230 (t) pmd_populate_kernel.constprop.21
ffffffff8106aa50 (T) kernel_ident_mapping_init
...

获取所有内核模块的符号

crash> sym -M
ffffffffa0002000 MODULE START: sch_fq_codel
ffffffffa0002000 (t) qdisc_pkt_len
ffffffffa0002010 (t) qdisc_peek_dequeued
ffffffffa0002070 (t) codel_get_enqueue_time
ffffffffa0002080 (t) dequeue_func
ffffffffa00020e0 (t) fq_codel_leaf
ffffffffa00020f0 (t) fq_codel_find
ffffffffa0002100 (t) fq_codel_bind
ffffffffa0002110 (t) fq_codel_unbind
ffffffffa0002120 (t) fq_codel_tcf_block
ffffffffa0002140 (t) fq_codel_dump_class
ffffffffa0002150 (t) fq_codel_dump
ffffffffa0002380 (t) fq_codel_destroy
ffffffffa00023b0 (t) codel_vars_init
...
ffffffffa0005060 (d) fq_codel_qdisc_ops
ffffffffa0005108 (d) __warned.58506
ffffffffa0005140 (d) __this_module
ffffffffa0007000 MODULE END: sch_fq_codel
ffffffffa0008000 MODULE START: loop
ffffffffa0008000 (t) loop_validate_file
...
ffffffffa000e7a0 (b) none_funcs
ffffffffa000e7d0 (b) part_shift
ffffffffa000e7d4 (b) max_part
ffffffffa0010000 MODULE END: loop
ffffffffa0011000 MODULE START: bonding
ffffffffa0011000 (t) bond_get_nest_level
ffffffffa0011010 (t) bond_neigh_setup
ffffffffa0011030 (t) bond_select_queue
ffffffffa0011080 (t) bond_change_rx_flags
ffffffffa00111f0 (t) bond_should_notify_peers
...
ffffffffa0040000 MODULE END: bonding

获取指定内核模块的符号

crash> sym -m kvm
ffffffffa0105000 MODULE START: kvm
43008 (d) cpu_tsc_khz
43010 (D) current_vcpu
ffffffffa0105000 (t) ack_flush
ffffffffa0105010 (T) kvm_get_kvm
ffffffffa0105030 (T) kvm_disable_largepages
ffffffffa0105040 (t) kvm_vcpu_mmap
ffffffffa0105060 (t) kvm_device_mmap
ffffffffa0105090 (t) kvm_io_bus_sort_cmp
ffffffffa01050d0 (t) vm_stat_get_per_vm
...
ffffffffa019c020 (b) kvm_total_used_mmu_pages
ffffffffa019c048 (b) mmu_page_header_cache
ffffffffa019c050 (b) pte_list_desc_cache
ffffffffa01c4000 MODULE END: kvm
相关文章
|
8月前
|
C语言
内核源码中遇到不会解析的宏怎么办?
内核源码中遇到不会解析的宏怎么办?
244 1
|
4月前
crash —— 内核符号和地址直接相互转换
crash —— 内核符号和地址直接相互转换
|
8月前
|
Linux C++
【代码片段】Linux C++打印当前函数调用堆栈
【代码片段】Linux C++打印当前函数调用堆栈
243 0
|
8月前
|
程序员 编译器 C语言
内核中的打印
内核中的打印
101 0
|
Ubuntu C语言 C++
ubuntu编译高阶数组出现段错误(核心已转储)问题
在ubuntu中编译C语言不允许直接定义高阶数组如: int arr[3000][3000];
ubuntu编译高阶数组出现段错误(核心已转储)问题
|
Linux
Linux驱动开发 驱动程序的具体编写及出口入口函数解析,printk打印内核信息
Linux驱动开发 驱动程序的具体编写及出口入口函数解析,printk打印内核信息
254 0
|
Linux
内核笔记](四)——内核常见调试手段(printf、dump_stack、devmem)
内核笔记](四)——内核常见调试手段(printf、dump_stack、devmem)
282 0
内核笔记](四)——内核常见调试手段(printf、dump_stack、devmem)
|
存储 算法
内核符号表的生成和查找过程【转】
转自:http://blog.csdn.net/jasonchen_gbd/article/details/44025681 权声明:本文为博主原创文章,转载请附上原博链接。 在内核中维护者一张符号表,记录了内核中所有的符号(函数、全局变量等)的地址以及名字,这个符号表被嵌入到内核镜像中,使得内核可以在运行过程中随时获得一个符号地址对应的符号名。
1175 0
|
Linux
linux内核中打印栈回溯信息 - dump_stack()函数分析【转】
转自:http://blog.csdn.net/jasonchen_gbd/article/details/45585133 版权声明:本文为博主原创文章,转载请附上原博链接。   目录(?)[-] 简介 相关基本知识 关键寄存器介绍 内核中的函数栈 dump_stack函数   简介 当内核出现比较严重的错误时,例如发生Oops错误或者内核认为系统运行状态异常,内核就会打印出当前进程的栈回溯信息,其中包含当前执行代码的位置以及相邻的指令、产生错误的原因、关键寄存器的值以及函数调用关系等信息,这些信息对于调试内核错误非常有用。
1265 0
|
NoSQL Linux
linux信号机制 - 用户堆栈和内核堆栈的变化【转】
转自:http://itindex.net/detail/16418-linux-%E4%BF%A1%E5%8F%B7-%E5%A0%86%E6%A0%88 此文只简单分析发送信号给用户程序后,用户堆栈和内核堆栈的变化。
786 0