diff --git a/tools/idevicedebug.c b/tools/idevicedebug.c
index a9ef5c6..7b49a46 100644
--- a/tools/idevicedebug.c
+++ b/tools/idevicedebug.c
@@ -108,7 +108,7 @@
 	return INSTPROXY_E_SUCCESS;
 }
 
-static debugserver_error_t debugserver_client_handle_response(debugserver_client_t client, char** response, int send_reply)
+static debugserver_error_t debugserver_client_handle_response(debugserver_client_t client, char** response, int send_reply, int* exit_status)
 {
 	debugserver_error_t dres = DEBUGSERVER_E_SUCCESS;
 	debugserver_command_t command = NULL;
@@ -149,12 +149,24 @@
 
 		dres = DEBUGSERVER_E_UNKNOWN_ERROR;
 	} else if (r[0] == 'E' || r[0] == 'W') {
-		printf("%s: %s\n", (r[0] == 'E' ? "ERROR": "WARNING") , r + 1);
-
+		debugserver_decode_string(r + 1, strlen(r) - 1, &o);
+		/* dogben: 'W' + byte seems to mean "process exited with this status." */
+		if (r[0] == 'W' && strlen(o) == 1) {
+			printf("Exit status: %u\n", o[0]);
+			if (exit_status != NULL) {
+				*exit_status = o[0];
+			}
+		} else {
+			printf("%s: %s\n", (r[0] == 'E' ? "ERROR": "WARNING") , o);
+		}
+		if (o != NULL) {
+			free(o);
+			o = NULL;
+		}
 		free(*response);
 		*response = NULL;
 
-		if (!send_reply)
+		if (!send_reply || (exit_status != NULL && *exit_status >= 0))
 			return dres;
 
 		/* send reply */
@@ -229,6 +241,7 @@
 	char* response = NULL;
 	debugserver_command_t command = NULL;
 	debugserver_error_t dres = DEBUGSERVER_E_UNKNOWN_ERROR;
+        int exit_status = -1;
 
 	/* map signals */
 	signal(SIGINT, on_signal);
@@ -376,7 +389,7 @@
 				command = NULL;
 				if (response) {
 					if (strncmp(response, "OK", 2)) {
-						debugserver_client_handle_response(debugserver_client, &response, 0);
+						debugserver_client_handle_response(debugserver_client, &response, 0, NULL);
 						goto cleanup;
 					}
 					free(response);
@@ -394,7 +407,7 @@
 			command = NULL;
 			if (response) {
 				if (strncmp(response, "OK", 2)) {
-					debugserver_client_handle_response(debugserver_client, &response, 0);
+					debugserver_client_handle_response(debugserver_client, &response, 0, NULL);
 					goto cleanup;
 				}
 				free(response);
@@ -410,7 +423,7 @@
 			command = NULL;
 			if (response) {
 				if (strncmp(response, "OK", 2)) {
-					debugserver_client_handle_response(debugserver_client, &response, 0);
+					debugserver_client_handle_response(debugserver_client, &response, 0, NULL);
 					goto cleanup;
 				}
 				free(response);
@@ -451,7 +464,7 @@
 			command = NULL;
 			if (response) {
 				if (strncmp(response, "OK", 2)) {
-					debugserver_client_handle_response(debugserver_client, &response, 0);
+					debugserver_client_handle_response(debugserver_client, &response, 0, NULL);
 					goto cleanup;
 				}
 				free(response);
@@ -477,7 +490,7 @@
 			command = NULL;
 			if (response) {
 				if (strncmp(response, "OK", 2)) {
-					debugserver_client_handle_response(debugserver_client, &response, 0);
+					debugserver_client_handle_response(debugserver_client, &response, 0, NULL);
 					goto cleanup;
 				}
 				free(response);
@@ -502,9 +515,12 @@
 				if (response) {
 					log_debug("response: %s", response);
 					if (strncmp(response, "OK", 2)) {
-						dres = debugserver_client_handle_response(debugserver_client, &response, 1);
+						dres = debugserver_client_handle_response(debugserver_client, &response, 1, &exit_status);
 					}
 				}
+				if (exit_status > 0) {
+					goto cleanup;
+				}
 
 				sleep(1);
 			}
@@ -517,7 +533,7 @@
 			command = NULL;
 			if (response) {
 				if (strncmp(response, "OK", 2)) {
-					debugserver_client_handle_response(debugserver_client, &response, 0);
+					debugserver_client_handle_response(debugserver_client, &response, 0, NULL);
 					goto cleanup;
 				}
 				free(response);
@@ -552,5 +568,9 @@
 	if (device)
 		idevice_free(device);
 
-	return res;
+	if (exit_status > 0) {
+		return exit_status;
+	} else {
+		return res;
+	}
 }
