Network Debugging Protocol
RFC 643

Document Type RFC - Unknown (July 1974; No errata)
Last updated 2013-03-02
Stream Legacy
Formats plain text html pdf htmlized bibtex
Stream Legacy state (None)
Consensus Boilerplate Unknown
RFC Editor Note (None)
IESG IESG state RFC 643 (Unknown)
Telechat date
Responsible AD (None)
Send notices to (None)
Network Debugging Protocol                          Eric Mader
RFC: 643                                             July 1974
NIC #30873

     This document describes a proposed protocol  to  be  used  in  an
implementation   of   a   PDP-11   network  Bootstrap  service  and  a
cross-network  debugger.   The  protocol  is  designed  for  debugging
processes  running under an operating system which can perform some of
the "lower level" debugging  tasks,  such  as  planting  and  removing
breakpoints  and  single  stepping.  A subset of the protocol could be
used if such a capability does not exist (a  stand-alone  program  for
example).

     The protocol is a level 2 protocol, which  bypasses  the  ARPANET
HOST-HOST  protocol.   (This  is  implemented  on  TENEX using special
privileged system calls which allow messages to be  sent  directly  to
and  received  directly  from the IMP).  Messages are sent between the
PDP-11 and the remote debugger on  one  link  (currently  377  octal).
Each  message from the remote debugger to the PDP-ll is a request that
the PDP-11 perform some action, and each message from  the  PDP-11  to
the remote debugger is either a reply to that request or an indication
that  a  process  has  stopped  running  (i.e.   has  trapped,  hit  a
breakpoint, etc).  The exact format of the messages is shown in Figure
1 below.

     Each  command  consists  of  an  8-bit  op-code,  and  an   8-bit
process-id,  two  16-bit  arguments,  and  an optional string of 8-bit
bytes.  The op-code field from the PDP-11 should be the same  as  that
sent  by  the  remote  host  to  indicate successful completion of the
request or be the same as that set by the remote host with the 200 bit
set  to  indicate  failure to complete the request.  Op-codes from the
PDP-11 which have the 100 bit set are asynchronous indication  that  a
process  has stopped for a reason other than a request from the remote
host.  (See description of asynchronous replies  below).   An  op-code
from  the  PDP-11  with  both  the 100 and 200 bit set is meaningless.
Thus, the 8-bit op-code field sent by the PDP-11 can be thought of  as
a CAN'T Flag, an Asynchronous STOP Flag, and a 6-bit op-code.

     In the description that follows the commands will be given as

   NAME (Process-ID, Argument 1, Argument 2, BYTE STRING)
with only as many of the fields present as are used.

Op-Code 0 - NOP_______ _ _ ___

     This command is intended to be used to determine if the PDP-11 is
operational.   It  has no effect on any process running in the PDP-11.
The response is NOP.

Op-Code 1 - DEBUG (Process)_______ _ _ _____ _________

     This command requests the ability to  debug  the  given  process.
The PDP-11 should respond with


                                                    Page   2

                     DEBUGGING (process)

(op-code 1) if no other remote host is currently doing so, and

                    CAN'T DEBUG (process)

(op-code 201) if another remote host  has  been  given  permission  to
debug the process, or the process doesn't exist.

Op-Code 2 - END DEBUG (Process)_______ _ _ ___ _____ _________

     This command relinquishes the ability to debug  a  process.   The
PDP-11 should reply

                     END DEBUG (Process)

(op-code 2) unless the remote host isn't  debugging  the  process,  in
which case it should respond 

                  CAN'T END DEBUG (Process)

(op-code 202).  If the process isn't running when  the  END  DEBUG  is
done, then the effect should be the same as

                      RESUME (PROCESS)
                    END DEBUG (PROCESS)

Op-Code 3 - STOP (Process)_______ _ _ ____ _________

     This command requests the PDP-11 to stop the given  process  from
running.  The PDP-11 should respond

                      STOPPED (process)

(op-code 3) unless the process isn't  being  debugged  by  the  remote
host.  In this case it should reply

                    CAN'T STOP (process)

  (op-code 203).

Op-Code 4 - DEPOSIT (Process, Address, Count, Byte String)_______ _ _ _______ _________ ________ ______ ____ _______

     This instructs the PDP-11 to deposit  the  Count  bytes  in  Byte
String  into  the  given process's address space beginning at Address.
The PDP-11 should reply

             DEPOSITED (Process, Address, Count)

if successful or

           CAN'T DEPOSIT (Process, Address, Count)


                                                    Page   3

if the deposit doesn't succeed, or the remote host isn't debugging the
process.

Op-Code 5 - RESUME (Process)_______ _ _ ______ _________

     This instructs the PDP-11 to allow the given  process  to  resume
running.  The PDP-11 should reply

                     RESUMED (Process)

before it starts the process (in case it traps right away), or

                   CAN'T RESUME (Process)

if the process wasn't stopped, or the remote host isn't debugging  the
process.

Op-Code 6 - EXAMINE (Process, Address, Count)_______ _ _ _______ _________ ________ ______
Show full document text