diff --git a/src/servers/debug/DebugServer.cpp b/src/servers/debug/DebugServer.cpp index 867527448f..1a02f09e8d 100644 --- a/src/servers/debug/DebugServer.cpp +++ b/src/servers/debug/DebugServer.cpp @@ -13,7 +13,7 @@ #include #include -#include +#include #include @@ -162,8 +162,34 @@ ThreadDebugHandler::HandleMessage(DebugMessage *message) message->Data().exception_occurred.exception, buffer, sizeof(buffer)); break; + case B_DEBUGGER_MESSAGE_DEBUGGER_CALL: - // TODO: Display the debugger message! + { + // get the debugger() message + void *messageAddress = message->Data().debugger_call.message; + char messageBuffer[128]; + debug_context context; + status_t error = init_debug_context(&context, + message->Data().origin.nub_port); + if (error == B_OK) { + ssize_t bytesRead = debug_read_string(&context, messageAddress, + messageBuffer, sizeof(messageBuffer)); + if (bytesRead < 0) + error = bytesRead; + + destroy_debug_context(&context); + } + + if (error == B_OK) { + sprintf(buffer, "Debugger call: `%s'", messageBuffer); + } else { + snprintf(buffer, sizeof(buffer), "Debugger call: %p " + "(Failed to read message: %s)", messageAddress, + strerror(error)); + } + break; + } + case B_DEBUGGER_MESSAGE_THREAD_DEBUGGED: case B_DEBUGGER_MESSAGE_BREAKPOINT_HIT: case B_DEBUGGER_MESSAGE_WATCHPOINT_HIT: diff --git a/src/servers/debug/Jamfile b/src/servers/debug/Jamfile index 6ebcc43dd3..c2ba6110d9 100644 --- a/src/servers/debug/Jamfile +++ b/src/servers/debug/Jamfile @@ -1,5 +1,6 @@ SubDir OBOS_TOP src servers debug ; +UsePrivateHeaders debug ; UsePrivateHeaders kernel ; AddResources debug_server : debug_server.rdef ; @@ -10,5 +11,6 @@ Server debug_server : libroot.so # Haiku libroot libbe.so # Haiku libbe + libdebug.so stdc++.r4 ;