%
% © 2009 Michael Stapelberg
%
\documentclass[mode=present,paper=screen,style=jefka]{powerdot}
\usepackage[utf8]{inputenc}
\usepackage{graphicx}
\usepackage{ngerman}
\usepackage{listings}
\newcommand{\bs}{\textbackslash}
\pdsetup{palette=white}
\lstnewenvironment{code}{%
	\lstset{frame=single, basicstyle=\footnotesize\ttfamily}
}{}
\title{Debuggen mit gdb}
\author{sECuRE beim NoName e.V.\\
~\\
powered by \LaTeX, of course}
\begin{document}
\maketitle

\begin{slide}{Inhalt}
\begin{list}{$\bullet$}{\itemsep=1em}
	\item Bevor es losgeht
	\item Wie man korrekt kompiliert (Symbols)
	\item Grundwissen gdb
	\item Wenn es knallt (Core dumps)
	\item (Conditional) Breakpoints/Watchpoints
	\item Abkürzungen
	\item Macros
\end{list}
\end{slide}

\begin{slide}[method=direct]{Bevor es losgeht (2)}
\begin{list}{$\bullet$}{\itemsep=1em}
	\item valgrind, findet Memory leaks (zuverlässig) und Fehler beim Speicherzugriff (nicht ganz so gut)
\end{list}

\begin{code}
$ valgrind -v --log-file=vg --num-callers=20 \
  --leak-check=full ./programm
$ less vg
\end{code}

\begin{list}{$\bullet$}{\itemsep=1em}
	\item loggt nach vg, bei threads gibt's vg.$<$pid$>$
	\item gibt einen 20 Zeilen langen Callstack an
	\item führt einen vollen Speichercheck durch
	\item $\Rightarrow$ alle Fehler beheben, bevor man weiterhin debugged
\end{list}
\end{slide}



\begin{slide}{Grundwissen gdb}
\begin{list}{$\bullet$}{\itemsep=1em}
	\item list [foo.c:13] - Zeigt sourcecode an
	\item info functions - alle Funktionen mit symbols
	\item run - startet das Programm
	\item \^{}C - unterbricht das Programm
	\item print $<$variable$>$ - zeigt den Wert einer Variablen an
	\item info locals - zeigt alle lokalen Variablen
	\item break [foo.c:13] - setzt einen Breakpoint
	\item $<$return$>$ - führt den letzten Befehl nochmal aus
\end{list}
\end{slide}


\begin{slide}[method=direct]{EOF}
\vspace*{\fill}
\begin{center}
Fragen?
\end{center}
\vspace*{\fill}
\end{slide}

\end{document}
