debug学习

本文涉及的产品
日志服务 SLS,月写入数据量 50GB 1个月
简介: debug学习

参考

内核

工具

kdump&crash

drgn

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的脚本

decode_stacktrace.sh

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

反汇编

硬件断点

  • bpftrace
  • 硬件断点API

gdb

gdb -ex 'info functions' -ex 'info files' -e 'quit' ./hello.ko

debugfs

  • 命令
modprobe ice dyndbg=+p
echo "module ice +p" > /sys/kernel/debug/dynamic_debug/control
sudo insmod ice.ko dyndbg="+p" fwlog_events=0x0FFFFFFF fwlog_level=2

dmesg

  • 命令
# 等待输出新的内容日志: -w
dmesg -w file.log  # 将内核日志重定向到文件中,并且等待输出新的日志
  • 向内核日志缓冲区写入日志
# echo hello > /dev/kmsg

trace

  • 向trace缓冲区写日志
# echo helo > trace_marker

内存类

kasan

OOB

UAF

kfence

OOB

UAF

KCSAN

KMSAN

UBSAN

内存泄漏

slub_debug

死锁

softlockup

hung task

hard lockup

应用

ASAN

Heaptrack

服务器故障排查

相关实践学习
阿里云图数据库GDB入门与应用
图数据库(Graph Database,简称GDB)是一种支持Property Graph图模型、用于处理高度连接数据查询与存储的实时、可靠的在线数据库服务。它支持Apache TinkerPop Gremlin查询语言,可以帮您快速构建基于高度连接的数据集的应用程序。GDB非常适合社交网络、欺诈检测、推荐引擎、实时图谱、网络/IT运营这类高度互连数据集的场景。 GDB由阿里云自主研发,具备如下优势: 标准图查询语言:支持属性图,高度兼容Gremlin图查询语言。 高度优化的自研引擎:高度优化的自研图计算层和存储层,云盘多副本保障数据超高可靠,支持ACID事务。 服务高可用:支持高可用实例,节点故障迅速转移,保障业务连续性。 易运维:提供备份恢复、自动升级、监控告警、故障切换等丰富的运维功能,大幅降低运维成本。 产品主页:https://www.aliyun.com/product/gdb
相关文章
|
算法
写代码一天,debug一年?
写代码一天,debug一年?
230 0
|
网络协议
|
网络协议
#ifdef _DEBUG
引用:http://zhidao.baidu.com/question/165848051.html #ifdef _DEBUG #define new DEBUG_NEW #undef THIS_FILE static char THIS_FILE[] = __FILE__; #endif 这几行代码重新定义默认的 new 操作符为DEBUG_NEW(MFC自己写的一个宏),使得任何通过new新建出来的对象或者内存块都会被记录下来,如果你的程序此后没有释放它们的话,在你退出调试状态时,VC会在输出窗口里面显示出来这些没有被释放的对象或者内存块的信息(这就是所谓的“内存泄露”)。
665 0
|
网络安全 Ruby
|
存储
Debug 资料大全(转贴)
Debug 资料大全Debug-PC之开山老祖  Debug 原意是杀虫子。这里是机器调试工具。  其实,Debug的由来,还有一则趣闻,在早期美国的一计算机房中,科学家正在紧张的工作。同时,许多台大型的计算机也在不停的运行着。
1041 0
|
存储 C++
神秘的 _DEBUG 宏从何处来?
神秘的 _DEBUG 宏从何处来?

热门文章

最新文章