核心课程
Porducts
当前位置:首页    核心课程    IT技术
IT技术
本模块设计采用可视化与沙盘演练相结合的培训方式,将知识体系以可视化方式呈现来完成,对学员的实际专业知识进行咨询指导,帮助团队完善产品开发管理流程,定制符合自己特点的过程、方法和规范,提升组织级产品开发管理水平;以学员更容易理解的方式完成课程,可以达到非常好的培训效果,打开学员的兴趣,为实际工作做好准备。
编程语言和工具   Linux系统编程与调试调优

image.png  Linux系统编程与调试调优课程

image.png  课程天数:2天

image.png  课程介绍

     本课程在讲解具体的调试和优化方法时,紧扣底层的原理,讲解Linux的各种调试和优化工具具体数据的含义,使得工程师在调试时知其然,知其所以然,能全盘慧眼把关一个Linux系统。

image.png  课程收益

     通过本课程,学员可以系统化了解如下工作原理和实践方法:

     Linux的工具链、进程调度、内存管理、I/O模型、系统调用等系统原理,以及多进程、多线程、I/O编程的方法,融系统负载分析、内存分析、I/O分析、内核调试、应用调试等实践于理论。

image.png  培训对象

     嵌入式系统开发工程师、系统移植工程师;


image.png  课程大纲

第1单元:进入 Linux的精彩世界

     • Linux系统组成

     • GNU工具链和GDB调试

     • GCC编译的各个阶段分解

     • 反汇编, objdump

     • readelf, nm, strip

     • GDB调试技巧: 断点、watch、内存与backtrace等

     • GDB与多线程

     • JTAG与GDB结合

     • GDB的图形化调试

     • gprof

     • gcov

     • 崩溃转储core dump

     • strace和ltrace


第2单元:Linux内核进程调度与调试

     • task_struct

     • 进程生命周期

     • 进程调度算法

     • 进程调度时机

     • Linux内核线程实现原理

     • 实时性

     • 多核负载均衡

     • BFS调度器

     • top, htop, mpstat工具


第3单元:内核调试

     • printk 及其变体

     • 内核崩溃oops分析

     • 内核debug 选项

     • proc 和 sys

     • 内核启动过程调试

     • 内核启动时间优化调试

     • 待机和电源管理调试

     • 用JTAG调试内核


第4单元:内存分析与内存泄露

     • Linux内核内存管理

     • Out of memory (OOM)

     • 进程的内存消耗: VSS, RSS, PSS, USS

     • page cache

     • swap

     • /proc/meminfo, /proc/vmstat 和 /proc/slabinfo

     • free命令分析

     • smem分析进程内存

     • 堆内存泄露检查: valgrind

     • 栈溢出与保护页


第5单元:Linux多进程与多线程

     • 多进程通信

     • 多线程通信

     • 正确的互斥和同步方法

     • 可重入与线程安全

     • 多进程、多线程调试

     • IPC调试、死锁

     • Linux soft lockup调试


第6单元:Linux性能优化

     • CPU负载分析:top, htop

     • Linux的I/O模型

     • I/O负载分析:iostat, iotop

     • C10K问题

     • Linux逻辑分析仪:LTTng

     • 综合性能瓶颈:oprofile

     • 开机优化:bootchart

     • 功耗优化: powertop 和 cpufreq-bench

     • DS-5 streamline


第7单元:Linux基准程序

     • LMBench

     • Bonnie++

     • IOZone

     • Netperf/iperf


第八单元:实验课程

     • 写一个工具自动分析文件系统中程序与库的依赖关系图;

     • 写一个工具自动分析文件系统中程序与库的符号依赖;

     • gcov白盒覆盖率;

     • gdb调试多线程;

     • gdb attach到一个运行进程;

     • 调试core dump实例;

     • 用 strace和ltrace跟踪一个应用对内核和库的调用;

     • 跟踪和拦截Linux应用程序对动态库的调用;

     • 使用dev_xxx和pr_xxx打印信息;

     • 分析一次内核崩溃oops并反汇编;

     • 写一个透过/proc在用户空间和内核空间进行交互的例子;

     • 使用JTAG 和GDB调试内核;

     • 运行一个多线程的程序,观察top, htop, mpstat的情况;

     • 通过chrt, nice, renice, taskset方法改变进程的调度属性;

     • 通过cgroup分配CPU资源;

     • 分析一个运行时Linux的内存分布情况;

     • 用smem观察进程的内存变化;

     • 用valgrind跟踪一个有堆内存泄露的进程;

     • 写一个有栈溢出的程序并观察溢出表现;

     • 做I/O动作,观察page cache变化;

     • 运行一个引起OOM的程序;

     • 观察一个有一定CPU、I/O负载的系统CPU、I/O情况;

     • 运行oprofile分析 binary的时间比例;

     • 使用Bonnie++分析文件系统的性能;

     • 修改diry_ratio等值分析文件系统性能;

     • 使用LMBench分析操作系统性能;

     • 观察一个LTTng的结果;

     • 运行perf观察CPU、I/O分布情况;


  课程目录
1、Linux系统编程与调试调优
2、Linux内核开发与调试
3、高质高效嵌入式软件开发
4、C++语言高级运用与实战
5、Java语言高级运用与实战
站内搜索
联系电话
010-52883521
24小时全国咨询热线,言语交流更有效
公众平台
QQ客服

点击图标,马上与客服沟通  >>
返回顶部