| Both sides previous revisionPrevious revisionNext revision | Previous revision | 
| gdbs:protocol [2025/05/26 16:34]  –  lars | gdbs:protocol [2025/05/31 07:21] (current)  – [replies]  lars | 
|---|
| </code> | </code> | 
|  |  | 
| The remote protocol is specified in [[https://sourceware.org/gdb/current/onlinedocs/gdb.html/Remote-Protocol.html|Appendix E]] of the [[https://sourceware.org/gdb/current/onlinedocs/gdb.html/index.html|gdb documentation]] | The remote protocol is specified in [[https://sourceware.org/gdb/current/onlinedocs/gdb.html/Remote-Protocol.html|Appendix E]] of the [[https://sourceware.org/gdb/current/onlinedocs/gdb.html/index.html|gdb documentation]]. Wherever appropriate large parts of that documentation have been copied here. | 
|  |  | 
| The protocol is used over a serial byte data stream. Examples are a serial port (UART/COM Port) or a TCP port. The data is exchanged over this channel in [[packets|packets]]. In this communication the gdb sends commands and the gdb server sends replies. | The protocol is used over a serial byte data stream. Examples are a serial port (UART/COM Port) or a TCP port. The data is exchanged over this channel in [[packets|packets]]. In this communication the gdb sends commands and the gdb server sends replies. | 
|  |  | 
| =====  commands ===== | In the documentation format strings everything [inside of square brackets] is optional and can be missing. | 
|  |  | 
| * '!'                      [[cmd_exclamation_mark|Enable extended mode]] | ===== signals ===== | 
|  |  | 
|  | [[signals|include/gdb/signals.h]] | 
|  |  | 
|  | ===== commands ===== | 
|  |  | 
|  | * '!'                      [[cmd_exclamation_mark|Enable extended mode]] **must be supported** | 
| * '?'                      [[cmd_question_mark|question mark]] | * '?'                      [[cmd_question_mark|question mark]] | 
| * 'A'                      [[cmd_uc_a|A]] | * 'A'                      [[cmd_uc_a|A]] | 
| * 'bc'                     [[cmd_bc|backward continue]] | * 'bc'                     [[cmd_bc|backward continue]] | 
| * 'bs'                     [[cmd_bs|backward single step]] | * 'bs'                     [[cmd_bs|backward single step]] | 
| * 'c'                      [[cmd_lc_c|continue]] | * 'c'                      [[cmd_lc_c|continue]] **must be supported** | 
| * 'C'                      [[cmd_uc_c|continue with signal]] | * 'C'                      [[cmd_uc_c|continue with signal]] | 
| * 'd'                      [[cmd_lc_d|toggle debug flag]] **don't use** | * 'd'                      [[cmd_lc_d|toggle debug flag]] **don't use** | 
| * 'D'                      [[cmd_uc_d|detach]] | * 'D'                      [[cmd_uc_d|detach]] | 
| * 'F'                      [[cmd_uc_f|file i/o]] | * 'F'                      [[cmd_uc_f|file i/o]] | 
| * 'g'                      [[cmd_lc_g|read general register]] | * 'g'                      [[cmd_lc_g|read general register]] **must be supported** | 
| * 'G'                      [[cmd_uc_g|write general register]] | * 'G'                      [[cmd_uc_g|write general register]] **must be supported** | 
| * 'H'                      [[cmd_uc_h|select thread]] | * 'H'                      [[cmd_uc_h|select thread]] | 
| * 'i'                      [[cmd_lc_i|single clock step]] | * 'i'                      [[cmd_lc_i|single clock step]] | 
| * 'I'                      [[cmd_uc_i|signal cycle step]] | * 'I'                      [[cmd_uc_i|signal cycle step]] | 
| * 'k'                      [[cmd_lc_k|kill]] | * 'k'                      [[cmd_lc_k|kill]] | 
| * 'm'                      [[cmd_lc_m|read memory]] | * 'm'                      [[cmd_lc_m|read memory]] **must be supported** | 
| * 'M'                      [[cmd_uc_m|write memory]] | * 'M'                      [[cmd_uc_m|write memory]] **must be supported** | 
| * 'p'                      [[cmd_lc_p|read register]] | * 'p'                      [[cmd_lc_p|read register]] | 
| * 'P'                      [[cmd_uc_p|write register]] | * 'P'                      [[cmd_uc_p|write register]] | 
| * 'r'                      [[cmd_lc_r|reset]] **don't use** | * 'r'                      [[cmd_lc_r|reset]] **don't use** | 
| * 'R'                      [[cmd_uc_r|restart program being debugged]] | * 'R'                      [[cmd_uc_r|restart program being debugged]] | 
| * 's'                      [[cmd_lc_s|single step]] | * 's'                      [[cmd_lc_s|single step]] **must be supported** | 
| * 'S'                      [[cmd_uc_s|signal single step]] | * 'S'                      [[cmd_uc_s|signal single step]] | 
| * 't'                      [[cmd_lc_t|search backwards]] | * 't'                      [[cmd_lc_t|search backwards]] | 
| * 'T'                      [[cmd_uc_t|is thread alive]] | * 'T'                      [[cmd_uc_t|is thread alive]] | 
| * 'vAttach'                [[cmd_vattach|attach to a new process]] | * 'vAttach'                [[cmd_vattach|attach to a new process]] | 
| * 'vCont'                  [[cmd_vcont|continue trhead]] | * 'vCont'                  [[cmd_vcont|continue trhead]] **must be supported** | 
| * 'vCont?'                 [[cmd_vcont_qm|request supported actions of 'vCont']] | * 'vCont?'                 [[cmd_vcont_qm|request supported actions of 'vCont']] | 
| * 'vCtrlC'                 [[cmd_vctrl|interrupt remote target]] | * 'vCtrlC'                 [[cmd_vctrl|interrupt remote target]] | 
|  |  | 
| =====  replies ===== | =====  replies ===== | 
| * [[reply_empty|empty]] | * "" [[reply_empty|empty]] | 
| * [[reply_e_xx|Error Hex]] | * "E" [[reply_e_xx|Error Hex]] | 
| * [[reply_e_text|Error text]] | * "E" [[reply_e_text|Error text]] | 
| * [[reply_stop_uc_s|stopped because of Signal]] | * "S" [[reply_stop_uc_s|stopped because of Signal]] | 
| * [[reply_stop_uc_t|stopped because of Signal + infos]] | * "T" [[reply_stop_uc_t|stopped because of Signal + infos]] | 
| * [[reply_stop_lc_w|thread exited]] | * "w" [[reply_stop_lc_w|thread exited]] | 
| * [[reply_stop_uc_w|process exited]] | * "W" [[reply_stop_uc_w|process exited]] | 
| * [[reply_stop_uc_x|process terminated]] | * "X" [[reply_stop_uc_x|process terminated]] | 
| * [[reply_stop_uc_n|no more threads]] | * "N" [[reply_stop_uc_n|no more threads]] | 
| * [[reply_stop_uc_o|console output]] | * "O" [[reply_stop_uc_o|console output]] | 
| * [[reply_stop_uc_f|host function call]] | * "F" [[reply_stop_uc_f|host function call]] | 
| * [[notification_stop|notification stop]] | * [[notification_stop|notification stop]] | 
|  |  | 
| | IDE | Integrated Development environment | | | IDE | Integrated Development environment | | 
| | MCU | Micro Controller Unit | | | MCU | Micro Controller Unit | | 
|  | | addressable memory units | TODO | |