Programmierwerkzeuge-07-Debugger

TeX document icon Programmierwerkzeuge-07-Debugger.tex — TeX document, 8 KB (8659 bytes)

File contents

\documentclass[12pt, twoside]{scrartcl}
%Anfang OERMacros.tex
% Zum Erstellen mit pdfLaTeX wird diese Datei und der CC BY Button by.png im selben Verzeichnis benötigt. 
% by.png ist unter https://mirrors.creativecommons.org/presskit/buttons/88x31/png/by.png zu finden. 

% Für den Lizenzhinweis zur Nutzung dieser OER kann das Macro \OERLizenzHinweis verendet werden. 

\usepackage[utf8]{inputenc}
\def\Autor {Reinhard Brocks}
\def\HomeAutor {https://www.htwsaar.de/ingwi/fakultaet/personen/profile/Reinhard\%20Brocks}
\def\OERLizenzHinweis 
{
	\includegraphics{by} % by.png ist unter https://mirrors.creativecommons.org/presskit/buttons/88x31/png/by.png zu finden. 
	\begin{minipage}[b]{11cm}\footnotesize
		\href{\HomeAutor/oer/pwz/oer/programmierwerkzeuge-07-debugger/at_download/file}{Programmierwerkzeuge - \mysubtitle} 
		von 
		\href{\HomeAutor}{\Autor} 
		ist lizenziert unter einer 
		\href{http://creativecommons.org/licenses/by/4.0/}{Creative Commons Namensnennung 4.0 International Lizenz}.
	\end{minipage}
}


\def\HinweisLatex {Für die Nutzung und die Bearbeitung steht das Dokument \href{\HomeAutor/oer/pwz/latex}{hier} 
	auch im \LaTeX-Format zur Verfügung.}

\def\MailAutor {reinhard.brocks@htwsaar.de}

\def\MiniKontakt 
{
	Fragen und Verbesserungsvorschläge bitte an Prof.~Dr.~\Autor, 
	Hochschule für Technik und Wirtschaft des Saarlandes. \\
	E-Mail: \href{mailto:\MailAutor}{\MailAutor}\\[2ex]
}

\def\Kontakt
{
	\MiniKontakt
	Einen Überblick über die Unterrichtseinheiten zu \glqq Programmierwerkzeuge\grqq{} 
	findet man \href{\HomeAutor/oer/pwz/programmierwerkzeuge-00-unterrichtskonzept/at_download/file}{hier}.\\[1ex]
}

\def\Disclaimer 
{
	\begin{footnotesize}
		\textbf{Disclaimer}: Der Autor übernimmt keine Haftung für eventuelle 
		Datenschutz- und sonstige Rechtsverletzungen in anderen Webangeboten, 
		auf die er einen Link gesetzt hat. Für die Inhalte der von ihm 
		verlinkten Fremdangebote sind die jeweiligen Herausgeber verantwortlich. 
		Vor dem Einrichten von Links sind die Webseiten der anderen Anbieter 
		mit großer Sorgfalt und nach bestem Wissen und Gewissen geprüft worden. 
		Es kann jedoch keine Gewähr für die Vollständigkeit und Richtigkeit von 
		Informationen auf verlinkten Seiten übernommen werden. 
		Falls auf Seiten verweisen wird, deren Inhalt Anlass zur 
		Beanstandung gibt, bittet der Autor um eine Mitteilung 
		(\textit{\href{mailto:\MailAutor}{\MailAutor}}).
	\end{footnotesize}
}
%Ende OERMacros.tex%
%Anfang PackagesMacros.tex
\usepackage{a4,german}
\usepackage{hyperref}
\usepackage{hyperxmp}
\usepackage{color}
\usepackage{graphics}

\parindent 0pt
\definecolor{Definitionsfarbe}{RGB}{0,100,0}
\newcommand{\TextBegriff}[1]{\textcolor{Definitionsfarbe}{\textbf{#1}}}

%Ende PackagesMacros.tex%

\def\mysubtitle {Unterrichtseinheit 7: Debugger}
\def\mykeywords {Programmierwerkzeuge, Debugger}
\hypersetup
{
	pdftitle={Programmierwerkzeuge},
	pdfsubject={\mysubtitle},
	pdfauthor={Reinhard Brocks},
	pdfkeywords={\mykeywords},
	pdfcopyright={CC BY 4.0},
	pdflicenseurl={http://creativecommon.org/licenses/by/4.0/}
}

\title{\textbf{Programmierwerkzeuge}}
\subtitle{\mysubtitle \\[2ex]{\small Lehr- und Lernmaterialien}}
\author{}
\date{}

\begin{document}
	
\maketitle
\thispagestyle{empty}
\vfill

\begin{tabular}{|p{3cm}|p{10,5cm}|} \hline 
	Zielgruppe	&	Lernende, die schon eine Programmiersprache gelernt und 
					erste Erfahrungen in der Programmierung gesammelt haben.\\ \hline 
	Lernziele	&	Der Lernende kennt die grundlegenden Funktionalitäten eines 
					Debuggers und kann den Debugger einer IDE nutzen.\\ \hline 
	Stichwörter & \mykeywords\\ \hline 
\end{tabular} \\[2ex]

\Kontakt

Versionsgeschichte\\[1ex]
\begin{tabular}{|l|l|l|}\hline 
	Datum 	& Änderung \\ \hline 
	26. Oktober 2019 & Erste Version \\ \hline 
\end{tabular}\\[1ex]

\OERLizenzHinweis\HinweisLatex
\newpage

\section*{Programmierwerkzeuge - Debugger}
\subsection*{Aufgabe: Debugger, 120 Minuten}
\begin{enumerate}
	\item Notieren Sie sich während der Demo die Fachbegriffe und Funktionalitäten des Debuggers.
	\item Probieren Sie den Java-Debugger aus. 
	\item Erstellen Sie in Gruppenarbeit eine concept map zu Debuggen. 
\end{enumerate}


\newpage
\subsection*{Arbeitsergebnisse}
\textbf{Ziel des Debuggens:} Finden von Fehlern durch Nachvollziehen bzw. 
Überprüfen des Programmablaufs mit Untersuchung der Werte an bestimmten Programmpunkten. 

Bei einigen Sprachen wie C oder C++ muss der Code besonders kompiliert werden, 
damit man diesen debuggen kann. Man unterscheidet dann zwischen Debug- und Release-Version. 
Bei Java gibt es die Compiler-Option \glqq -g\grqq. \\[1ex]

Allgemeine Funktionen eines Debuggers:
\subsubsection*{\textcolor{Definitionsfarbe}{Breakpoints}}
\begin{itemize}
	\item Gehören zu einer bestimmten Quellcode-Zeile
	\item Operationen: Erzeugen, Löschen, enable, disable
	\item Bedingte / conditional breakpoints / watchpoints:  Bedingungen in Form von 
			logischen Ausdrücken (z.\,B. Wert einer dort sichtbaren Variablen größer als ein Schwellenwert)
\end{itemize}
\subsubsection*{Programmablaufverfolgung / Navigation}
\begin{itemize}
	\item Der \TextBegriff{instruction pointer} zeigt an, welches Statement / Anweisung als nächstes ausgeführt wird 
	\item Steuerung des instruction pointers / des Programmablaufs.  Operationen, die den instruction pointer bewegen:
		\begin{itemize}
		\item step by step Programmablaufverfolgung: 
			\begin{itemize}
			\item \TextBegriff{step / step over / next}: nächstes statement ausführen
			\item \TextBegriff{step in}: Funktionsaufruf: instruction pointer zeigt auf die erste Anweisung in der Funktion		
			\item \TextBegriff{step out}: Verlassen der Funktion (Ausführen der 
					Anweisungen bis Funktionsende und Stoppen in der Aufrufumgebung 
					bei der nächsten Anweisung nach dem Funktionsaufruf)
			\end{itemize}
		\item Laufen bis zu einer bestimmten Stelle:	
			\begin{itemize}
			\item \TextBegriff{step to}: Programm wird bis zur aktuellen Cursor-Position ausgeführt
			\item \TextBegriff{continue / run}: Die Anweisungen werden bis zum nächsten Breakpoint 
					ausgeführt und der instruction pointer bleibt dort stehen. 
					Bei einem bedingten Breakpoint nur, wenn die Bedingung erfüllt ist
			\item	Überwachen von Variablen (z.\,B. schreibender (\TextBegriff{access watchpoint}) 
					oder lesender Zugriff (\TextBegriff{read watchpoint})). Der instruction pointer bleibt dann dort stehen. 
			\end{itemize}
		\end{itemize}
\subsubsection*{Lokale Analysemöglichkeiten / inspection an der Stelle des instruction pointers}
		\begin{itemize}
		\item \TextBegriff{\glqq watch – window\grqq}: Wert und Typ der sichtbaren 
				Variablen werden angezeigt. Bei Strukturen sieht man die Werte und Typen der Komponenten. Man hat die 
				Möglichkeit, mit den sichtbaren Variablen Ausdrücke zu formulieren, deren Werte dann angezeigt werden. 	
				Auch kann der Wert von mit dem Cursor markierten Ausdrücken angezeigt werden.
		\item \TextBegriff{function call stack / back tracing}: Gibt Informationen über den Aufrufkontext, d.\,h. von wo die Methode aufgerufen wurde, an. 
		\end{itemize}
\subsubsection*{Konfiguration}
		\begin{itemize}
		\item \TextBegriff{run configuration}: Angabe von Kommandozeilenargumenten
		\item Angabe von weiteren Source-Verzeichnissen, um auch den darin enthaltenen Quellcode zu debuggen. 
		\end{itemize}
\subsubsection*{Erweiterte Fähigkeiten}
		\begin{itemize}
		\item Integrierter Editor: Änderungen des Source-Codes werden sofort berücksichtigt (\TextBegriff{just in time debugging})
		\item Die Werte der Variablen können verändert werden
		\item Der instruction pointer kann innerhalb einer Funktion frei bewegt werden, um z.\,B. 
				eine fehlerhafte Anweisungsfolge zu umgehen oder eine Anweisungsfolge zu wiederholen
		\item Erweiterte Analyse:
		\begin{itemize}
			\item Assemblercode
			\item Register 
			\item Memory
		\end{itemize}
		\end{itemize}
\end{itemize}

\subsection*{Hinweise für den Dozenten}
Um Fehler zu suchen oder um zu verstehen, wie ein Programm sich verhält, 
ist die übliche Vorgehensweise bei den Lernenden, Textausgaben in den Code hinzuzufügen. 
Dieses kann viel besser mit einem Debugger gemacht werden. 

Die Unterrichtseinheit macht den Lernenden Spaß. 
Die Funktionalitäten des Debuggers können sehr gut allein entdeckt werden. 
Das Erstellen der concept map geht schnell und ist nützlich. 

Es ist auch möglich, einen C++-Debugger für die Präsentation zu verwenden. 
Die Lernenden schaffen es selbstständig, die Prinzipien auf einen Java-Debugger anzuwenden. 

%\Disclaimer
\end{document}