Visual debugging mit R

Eine kurze Einführung zur Fehlerdiagnose mit StatET und RStudio

In diesem Beitrag erklären wir, as hinter der Abkürzung CVE und CVSS steckt, welche Gemeinsamkeiten und Unterschiede die beiden Systeme aufweisen und warum sie für das Schwachstellenmanagement in Ihrer IT-Infrastruktur oder Ihren selbst entwickelten Anwendungen unverzichtbar sind.

Debugging in R

Um Fehler in R-Funktionen und Skripten zu diagnostizieren und aufzufinden, stellt R unter anderem die Funktion debug() zur Verfügung, die wie im folgenden Beispiel angewendet werden kann:

Nach Ausführen der Zeilen 8 und 9 gelangt man in der Konsole  in den Browser-Modus, welcher mittels der folgenden Befehle die schrittweise Ausführung der Funktion ermöglicht.

Der Debug-Browser lässt sich zudem an beliebiger Stelle im Skript durch die Funktion browser()aufrufen.

Visual debugging mit StatET (Eclipse) & RStudio

R-Entwicklungsumgebungen wie StatET oder seit der aktuellen preview Version 0.98 auch RStudio bieten darüber hinaus einen visual debug Modus, durch den zusätzliche Funktionalitäten zur Fehlerdiagnose bereit gestellt werden.

BREAKPOINTS

Alternativ zu dem zuvor beschriebenen Vorgehen, kann der Debug Modus in beiden IDE’s durch setzen eines Breakpoints im Scource-Skript angesprochen werden. Durch Klicken auf die Zeilennummer, lassen sich breakpoints innerhalb von Funktionen oder top-level Breakpoints an beliebiger Stelle im Skript setzen, die zum Beispiel ausgelöst werden, wenn das Skript mittels der source() Funktion ausgeführt wird.

Hierbei ist zu beachten, dass das Skript zunächst „gesourced“ werden muss, damit die Breakpoints aktiv sind. Die StatET Konsole muss zudem im Debug-Modus gestartet werden.

Debugger

Durch Erreichen eines Breakpoints oder einer entsprechenden R-Funktion wird der Debug-Modus automatisch gestartet. Dieser weist in beiden Entwicklungsumgebungen vergleichbare Funktionalitäten auf.

Konsole (1)

Startet man den visual debugger unter RStudio, erscheint innerhalb der Konsole eine zusätzliche Schaltfläche, welche Buttons zur Navigation im Debug-Modus bereit stellt. Diese entsprechen den R-Befehle n,c und Q, die man auch in StatET nutzt.

Scource-Skript (2)

Der Ausdruck der im nächsten Schritt (n) ausgewertet wird, wird hervorgehoben.

Environment (3)

Entsprechend der Anzeige des .GlobalEnv bei inaktivem Debug-Modus, werden in dem Tab Environment beziehungsweise Variables in StatET, die Objekte und ihre Werte, die ausschließlich innerhalb der derzeit Ausgeführten Funktion sichtbaren  sind, angezeigt (hier bar()).

Traceback (4)

Im Debug-Modus wird ein zusätzlicher Tab Traceback geöffnet. Hier werden alle derzeit aktiven Funktionen aufgelistet, analog zu dem Browser Befehl where. Darüber hinaus, wird die Funktion welche aktuell diagnostiziert wird hervorgehoben und durch klicken auf eine der Funktionen im Stack, wird das entsprechende Environment angezeigt.

Bedingte Breakpoints

StatET bietet zudem einen weiteren Tab Breakpoints, über den zusätzliche Breakpoint-Optionen gesetzt werden können.

Neben dem deaktivieren/aktivieren einzelner oder aller Breakpoints, lassen sich beliebige R-Expressions als Bedingung für das Auslösen eines Breakpoints definieren. Liefert die Bedingung einen Wahrheitswert (TRUE / FALSE), wird der entsprechende Punkt aktiviert, beziehungsweise übersprungen.

Möchte man mit RStudio bedingte Breakpoints setzen, lässt sich dies derzeit nur direkt über die R-Funktionen browser(expr),beziehungsweise  if(expr) debugonce(fun)für top-level Breakpoints realisieren:

Fazit

R verfügt durch die debugging Funktionen über gute Möglichkeiten R-Skripte zu Diagnostizieren. Durch die Integration in einen visual Debugger, wird dieser Prozess zusätzlich wesentlich erleichtert. Vor allem das Hervorheben des aktuell ausgeführten Ausdrucks und die Anzeige des zugehörigen workspaces helfen dabei, Fehler leichter zu identifizieren und den Code besser zu verstehen. Mit der neusten Version hat nun auch RStudio einen visual debugger in seine Entwicklungsumgebung integriert, der bereits in der Preview Version ein beinahe gleichwertiges  Tool zu dem seit längerem bewährten Eclipse/StatET Debugger ist.

Das Thema Debugging wird auch im Kurs „Programmieren mit R“ im Rahmen der Data Science Trainings behandelt. Mehr Informationen?

Hier entlang.

Nutzen Sie unsere maßgeschneiderten Lösungen in Data Science und IT-Sicherheit, um Ihre Systeme zu optimieren und Risiken zu minimieren.

Veröffentlicht: 13. November 2013

AutorIn

Tobias Titze

Tobias Titze betreut seit 2013 das Marketing der eoda GmbH. Seine tägliche Aufgabe ist der Brückenschlag zwischen einem komplexen Thema und den Anforderungen des Marktes. Er interessiert sich für Daten und Algorithmen und begeistert sich für die Vorteile, die sich für Unternehmen daraus ergeben.

Row edge-slant Shape Decorative svg added to top
Row edge-slant Shape Decorative svg added to bottom

Starten Sie jetzt durch:
Wir freuen uns auf den Austausch mit Ihnen. 







    Nach oben scrollen