linux驱动调试方法整理
一般我喜欢把linux驱动的调试按矛盾分为几大类1.驱动工程师和内核/自己的 2.应用工程师和驱动工程师的。其中我们需要掌握linux众多的调试控件才能灵活运用。驱动工程师和内核/自己的1.驱动加载和驱动调试信息使用printkper_log打印需求使用动态打印即需要手动开启的打印模式减少运行使用资源。需要手动输入需要打印的内容 -p 至 /sys/kernel/debug/dynamic_debug/control文件2.CPU相关的问题这类问题排查方法及其重要首先使用top查看 用户cpu使用概率 平均使用负载 软中断使用率。如果用户cpu使用概率升高可以通过pidstat查看用户/系统cpu使用率排查特定线程如果平均负载高的话可以使用vmstat查看不可中断以及运行进程如果是不可中断就要查看io的分析如果是运行状态可以使用top和pidstat查看分别是哪些进程如果是软件中断需要使用/proc/softirqs文件找出各种类型perf的event也可找出软中断函数如果定位在网络可以使用专用工具。做性能优化可以用到perf的stat命令3.IO问题和cpu一样排查方法很总要首先使用iostat或者iotop(各个线程io吞吐量)查看IO设备的性能瓶颈然后根据pidstat定位瓶颈出现的原因找出拼劲线程通过分析线程的瓶颈分析应用程序和驱动之间的调用以及一些列方法排查出来有时候也可以cat一下文件4.软中断问题使用dstat查看软中断中的一些吞吐量、中断之类的数据如果数据有一场可以分别查看硬中断和软中断cat /proc/interrupts差中断和频率查看中断亲和性cat /proc/irq/中断号/smp_affinity 查看软中断cat /proc/softirqs找到了发生源可以使用相关指令查看软件中断的频率和执行时间等等如下/sys/kernel/debug/tracing/events/irq/softirq_entry /sys/kernel/debug/tracing/events/irq/softirq_exit5.线程问题对于线程问题的排查一般都是通过监视的方法strace ltrace ftrace ptrace其中ptrace和ftrace是系统调用ltrace和strace建立在ptrace上的。ptrace可以获取制定进程的制定调试指令下的寄存器值和地址空间ltrace可以跟踪应用程序对共享库的调用ftrace可以跟踪内核中的函数的调用过程一般使用ftrace-cmd多一点strace可以跟踪用户程序和内核函数的调用过程6.内存问题oops打印也可看出内存问题可以分为应用层问题、内核、内存优化的问题应用使用例如Valgrind泄露之类的问题内核调试方案dump_stack调试WARN_ON驱动使用 --- 警告 ---- 定位谁调度BUG_ON驱动使用 --- 严重缺陷 ----- 定位缺陷 ---- 可以进行判断panic驱动使用----- 没有判断条件Page Cache问题查看/proc/vmstat 和 /sys/kernel/debug/tracing/trace_pipe内存优化内存泄露Androd Profiler 和 MATbitmap(统一图片库 统一监控)设备分级设备分级 缓存 进程 安装包7.其他工具blktrace vmstat sar .proc/meminfo df slabtop biosoop biotop uptime(cpu负载) Cgroup调节cpu工作频率/sys/devices/system/cpu/cpufreq/policy0下节点调度策略:Performance Powersave Userspace SchedInteractiveConservativecpuinfo_max_freqcpuinfo_min_freqscaling_available_governors 支持策略集合scaling_governor当前的策略需要你后期来配置应用工程师和驱动工程师的1.排查用户调用了但是驱动没调用的效果使用strace ./指定应用程序
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2504201.html
如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!