【Linux】内核调用栈打印函数dump_stack使用效果

 init/main.c的start_kernel示例,这个调用栈不太深:

 /var/log/dmesg日志:

[    0.000000] kernel: [init/main.c start_kernel 911] start_kernel(void)
[    0.000000] kernel: [kernel/panic.c print_tainted 519 LOG_TIMES: 1 ]  
[    0.000000] kernel: CPU: 0 PID: 0 Comm: swapper Not tainted 6.9.0+ #3
[    0.000000] kernel: Call Trace:
[    0.000000] kernel:  <TASK>
[    0.000000] kernel:  dump_stack_lvl+0x76/0xa0
[    0.000000] kernel:  dump_stack+0x10/0x20
[    0.000000] kernel:  start_kernel+0x51/0x1780
[    0.000000] kernel:  x86_64_start_reservations+0x18/0x30
[    0.000000] kernel:  x86_64_start_kernel+0xbf/0x110
[    0.000000] kernel:  common_startup_64+0x13e/0x141
[    0.000000] kernel:  </TASK>

这是网卡驱动发送数据的函数,调用栈比较深:


[   20.288274] kernel: [kernel/sched/core.c wake_up_new_task 4974]  pid: 1325 exe name: (udev-worker) 
[   20.294028] kernel: [net/ipv4/udp.c udp_send_skb 913]  
[   20.294037] kernel: [net/ipv4/ip_output.c ip_send_skb 1520]  
[   20.294042] kernel: [net/ipv4/ip_output.c ip_local_out 131] 1
[   20.294046] kernel: [net/ipv4/ip_output.c __ip_local_out 107] 1
[   20.294072] kernel: [include/linux/netdevice.h dev_queue_xmit 3092]  
[   20.294078] kernel: [net/core/dev.c __dev_queue_xmit 4378]  
[   20.294083] kernel: [net/core/dev.c __dev_xmit_skb 3855]  
[   20.294088] kernel: [net/sched/sch_generic.c sch_direct_xmit 322]  
[   20.294094] kernel: [net/core/dev.c dev_hard_start_xmit 3648]  
[   20.294098] kernel: [net/core/dev.c xmit_one 3631]  
[   20.294102] kernel: [include/linux/netdevice.h netdev_start_xmit 4922]  
[   20.294107] kernel: [include/linux/netdevice.h __netdev_start_xmit 4905] ops->ndo_start_xmit(skb, dev);
[   20.294112] kernel: [drivers/net/ethernet/intel/e1000/e1000_main.c e1000_xmit_frame 3200]  
[   20.294118] kernel: CPU: 2 PID: 748 Comm: avahi-daemon Not tainted 6.9.0+ #3
[   20.294126] kernel: Hardware name: VMware, Inc. VMware Virtual Platform/440BX Desktop Reference Platform, BIOS 6.00 11/12/2020
[   20.294131] kernel: Call Trace:
[   20.294136] kernel:  <TASK>
[   20.294143] kernel:  dump_stack_lvl+0x76/0xa0
[   20.294159] kernel:  dump_stack+0x10/0x20
[   20.294171] kernel:  e1000_xmit_frame+0x53/0x1ba0 [e1000]
[   20.294230] kernel:  ? vprintk_default+0x1d/0x30
[   20.294240] kernel:  ? vprintk+0x41/0x80
[   20.294250] kernel:  ? _printk+0x60/0x90
[   20.294266] kernel:  netdev_start_xmit+0xdd/0x340
[   20.294280] kernel:  dev_hard_start_xmit+0x9a/0x450
[   20.294293] kernel:  sch_direct_xmit+0xea/0x450
[   20.294307] kernel:  __dev_queue_xmit+0xb40/0x1090
[   20.294320] kernel:  ? _printk+0x60/0x90
[   20.294335] kernel:  ip_finish_output2+0x35d/0x810
[   20.294347] kernel:  __ip_finish_output+0xd9/0x280
[   20.294356] kernel:  ? dev_loopback_xmit+0xb7/0x250
[   20.294366] kernel:  ip_finish_output+0x60/0x280
[   20.294455] kernel:  ip_mc_output+0xb7/0x420
[   20.294465] kernel:  ? __pfx_ip_finish_output+0x10/0x10
[   20.294475] kernel:  ip_local_out+0x1e2/0x1f0
[   20.294485] kernel:  ip_send_skb+0x77/0x1e0
[   20.294494] kernel:  udp_send_skb+0x1a4/0x4d0
[   20.294507] kernel:  udp_sendmsg+0xc25/0x1060
[   20.294520] kernel:  ? __pfx_ip_generic_getfrag+0x10/0x10
[   20.294542] kernel:  inet_sendmsg+0x180/0x1f0
[   20.294550] kernel:  ? inet_sendmsg+0x180/0x1f0
[   20.294620] kernel:  sock_sendmsg_nosec+0x18e/0x220
[   20.294633] kernel:  ____sys_sendmsg+0x356/0x470
[   20.294649] kernel: [kernel/fork.c __do_sys_set_tid_address 1979]  
[   20.294650] kernel:  ___sys_sendmsg+0x164/0x5c0
[   20.294676] kernel:  __sys_sendmsg+0x89/0xf0
[   20.294686] kernel:  ? __sys_sendmsg+0x89/0xf0
[   20.294704] kernel:  __x64_sys_sendmsg+0x5a/0x180
[   20.294715] kernel:  x64_sys_call+0x25e/0x25c0
[   20.294725] kernel:  do_syscall_64+0x7e/0x180
[   20.294734] kernel:  ? aa_file_perm+0x140/0x570
[   20.294750] kernel:  ? inode_needs_update_time+0x4b/0xd0
[   20.294761] kernel:  ? file_update_time+0x1d/0x90
[   20.294770] kernel:  ? pipe_write+0x472/0x6b0
[   20.294783] kernel:  ? security_file_permission+0x36/0x60
[   20.294797] kernel:  ? vfs_write+0x2d1/0x6d0
[   20.294815] kernel:  ? ksys_write+0xc9/0x100
[   20.294828] kernel:  ? syscall_exit_to_user_mode+0x72/0x360
[   20.294841] kernel:  ? do_syscall_64+0x8b/0x180
[   20.294852] kernel:  ? restore_fpregs_from_fpstate+0x47/0xf0
[   20.294865] kernel:  ? switch_fpu_return+0x50/0xe0
[   20.294946] kernel:  ? syscall_exit_to_user_mode+0x72/0x360
[   20.294959] kernel:  ? do_syscall_64+0x8b/0x180
[   20.294969] kernel:  ? syscall_exit_to_user_mode+0x72/0x360
[   20.294982] kernel:  ? do_syscall_64+0x8b/0x180
[   20.294990] kernel:  ? ksys_write+0xc9/0x100
[   20.295003] kernel:  ? syscall_exit_to_user_mode+0x72/0x360
[   20.295016] kernel:  ? do_syscall_64+0x8b/0x180
[   20.295026] kernel:  ? do_syscall_64+0x8b/0x180
[   20.295036] kernel:  ? clear_bhb_loop+0x15/0x70
[   20.295047] kernel:  ? clear_bhb_loop+0x15/0x70
[   20.295057] kernel:  ? clear_bhb_loop+0x15/0x70
[   20.295070] kernel:  entry_SYSCALL_64_after_hwframe+0x76/0x7e
[   20.295080] kernel: RIP: 0033:0x796376b2c004
[   20.295087] kernel: Code: 15 19 6e 0d 00 f7 d8 64 89 02 b8 ff ff ff ff eb bf 0f 
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值