code: def make_thread_suspend_str(
          self,
          thread_id,
          frame,
          stop_reason=None,
          message=None,
          suspend_type="trace",
          frame_id_to_lineno=None
          ):
          
          make_valid_xml_value = pydevd_xml.make_valid_xml_value
          cmd_text_list = []
          append = cmd_text_list.append
  
          cmd_text_list.append('<xml>')
          if message:
              message = make_valid_xml_value(message)
  
          append('<thread id="%s"' % (thread_id,))
          if stop_reason is not None:
              append(' stop_reason="%s"' % (stop_reason,))
          if message is not None:
              append(' message="%s"' % (message,))
          if suspend_type is not None:
              append(' suspend_type="%s"' % (suspend_type,))
          append('>')
          thread_stack_str = self.make_thread_stack_str(frame, frame_id_to_lineno)
          append(thread_stack_str)
          append("</thread></xml>")
  
          return ''.join(cmd_text_list), thread_stack_str
docs: :return tuple(str,str):
              Returns tuple(thread_suspended_str, thread_stack_str).
  
              i.e.:
              (
                  '''
                      <xml>
                          <thread id="id" stop_reason="reason">
                              <frame id="id" name="functionName " file="file" line="line">
                              </frame>
                          </thread>
                      </xml>
                  '''
                  ,
                  '''
                  <frame id="id" name="functionName " file="file" line="line">
                  </frame>
                  '''
              )