[bootlin/training-materials updates] master: debugging: Initial agenda (133bb8ea)
Alexandre Belloni
alexandre.belloni at bootlin.com
Wed Jan 27 23:35:14 CET 2021
Repository : https://github.com/bootlin/training-materials
On branch : master
Link : https://github.com/bootlin/training-materials/commit/133bb8ea98e5e319b23a8858c140866abf449a99
>---------------------------------------------------------------
commit 133bb8ea98e5e319b23a8858c140866abf449a99
Author: Alexandre Belloni <alexandre.belloni at bootlin.com>
Date: Sat Feb 2 14:05:12 2019 +0100
debugging: Initial agenda
Signed-off-by: Alexandre Belloni <alexandre.belloni at bootlin.com>
>---------------------------------------------------------------
133bb8ea98e5e319b23a8858c140866abf449a99
agenda/debugging-agenda.tex | 246 ++++++++++++++++++++++++++++++++++++++++++++
1 file changed, 246 insertions(+)
diff --git a/agenda/debugging-agenda.tex b/agenda/debugging-agenda.tex
new file mode 100644
index 00000000..c441232e
--- /dev/null
+++ b/agenda/debugging-agenda.tex
@@ -0,0 +1,246 @@
+\documentclass[a4paper,12pt,obeyspaces,spaces,hyphens]{article}
+
+\usepackage{agenda}
+\usepackage{colortbl}
+\usepackage{xcolor}
+\usepackage{calc}
+
+\hypersetup{pdftitle={Debugging, profiling, tracing training},
+ pdfauthor={Bootlin}}
+
+\renewcommand{\arraystretch}{2.0}
+
+\begin{document}
+
+\thispagestyle{fancy}
+
+\setlength{\arrayrulewidth}{0.8pt}
+
+\begin{center}
+\LARGE
+Debugging, profiling, tracing training\\
+\large
+3-day session
+\end{center}
+\vspace{1cm}
+
+\small
+\newcolumntype{g}{>{\columncolor{fedarkblue}}m{4cm}}
+\newcolumntype{h}{>{\columncolor{felightblue}}X}
+
+\arrayrulecolor{lightgray} {
+ \setlist[1]{itemsep=-5pt}
+ \begin{tabularx}{\textwidth}{|g|h|}
+ {\bf Title} & {\bf Debugging, profiling, tracing training} \\
+ \hline
+
+ {\bf Overview} &
+ Practical labs in a virtual machine. \\
+ \hline
+ {\bf Materials} &
+ Check that the course contents correspond to your needs:
+ \newline \url{https://bootlin.com/doc/training/embedded-linux}. \\
+ \hline
+
+ {\bf Duration} & {\bf Two} days - 16 hours (8 hours per day).
+ \newline 60\% of lectures, 40\% of practical labs. \\
+ \hline
+
+ {\bf Trainer} & One of the engineers listed on:
+ \newline \url{https://bootlin.com/training/trainers/}\\
+ \hline
+
+ {\bf Language} & Oral lectures: English, French.
+ \newline Materials: English.\\
+ \hline
+
+ {\bf Audience} & Embedded Linux system developers. \\
+ \hline
+
+ {\bf Prerequisites} &
+ {\bf Knowledge and practice of UNIX or GNU/Linux commands}
+ \newline People lacking experience on this topic should get
+ trained by themselves, for example with our freely available
+ on-line slides:
+ \newline \url{https://bootlin.com/blog/command-line/}. \\
+ \hline
+
+ \end{tabularx}
+
+ \begin{tabularx}{\textwidth}{|g|h|}
+ {\bf Required equipment} &
+ {\bf For on-site sessions only}
+ \newline Everything is supplied by Bootlin in public sessions.
+ \begin{itemize}
+ \item Video projector
+ \item PC computers with at least 8 GB of RAM, and Ubuntu Linux
+ installed in a {\bf free partition of at least 30 GB. Using Linux
+ in a virtual machine is not supported}, because of issues
+ connecting to real hardware.
+ \item We need Ubuntu Desktop 18.04 (Xubuntu and
+ other variants are fine). We don't support other
+ distributions, because we can't test all possible package versions.
+ \item {\bf Connection to the Internet} (direct or through the
+ company proxy).
+ \item {\bf PC computers with valuable data must be backed up}
+ before being used in our sessions. Some people have already made
+ mistakes during our sessions and damaged work data.
+ \end{itemize}\\
+ \hline
+
+ {\bf Materials} & Print and electronic copies of presentations and
+ labs.
+ \newline Electronic copy of lab files.\\
+ \hline
+
+\end{tabularx}}
+\normalsize
+
+\section{Day 1 - Morning}
+
+\feagendaonecolumn
+{Lecture - Linux application stack}
+{
+ \begin{itemize}
+ \item Global picture: understanding the general architecture of a
+ Linux system, overview of the major components.
+ \item What is the difference between a process and a thread, how
+ applications run concurrently.
+ \item Memory management: physical/virtual address spaces.
+ \end{itemize}
+}
+\\
+\feagendaonecolumn
+{Lecture - Common observability tools}
+{
+ \begin{itemize}
+ \item Tools to use to monitor a Linux system: processes, memory
+ usage and mapping, resources.
+ \item Non exhaustive list of commonly used tools.
+ \item Pseudo filesystems.
+ \end{itemize}
+}
+\section{Day 1 - Afternoon}
+\feagendaonecolumn
+{Lab - Check what is running on a system and its load}
+{
+ \begin{itemize}
+ \item Observe running processes.
+ \item Check memory allocation and mapping.
+ \item Monitor other resources usage.
+ \end{itemize}
+}
+\\
+\feagendatwocolumn
+{Lecture - Debugging an application}
+{
+ \begin{itemize}
+ \item Using gdb on a live process.
+ \item Postmortem diagnostic using core files.
+ \item Remote debugging with gdbserver.
+ \end{itemize}
+}
+{Lab - Solving an application crash}
+{
+ \begin{itemize}
+ \item Managing gdb from the command line, then from an IDE.
+ \item Debug a multithreaded application.
+ \item Python scripting.
+ \end{itemize}
+}
+\\
+
+\section{Day 2 - Morning}
+
+\feagendatwocolumn
+{Lecture - tracing an application}
+{
+ \begin{itemize}
+ \item Tracing system calls with strace.
+ \item Tracing library calls with ltrace.
+ \end{itemize}
+}
+{Lab – Debugging memory issues}
+{
+ \begin{itemize}
+ \item Analyze library calls from an application.
+ \item Debug a misbehaving application using strace.
+ \end{itemize}
+}
+
+\feagendatwocolumn
+{Lecture - Memory issues}
+{
+ \begin{itemize}
+ \item Virtual memory split: user vs. kernel.
+ \item Application memory layout.
+ \item Usual memory issues: buffer overflow, segmentation fault,
+ memory leaks, heap-stack collision.
+ \item Memory corruption tooling.
+ \end{itemize}
+}
+{Lab – Debugging memory issues}
+{
+ \begin{itemize}
+ \item Buffer overflow investigation with libefence.
+ \item Memory leak detection with Valgrind.
+ \item Performance issues due to memory over allocation.
+ \end{itemize}
+}
+
+\section{Day 2 - Afternoon}
+
+\feagendatwocolumn
+{Lecture – Tracing with perf}
+{
+ \begin{itemize}
+ \item uprobes theory.
+ \item Creation through sysfs.
+ \item Tracing with perf, the tracing/profiling swiss army knife.
+ \end{itemize}
+}
+{Lab - Dynamic tracing}
+{
+ \begin{itemize}
+ \item Tracing an application without recompiling with perf.
+ \end{itemize}
+}
+
+\feagendatwocolumn
+{Lecture – Application profiling}
+{
+ \begin{itemize}
+ \item Performances issues.
+ \item Gathering profiling data with perf.
+ \item Filtering the data set.
+ \item Interpreting the data.
+ \end{itemize}
+}
+{Lab - Application profiling}
+{
+ \begin{itemize}
+ \item Profiling an application.
+ \item Generating a flamegraph.
+ \end{itemize}
+}
+
+\feagendatwocolumn
+{Lecture - System wide profiling}
+{
+ \begin{itemize}
+ \item System wide profiling using perf.
+ \item ftrace and kernelshark.
+ \item eBPF and tools.
+ \item lttng.
+ \end{itemize}
+}
+{Lab - System wide profiling}
+{
+ \begin{itemize}
+ \item System profiling with perf.
+ \item IRQ latencies using ftrace.
+ \end{itemize}
+}
+
+\end{document}
+
More information about the training-materials-updates
mailing list