如何高效学习debug技能,提升编程能力?
摘要:参考 https:blog.csdn.netrikeyonecategory_10354155.html Linux内核故障分类和排查 Linux内核中oops 错误解析以及问题定位 panic和oops的区别 内核问题分析文章 L
参考
https://blog.csdn.net/rikeyone/category_10354155.html
Linux内核故障分类和排查
Linux内核中oops 错误解析以及问题定位
panic和oops的区别
内核问题分析文章
Linux中的错误码
Remote Serial Console HOWTO 配置串口
Internet FAQ Archives
服务器案例查询助手
Welcome to learning debugging
All GDB Content
谈复杂软件低概率问题定位和复现
测试工具
LTP:https://linux-test-project.readthedocs.io/en/latest/index.html
内核
工具
kdump&crash
openEuler kernel 技术分享 - 第1期 - kdump 基本原理、使用及案例介绍
openEuler kernel 技术分享 - 第3期 - Crash工具基本使用及实战分享
crash、kdump工具学习
crash工具和x86-64汇编基础
使用crash工具分析高通ramdump
early kdump
Documentation for Kdump - The kexec-based Crash Dumping Solution
VMCOREINFO
Linux Kdump 机制详解
crash实战:手把手教你使用crash分析内核dump
drgn
github: https://github.com/osandov/drgn
使用手册
User Guide
A kernel debugger in Python: drgn
Powerful and Programmable Kernel Debugging with drgn
BPF drgn tools
drgn: How the Linux Kernel Team at Meta Debugs the Kernel at Scale
drgn - Linux 调试的另一只翅膀 [上]
drgn - Linux 调试的另一只翅膀 [下]
Enter the drgn
使用drgn分析kdump:
https://www.cnblogs.com/pengdonglin137/articles/18377649
示例:
sudo drgn -s /mnt/linux-6.10/vmlinux -c /var/crash/202408232354/dump.202408232354
使用drgn分析live kernel:
-示例: sudo drgn -s /mnt/linux-6.10/vmlinux
内核中的一些基于drgn的脚本
tools/rcu: Add drgn script to dump number of RCU callbacks
tools/cgroup: add memcg_slabinfo.py tool
blkcg: add tools/cgroup/iocost_monitor.py
decode_stacktrace.sh
使用decode_stacktrace.sh解析内核调用栈
faddr2line
内核脚本faddr2line
pengdl@ubuntu:~/x86/linux-5.19$ ./scripts/faddr2line ./vmlinux proc_reg_open+255 blk_mq_dispatch_rq_list+599
proc_reg_open+255/0x1f0:
proc_reg_open at fs/proc/inode.c:524
blk_mq_dispatch_rq_list+599/0x850:
blk_mq_dispatch_rq_list at block/blk-mq.c:1897
pengdl@ubuntu:~/x86/linux-5.19$ ./scripts/faddr2line ./fs/proc/inode.o proc_reg_open+255
proc_reg_open+255/0x1f0:
proc_reg_open at /home/pengdl/work/Qemu/x86/linux-5.19/fs/proc/inode.c:524
stack canary
Linux 内核安全增强—— stack canary
__stack_chk_fail 栈溢出问题定位
反汇编
用objdump只反汇编想要的函数
硬件断点
bpftrace
watchpoint/asyncwatchpoint
