diff --git a/garnet/bin/zxdb/client/job_context_impl.cc b/garnet/bin/zxdb/client/job_context_impl.cc
index 2c84bff..d026597 100644
--- a/garnet/bin/zxdb/client/job_context_impl.cc
+++ b/garnet/bin/zxdb/client/job_context_impl.cc
@@ -173,7 +173,7 @@
                    const Err& err, debug_ipc::JobFilterReply reply) {
         if (reply.status != 0) {
           printf("Error adding filter, error: %s.",
-                 debug_ipc::ZxStatusToString(reply.status).data());
+                 debug_ipc::ZxStatusToString(reply.status));
           if (weak_job_context) {
             // Agent failed, reset filters in settings.
             // This will also trigger another callback but would be a no-op
diff --git a/garnet/bin/zxdb/client/target_impl.cc b/garnet/bin/zxdb/client/target_impl.cc
index 019fefd..624f5cf 100644
--- a/garnet/bin/zxdb/client/target_impl.cc
+++ b/garnet/bin/zxdb/client/target_impl.cc
@@ -233,11 +233,11 @@
     state_ = State::kNone;
     if (status == debug_ipc::kZxErrIO) {
       issue_err = Err("Error launching: Binary not found [%s]",
-                      debug_ipc::ZxStatusToString(status).data());
+                      debug_ipc::ZxStatusToString(status));
     } else {
       issue_err =
           Err(fxl::StringPrintf("Error launching, status = %s.",
-                                debug_ipc::ZxStatusToString(status).data()));
+                                debug_ipc::ZxStatusToString(status)));
     }
   } else {
     Process::StartType start_type = state_ == State::kAttaching
diff --git a/garnet/bin/zxdb/client/thread_impl.cc b/garnet/bin/zxdb/client/thread_impl.cc
index 5f58cb1..7858a063 100644
--- a/garnet/bin/zxdb/client/thread_impl.cc
+++ b/garnet/bin/zxdb/client/thread_impl.cc
@@ -160,8 +160,7 @@
       cb(Err("Could not set thread instruction pointer. Error %" PRIu64
              " (%s).",
              reply.status,
-             debug_ipc::ZxStatusToString(static_cast<uint32_t>(reply.status))
-                 .c_str()));
+             debug_ipc::ZxStatusToString(static_cast<uint32_t>(reply.status))));
     } else if (!thread) {
       cb(Err("Thread destroyed."));
     } else {
diff --git a/garnet/lib/debug_ipc/helper/zx_status.cc b/garnet/lib/debug_ipc/helper/zx_status.cc
index 5344ab5..7d61f49 100644
--- a/garnet/lib/debug_ipc/helper/zx_status.cc
+++ b/garnet/lib/debug_ipc/helper/zx_status.cc
@@ -9,36 +9,106 @@
 
 namespace debug_ipc {
 
-std::string ZxStatusToString(uint32_t status) {
-  const char* status_name = nullptr;
+const char* ZxStatusToString(uint32_t status) {
   switch (status) {
     case kZxOK:
-      status_name = "ZX_OK";
-      break;
+      return "ZX_OK";
     case kZxErrInternal:
-      status_name = "ZX_ERR_INTERNAL";
-      break;
+      return "ZX_ERR_INTERNAL";
     case kZxErrNotSupported:
-      status_name = "ZX_ERR_NOT_SUPPORTED";
-      break;
-    case kZxErrInvalidArgs:
-      status_name = "ZX_ERR_INVALID_ARGS";
-      break;
+      return "ZX_ERR_NOT_SUPPORTED";
     case kZxErrNoResources:
-      status_name = "ZX_ERR_NO_RESOURCES";
-      break;
+      return "ZX_ERR_NO_RESOURCES";
+    case kZxErrNoMemory:
+      return "ZX_ERR_NO_MEMORY";
+    case kZxErrInternalIntrRetry:
+      return "ZX_ERR_INTERNAL_INTR_RETRY";
+    case kZxErrInvalidArgs:
+      return "ZX_ERR_INVALID_ARGS";
+    case kZxErrBadHandle:
+      return "ZX_ERR_BAD_HANDLE";
+    case kZxErrWrongType:
+      return "ZX_ERR_WRONG_TYPE";
+    case kZxErrBadSyscall:
+      return "ZX_ERR_BAD_SYSCALL";
     case kZxErrOutOfRange:
-      status_name = "ZX_ERR_OUT_OF_RANGE";
-      break;
+      return "ZX_ERR_OUT_OF_RANGE";
+    case kZxErrBufferTooSmall:
+      return "ZX_ERR_BUFFER_TOO_SMALL";
+    case kZxErrBadState:
+      return "ZX_ERR_BAD_STATE";
+    case kZxErrTimedOut:
+      return "ZX_ERR_TIMED_OUT";
+    case kZxErrShouldWait:
+      return "ZX_ERR_SHOULD_WAIT";
+    case kZxErrCanceled:
+      return "ZX_ERR_CANCELED";
+    case kZxErrPeerClosed:
+      return "ZX_ERR_PEER_CLOSED";
+    case kZxErrNotFound:
+      return "ZX_ERR_NOT_FOUND";
+    case kZxErrAlreadyExists:
+      return "ZX_ERR_ALREADY_EXISTS";
+    case kZxErrAlreadyBound:
+      return "ZX_ERR_ALREADY_BOUND";
+    case kZxErrUnavailable:
+      return "ZX_ERR_UNAVAILABLE";
+    case kZxErrAccessDenied:
+      return "ZX_ERR_ACCESS_DENIED";
     case kZxErrIO:
-      status_name = "ZX_ERR_IO";
-      break;
+      return "ZX_ERR_IO";
+    case kZxErrIoRefused:
+      return "ZX_ERR_REFUSED";
+    case kZxErrIoDataIntegrity:
+      return "ZX_ERR_IO_DATA_INTEGRITY";
+    case kZxErrIoDataLoss:
+      return "ZX_ERR_IO_DATA_LOSS";
+    case kZxErrIoNotPresent:
+      return "ZX_ERR_IO_NOT_PRESENT";
+    case kZxErrIoOverrun:
+      return "ZX_ERR_IO_OVERRUN";
+    case kZxErrIoMissedDeadline:
+      return "ZX_ERR_IO_MISSED_DEADLINE";
+    case kZxErrIoInvalid:
+      return "ZX_ERR_IO_INVALID";
+    case kZxErrBadPath:
+      return "ZX_ERR_BAD_PATH";
+    case kZxErrNotDir:
+      return "ZX_ERR_NOT_DIR";
+    case kZxErrNotFile:
+      return "ZX_ERR_NOT_FILE";
+    case kZxErrFileBig:
+      return "ZX_ERR_FILE_BIG";
+    case kZxErrNoSpace:
+      return "ZX_ERR_NO_SPACE";
+    case kZxErrNotEmpty:
+      return "ZX_ERR_NOT_EMPTY";
+    case kZxErrStop:
+      return "ZX_ERR_STOP";
+    case kZxErrNext:
+      return "ZX_ERR_NEXT";
+    case kZxErrAsync:
+      return "ZX_ERR_ASYNC";
+    case kZxErrProtocolNotSupported:
+      return "ZX_ERR_PROTOCOL_NOT_SUPPORTED";
+    case kZxErrAddressUnreachable:
+      return "ZX_ERR_ADDRESS_UNREACHABLE";
+    case kZxErrAddressInUse:
+      return "ZX_ERR_ADDRESS_IN_USE";
+    case kZxErrNotConnected:
+      return "ZX_ERR_NOT_CONNECTED";
+    case kZxErrConnectionRefused:
+      return "ZX_ERR_CONNECTION_REFUSED";
+    case kZxErrConnectionReset:
+      return "ZX_ERR_CONNECTION_RESET";
+    case kZxErrConnectionAborted:
+      return "ZX_ERR_CONNECTION_ABORTED";
     default:
-      status_name = "<unsupported status>";
       break;
   }
-  FXL_DCHECK(status_name);
-  return fxl::StringPrintf("%s (%d)", status_name, status);
+
+  FXL_NOTREACHED();
+  return nullptr;
 }
 
 }  // namespace debug_ipc
diff --git a/garnet/lib/debug_ipc/helper/zx_status.h b/garnet/lib/debug_ipc/helper/zx_status.h
index a9a33a3..9ea5e65 100644
--- a/garnet/lib/debug_ipc/helper/zx_status.h
+++ b/garnet/lib/debug_ipc/helper/zx_status.h
@@ -6,13 +6,11 @@
 
 #include <stdint.h>
 
-#include <string>
-
 #include "garnet/lib/debug_ipc/helper/zx_status_definitions.h"
 
 namespace debug_ipc {
 
-std::string ZxStatusToString(uint32_t status);
+const char* ZxStatusToString(uint32_t status);
 
 }  // namespace debug_ipc
 
