diff --git a/src/vogar/JavaVm.java b/src/vogar/JavaVm.java
index b23adec..81cc18f 100644
--- a/src/vogar/JavaVm.java
+++ b/src/vogar/JavaVm.java
@@ -44,9 +44,14 @@
         List<String> vmCommand = new ArrayList<String>();
         Iterables.addAll(vmCommand, run.invokeWith());
         vmCommand.add(run.javaPath(run.vmCommand));
-        return new VmCommandBuilder(run.log)
+        VmCommandBuilder vmCommandBuilder = new VmCommandBuilder(run.log)
                 .userDir(workingDirectory)
                 .vmCommand(vmCommand);
+        if (run.debugPort != null) {
+            vmCommandBuilder.vmArgs("-Xrunjdwp:transport=dt_socket,address="
+                    + run.debugPort + ",server=y,suspend=y");
+        }
+        return vmCommandBuilder;
     }
 
     @Override public Task executeActionTask(Action action, boolean useLargeTimeout) {
diff --git a/src/vogar/android/DeviceRuntime.java b/src/vogar/android/DeviceRuntime.java
index 616c254..1c85793 100644
--- a/src/vogar/android/DeviceRuntime.java
+++ b/src/vogar/android/DeviceRuntime.java
@@ -89,7 +89,10 @@
                 // _adb_connect in system/core/adb/adb_client.cpp).
                 .maxLength(4096);
         if (run.debugPort != null) {
-            vmCommandBuilder.vmArgs("-Xcompiler-option", "--debuggable");
+            vmCommandBuilder.vmArgs(
+                    "-Xcompiler-option", "--debuggable", "-Xplugin:libopenjdkjvmti.so",
+                    "-agentpath:libjdwp.so=transport=dt_socket,address=" + run.debugPort
+                            + ",server=y,suspend=y");
         }
 
         if (modeId == ModeId.APP_PROCESS) {
diff --git a/src/vogar/android/HostRuntime.java b/src/vogar/android/HostRuntime.java
index 5547718..948be55 100644
--- a/src/vogar/android/HostRuntime.java
+++ b/src/vogar/android/HostRuntime.java
@@ -136,7 +136,10 @@
                 .vmArgs("-Duser.language=en")
                 .vmArgs("-Duser.region=US");
         if (run.debugPort != null) {
-            builder.vmArgs("-Xcompiler-option", "--debuggable");
+            builder.vmArgs(
+                    "-Xcompiler-option", "--debuggable", "-Xplugin:libopenjdkjvmti.so",
+                    "-agentpath:libjdwp.so=transport=dt_socket,address=" + run.debugPort
+                            + ",server=y,suspend=y");
         }
         if (!run.benchmark && run.checkJni) {
             builder.vmArgs("-Xcheck:jni");
diff --git a/src/vogar/commands/VmCommandBuilder.java b/src/vogar/commands/VmCommandBuilder.java
index c532984..fc26cdb 100644
--- a/src/vogar/commands/VmCommandBuilder.java
+++ b/src/vogar/commands/VmCommandBuilder.java
@@ -105,11 +105,6 @@
         return this;
     }
 
-    public VmCommandBuilder debugPort(Integer debugPort) {
-        this.debugPort = debugPort;
-        return this;
-    }
-
     public VmCommandBuilder mainClass(String mainClass) {
         this.mainClass = mainClass;
         return this;
@@ -174,11 +169,6 @@
             builder.tokens("-Djava.io.tmpdir=" + temp);
         }
 
-        if (debugPort != null) {
-            builder.tokens("-Xrunjdwp:transport=dt_socket,address="
-                    + debugPort + ",server=y,suspend=y");
-        }
-
         builder.tokens(vmArgs);
         builder.tokens(mainClass);
         builder.tokens(args);
diff --git a/src/vogar/tasks/RunActionTask.java b/src/vogar/tasks/RunActionTask.java
index 6965676..01b659d 100644
--- a/src/vogar/tasks/RunActionTask.java
+++ b/src/vogar/tasks/RunActionTask.java
@@ -169,7 +169,6 @@
         }
         return vmCommandBuilder
                 .temp(workingDirectory)
-                .debugPort(run.debugPort)
                 .vmArgs(run.additionalVmArgs)
                 .mainClass(TestRunner.class.getName())
                 .args(run.targetArgs)
