内存寻址 内存寻址内存地址 逻辑地址:用来指定一个操作数或一条指令的地址,段(segment)+偏移量(offset | displacement),偏移量指明了从段开始的地方到实际地址之间的距离 线性地址:也称作虚拟地址,32位无符号整数,通常用十六位进制数表示,值的范围从0x00000000~0xffffffff 物理地址:内存芯片级内存单元寻址 在内存寻址中,我们通常以字节为单位 段选择 2024-07-10 内存寻址 #内存寻址
Suspend (kernel 5.10) Suspend (kernel 5.10) state_store pm_suspend enter_state valid_state suspend_prepare sleep_state_supported pm_notifier_call_chain_robust suspend_freeze_processes freeze_processes freeze_kern 2024-06-20 Power Management #Power Management
crash Crash一个用于分析 Linux 内核转储文件的工具。它提供了一个交互式的环境,让用户能够检查内核转储文件中的信息,包括进程栈、内核数据结构等 进入crash环境12sudo -scrash /lib/debug/vmlinux btbacktrace打印内核栈回溯信息,bt pid 打印指定进程栈信息 1234567891011121314151617181920212223242526 2024-05-10 debug #debug
gdb gdb编译程序加参数时生成调试信息 g 和 -ggdb 都是令 gcc 生成调试信息,但是它们也是有区别的 选项 解析 g 该选项可以利用操作系统的“原生格式(native format)”生成调试信息。GDB 可以直接利用这个信息,其它调试器也可以使用这个调试信息 ggdb 使 GCC为GDB 生成专用的更为丰富的调试信息,但是,此时就不能用其他的调试器来进行调试了 (如 ddx 2024-05-10 debug #debug
kdump Kdumpkdump是在系统崩溃、死锁、或者死机的时候用来转储内存为vmcore保存到磁盘的一个工具和服务 相关配置12345678910111213CONFIG_KEXEC=yCONFIG_KEXEC_FILE=y //两者选其一,或者都选也可以,对应两个版本的kexec接口CONFIG_CRASH_DUMP=y //内核支持系统崩溃转储功能,即能够生成 vmcore 文件以便进行故障诊 2024-05-10 debug #debug
perf tar -xvf perf-5.10.0.tar.gzcd perf-5.10.0cd tools/perf/makesudo cp perf /usr/local/bin /usr/local/bin/perf –version download: https://cdn.kernel.org/pub 2024-05-10 debug #debug
strace stracestrace会记录和解析命令进程的所有系统调用以及这个进程所接收到的所有的信号值 -c 统计每一系统调用的所执行的时间,次数和出错的次数等. -d 输出strace关于标准错误的调试信息. -f 跟踪由fork调用所产生的子进程. -ff 如果提供-o filename,则所有进程的跟踪结果输出到相应的filename.pid中,pid是各进程的进程号. -F 尝试跟踪vfork调用 2024-05-10 debug #debug
bpftrace bpftrace和trace-bpfccbpftrace 探针 kprobeb/kretprobe为动态跟踪、内核级探针,kprobeb是检测函数执行的开始,kretprobe为检测结束(返回) uprobe/uretprobe为动态跟踪、用户级探针,uprobeb是检测用户级函数执行的开始,uretprobe为检测结束(返回)。tracepoint为静态跟踪、用户级探针 2024-05-10 debug #debug
设备模型 linux 设备模型基本结构 类型 内容 内核数据结构 对应/sys项 设备Devices 设备是此模型中最基本的类型,以设备本身的连接按层次组织 struct device /sys/devices/?/?/…/ 驱动Drivers 在一个系统中安装多个相同设备,只需要一份驱动程序的支持 struct devic 2024-03-10 设备驱动 > 设备模型 #设备驱动