diff --git a/com.oracle.truffle.r.nodes.builtin/src/com/oracle/truffle/r/nodes/builtin/base/DebugFunctions.java b/com.oracle.truffle.r.nodes.builtin/src/com/oracle/truffle/r/nodes/builtin/base/DebugFunctions.java
index 310290392d35cedc807fe9e4fc6893f3a3f51fed..d6e1d063a37b2c4ba96c5b24f5c95b958aedfebd 100644
--- a/com.oracle.truffle.r.nodes.builtin/src/com/oracle/truffle/r/nodes/builtin/base/DebugFunctions.java
+++ b/com.oracle.truffle.r.nodes.builtin/src/com/oracle/truffle/r/nodes/builtin/base/DebugFunctions.java
@@ -139,9 +139,8 @@ public class DebugFunctions {
             casts.arg("clear").asLogicalVector().findFirst().map(toBoolean());
         }
 
-        @SuppressWarnings("unused")
         @Specialization
-        protected Object setBreakpoint(String fileLine, RMissing lineNr, boolean clear) {
+        protected Object setBreakpoint(String fileLine, @SuppressWarnings("unused") RMissing lineNr, boolean clear) {
 
             int hashIdx = fileLine.lastIndexOf('#');
             if (hashIdx != -1) {
@@ -156,13 +155,16 @@ public class DebugFunctions {
             throw error(RError.Message.GENERIC, "Line number missing");
         }
 
-        @SuppressWarnings("unused")
         @Specialization
         protected Object setBreakpoint(String fileName, int lineNr, boolean clear) {
 
             try {
                 Source fromSrcfile = RSource.fromFileName(fileName, false);
-                DebugHandling.enableLineDebug(fromSrcfile, lineNr);
+                if (!clear) {
+                    DebugHandling.enableLineDebug(fromSrcfile, lineNr);
+                } else {
+                    DebugHandling.disableLineDebug(fromSrcfile, lineNr);
+                }
                 return RDataFactory.createStringVectorFromScalar(fileName + "#" + lineNr);
             } catch (IOException e) {
                 return RNull.instance;
diff --git a/com.oracle.truffle.r.nodes.builtin/src/com/oracle/truffle/r/nodes/builtin/helpers/DebugHandling.java b/com.oracle.truffle.r.nodes.builtin/src/com/oracle/truffle/r/nodes/builtin/helpers/DebugHandling.java
index c8c6eda3bf232c54fd836a7826966cd0183817fe..ff6f5b36d84fa8799557ff7c295026fcd2f53472 100644
--- a/com.oracle.truffle.r.nodes.builtin/src/com/oracle/truffle/r/nodes/builtin/helpers/DebugHandling.java
+++ b/com.oracle.truffle.r.nodes.builtin/src/com/oracle/truffle/r/nodes/builtin/helpers/DebugHandling.java
@@ -211,9 +211,13 @@ public class DebugHandling {
     @TruffleBoundary
     public static void disableLineDebug(Source fdn, int line) {
         LineBreakpointEventListener l = getLineBreakpointEventListener(fdn, line);
-        l.disable();
-        l.fser.setParentListener(null);
-        l.fser.disable();
+        if (l != null) {
+            l.disable();
+            if (l.fser != null) {
+                l.fser.setParentListener(null);
+                l.fser.disable();
+            }
+        }
     }
 
     private static FunctionStatementsEventListener ensureSingleStep(FunctionDefinitionNode fdn, LineBreakpointEventListener parentListener) {
@@ -602,12 +606,16 @@ public class DebugHandling {
 
         @Override
         public void onReturnValue(EventContext context, VirtualFrame frame, Object result) {
-            fser.enableChildren();
+            if (fser != null) {
+                fser.enableChildren();
+            }
         }
 
         @Override
         public void onReturnExceptional(EventContext context, VirtualFrame frame, Throwable exception) {
-            fser.enableChildren();
+            if (fser != null) {
+                fser.enableChildren();
+            }
         }
 
     }
diff --git a/com.oracle.truffle.r.nodes.builtin/src/com/oracle/truffle/r/nodes/builtin/utils/R/utils_overrides.R b/com.oracle.truffle.r.nodes.builtin/src/com/oracle/truffle/r/nodes/builtin/utils/R/utils_overrides.R
index c3ccdbf25e546383613bc73d2b2437cf16a421ee..690fa8cf1384a1e6349532f93838cf094cd5777f 100644
--- a/com.oracle.truffle.r.nodes.builtin/src/com/oracle/truffle/r/nodes/builtin/utils/R/utils_overrides.R
+++ b/com.oracle.truffle.r.nodes.builtin/src/com/oracle/truffle/r/nodes/builtin/utils/R/utils_overrides.R
@@ -26,7 +26,7 @@ setBreakpoint <- function (srcfile, line, nameonly = TRUE, envir = parent.frame(
 {
     res <- .fastr.setBreakpoint(srcfile, line, clear)
     if(is.null(res))
-    	res <- structure(result, class="findLineNumResult")
+    	res <- structure(list(), class="findLineNumResult")
     if (verbose) 
         print(res, steps = !clear)
 }