diff --git a/web/pgadmin/tools/debugger/__init__.py b/web/pgadmin/tools/debugger/__init__.py
index f7d0e7b..f9d1f36 100644
--- a/web/pgadmin/tools/debugger/__init__.py
+++ b/web/pgadmin/tools/debugger/__init__.py
@@ -1342,9 +1342,18 @@ def poll_end_execution_result(trans_id):
 
     if conn.connected():
         statusmsg = conn.status_message()
+        if statusmsg and statusmsg == 'SELECT 1':
+            statusmsg = ''
         status, result, col_info = conn.poll()
-        if status == ASYNC_OK and session['functionData'][str(trans_id)]['language'] == 'edbspl':
+        if status == ASYNC_OK and \
+                not session['functionData'][str(trans_id)]['is_func'] and \
+                session['functionData'][str(trans_id)]['language'] == 'edbspl':
             status = 'Success'
+            additional_msgs = conn.messages()
+            if len(additional_msgs) > 0:
+                additional_msgs = [msg.strip("\n") for msg in additional_msgs]
+                statusmsg = "<br>".join(additional_msgs) + "<br>" + \
+                            statusmsg if statusmsg is not None else ''
             return make_json_response(success=1, info=gettext("Execution Completed."),
                                       data={'status': status, 'status_message': statusmsg})
         if result:
@@ -1354,6 +1363,12 @@ def poll_end_execution_result(trans_id):
                                           data={'status': status, 'status_message': result})
             else:
                 status = 'Success'
+                additional_msgs = conn.messages()
+                if len(additional_msgs) > 0:
+                    additional_msgs = [msg.strip("\n") for msg in additional_msgs]
+                    statusmsg = "<br>".join(additional_msgs) + "<br>" + \
+                                statusmsg if statusmsg is not None else ''
+
                 columns = []
                 # Check column info is available or not
                 if col_info is not None and len(col_info) > 0:
@@ -1369,6 +1384,14 @@ def poll_end_execution_result(trans_id):
                                                 'col_info': columns, 'status_message': statusmsg})
         else:
             status = 'Busy'
+            additional_msgs = conn.messages()
+            if len(additional_msgs) > 0:
+                additional_msgs = [msg.strip("\n") for msg in additional_msgs]
+                statusmsg = "<br>".join(additional_msgs) + "<br>" + \
+                            statusmsg if statusmsg is not None else ''
+            return make_json_response(data={
+                'status': status, 'result': result, 'status_message': statusmsg
+            })
     else:
         status = 'NotConnected'
         result = gettext('Not connected to server or connection with the server has been closed.')
diff --git a/web/pgadmin/tools/debugger/static/css/debugger.css b/web/pgadmin/tools/debugger/static/css/debugger.css
index 4386775..e1177a8 100644
--- a/web/pgadmin/tools/debugger/static/css/debugger.css
+++ b/web/pgadmin/tools/debugger/static/css/debugger.css
@@ -67,3 +67,14 @@
 .CodeMirror-foldgutter-folded:after {
   content: "\25B6";
 }
+
+/* To make font same as Query tool in messages tab */
+.messages {
+    white-space: pre-wrap;
+    font-family: monospace;
+    padding-top: 5px;
+    padding-left: 10px;
+    overflow: auto;
+    height: 100%;
+    font-size: 0.925em;
+}
\ No newline at end of file
diff --git a/web/pgadmin/tools/debugger/templates/debugger/js/direct.js b/web/pgadmin/tools/debugger/templates/debugger/js/direct.js
index 452617b..2e018d2 100644
--- a/web/pgadmin/tools/debugger/templates/debugger/js/direct.js
+++ b/web/pgadmin/tools/debugger/templates/debugger/js/direct.js
@@ -363,6 +363,20 @@ define(
 
     },
 
+    // This function will update messages tab
+    update_messages: function(msg) {
+      var old_msgs='', new_msgs='';
+        old_msgs = pgTools.DirectDebug.messages_panel.$container.find('.messages').html();
+        if(old_msgs) {
+          new_msgs = (old_msgs + '\n' + msg)
+                        .replace(/(?:\r\n|\r|\n)/g, '<br />') // Newlines with <br>
+                        .replace(/(<br\ ?\/?>)+/g, '<br />'); // multiple <br> with single <br>
+        } else {
+          new_msgs = msg;
+        }
+        pgTools.DirectDebug.messages_panel.$container.find('.messages').html(new_msgs);
+    },
+
     /*
       For the direct debugging, we need to check weather the functions execution is completed or not. After completion
       of the debugging, we will stop polling the result  until new execution starts.
@@ -411,7 +425,9 @@ define(
                 );
 
                 // Update the message tab of the debugger
-                pgTools.DirectDebug.dbmsMessages.$elem.text(res.data.status_message);
+                if (res.data.status_message) {
+                  self.update_messages(res.data.status_message);
+                }
 
                 // Execution completed so disable the buttons other than "Continue/Start" button because user can still
                 // start the same execution again.
@@ -439,7 +455,9 @@ define(
                   );
 
                   // Update the message tab of the debugger
-                  pgTools.DirectDebug.messages_panel.$container.find('.messages').text(res.data.status_message);
+                  if (res.data.status_message) {
+                    self.update_messages(res.data.status_message);
+                  }
 
                   // Execution completed so disable the buttons other than "Continue/Start" button because user can still
                   // start the same execution again.
@@ -454,6 +472,10 @@ define(
             else if (res.data.status === 'Busy') {
               // If status is Busy then poll the result by recursive call to the poll function
               //self.poll_end_execution_result(trans_id);
+              // Update the message tab of the debugger
+              if (res.data.status_message) {
+                self.update_messages(res.data.status_message);
+              }
             }
             else if (res.data.status === 'NotConnected') {
               Alertify.alert(
@@ -473,7 +495,11 @@ define(
                 function() { }
               );
 
-              pgTools.DirectDebug.messages_panel.$container.find('.messages').text(res.data.status_message);
+              // Update the message tab of the debugger
+              if (res.data.status_message) {
+                self.update_messages(res.data.status_message);
+              }
+
               pgTools.DirectDebug.messages_panel.focus();
 
               // Execution completed so disable the buttons other than "Continue/Start" button because user can still
