[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