linux栈溢出检测方法有哪些,Linux内核栈溢出检测

66b52468c121889b900d4956032f1009.png

8种机械键盘轴体对比

本人程序员,要买一个写代码的键盘,请问红轴和茶轴怎么选?

借助Linux debugfs来检测内核栈使用状态及溢出检测

工具

Linux内核中有KASAN和kmemcheck

KASAN只支持arm64和x86,见内核文档Documentation/features/debug/KASAN/arch-support.txt

kmemcheck仅支持x86

因此在arm下使用debugfs来跟踪内核栈使用情况

内核配置debugfs支持

ftrace支持Kernel hacking ->

Tracers ->

[*] Trace max stack

使用# mount -t debugfs nodev /sys/kernel/debug

# echo 1 > /proc/sys/kernel/stack_tracer_enabled

检查以下状态# cat /sys/kernel/debug/tracing/stack_max_size

# cat /sys/kernel/debug/tracing/stack_trace

# cat /sys/kernel/debug/tracing/stack_max_size

7272

# cat /sys/kernel/debug/tracing/stack_trace

Depth Size Location (61 entries)

----- ---- --------

0) 7080 224 select_task_rq_fair+0x3be/0x980

1) 6856 112 try_to_wake_up+0x14a/0x400

2) 6744 16 wake_up_process+0x15/0x20

3) 6728 16 wakeup_softirqd+0x35/0x40

4) 6712 48 raise_softirq_irqoff+0x4f/0x90

5) 6664 48 __blk_complete_request+0x132/0x140

6) 6616 16 blk_complete_request+0x25/0x30

7) 6600 32 scsi_done+0x2f/0x60

8) 6568 48 megasas_queue_command+0xd1/0x140 [megaraid_sas]

9) 6520 48 scsi_dispatch_cmd+0x1ac/0x340

10) 6472 96 scsi_request_fn+0x415/0x590

11) 6376 32 __generic_unplug_device+0x32/0x40stack_max_size内核栈使用的峰值

stack_trace表示此峰值下的callstack和callstack中个个函数使用的栈的大小

Ref

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值