diff --git a/web/pgadmin/tools/debugger/__init__.py b/web/pgadmin/tools/debugger/__init__.py
index f7d0e7b..6543b13 100644
--- a/web/pgadmin/tools/debugger/__init__.py
+++ b/web/pgadmin/tools/debugger/__init__.py
@@ -1343,8 +1343,16 @@ def poll_end_execution_result(trans_id):
     if conn.connected():
         statusmsg = conn.status_message()
         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:
+                if statusmsg and statusmsg == 'SELECT 1':
+                    statusmsg = ''
+                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 +1362,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:
+                    if statusmsg and statusmsg == 'SELECT 1':
+                        statusmsg = ''
+                    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 +1383,12 @@ 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:
+                if statusmsg and statusmsg == 'SELECT 1':
+                    statusmsg = ''
+                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/templates/debugger/js/direct.js b/web/pgadmin/tools/debugger/templates/debugger/js/direct.js
index 452617b..babd00c 100644
--- a/web/pgadmin/tools/debugger/templates/debugger/js/direct.js
+++ b/web/pgadmin/tools/debugger/templates/debugger/js/direct.js
@@ -392,6 +392,7 @@ define(
           url: baseUrl,
           method: 'GET',
           success: function(res) {
+            var old_msgs='', new_msgs='';
             if (res.data.status === 'Success') {
               if(res.data.result == undefined ) {
                 /*
@@ -411,7 +412,15 @@ define(
                 );
 
                 // Update the message tab of the debugger
-                pgTools.DirectDebug.dbmsMessages.$elem.text(res.data.status_message);
+                if (res.data.status_message) {
+                  old_msgs = pgTools.DirectDebug.messages_panel.$container.find('.messages').html();
+                  if(old_msgs) {
+                      new_msgs = (old_msgs + '\n' + res.data.status_message).replace(/(?:\r\n|\r|\n)/g, '<br />');
+                  } else {
+                      new_msgs = res.data.status_message;
+                  }
+                  pgTools.DirectDebug.messages_panel.$container.find('.messages').html(new_msgs);
+                }
 
                 // Execution completed so disable the buttons other than "Continue/Start" button because user can still
                 // start the same execution again.
@@ -439,7 +448,15 @@ 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) {
+                    old_msgs = pgTools.DirectDebug.messages_panel.$container.find('.messages').html();
+                    if(old_msgs) {
+                      new_msgs = (old_msgs + '\n' + res.data.status_message).replace(/(?:\r\n|\r|\n)/g, '<br />');
+                    } else {
+                      new_msgs = res.data.status_message;
+                    }
+                    pgTools.DirectDebug.messages_panel.$container.find('.messages').html(new_msgs);
+                  }
 
                   // Execution completed so disable the buttons other than "Continue/Start" button because user can still
                   // start the same execution again.
@@ -454,6 +471,16 @@ 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) {
+                old_msgs = pgTools.DirectDebug.messages_panel.$container.find('.messages').html();
+                if(old_msgs) {
+                  new_msgs = (old_msgs + '\n' + res.data.status_message).replace(/(?:\r\n|\r|\n)/g, '<br />');
+                } else {
+                  new_msgs = res.data.status_message;
+                }
+                pgTools.DirectDebug.messages_panel.$container.find('.messages').html(new_msgs);
+              }
             }
             else if (res.data.status === 'NotConnected') {
               Alertify.alert(
@@ -473,7 +500,16 @@ define(
                 function() { }
               );
 
-              pgTools.DirectDebug.messages_panel.$container.find('.messages').text(res.data.status_message);
+              if (res.data.status_message) {
+                old_msgs = pgTools.DirectDebug.messages_panel.$container.find('.messages').html();
+                if(old_msgs) {
+                  new_msgs = (old_msgs + '\n' + res.data.status_message).replace(/(?:\r\n|\r|\n)/g, '<br />');
+                } else {
+                  new_msgs = res.data.status_message;
+                }
+                pgTools.DirectDebug.messages_panel.$container.find('.messages').html(new_msgs);
+              }
+
               pgTools.DirectDebug.messages_panel.focus();
 
               // Execution completed so disable the buttons other than "Continue/Start" button because user can still
