home *** CD-ROM | disk | FTP | other *** search
/ Linux Cubed Series 2: Applications / Linux Cubed Series 2 - Applications.iso / editors / emacs / xemacs / xemacs-1.006 / xemacs-1 / lib / xemacs-19.13 / lisp / eos / sun-eos-debugger.el < prev    next >
Encoding:
Text File  |  1995-08-22  |  16.7 KB  |  597 lines

  1. ;;; sun-eos-debugger.el --- Implements the XEmacs/SPARCworks interface
  2.  
  3. ;; Copyright (C) 19 Jul 1995  Sun Microsystems, Inc.
  4.  
  5. ;; Maintainer:    Eduardo Pelegri-Llopart <eduardo.pelegri-llopart@Eng.Sun.COM>
  6. ;; Author:      Eduardo Pelegri-Llopart <eduardo.pelegri-llopart@Eng.Sun.COM>
  7. ;; Version:    1.15
  8. ;; Header:    @(#) sun-eos-debugger.el: v1.15 95/08/22 10:11:01
  9.  
  10. ;; Keywords:    SPARCworks EOS Era on SPARCworks Debugger dbx
  11.  
  12. ;;; Commentary:
  13.  
  14. ;; Please send feedback to eduardo.pelegri-llopart@eng.sun.com
  15.  
  16. ;;; Code:
  17.  
  18. (require 'eos-common "sun-eos-common")
  19.  
  20. ;;; =================
  21. ;;; debugger protocol
  22. ;;; =================
  23.  
  24. (defvar eos::current-hollow-arrow nil)
  25. (defvar eos::current-solid-arrow nil)
  26. (defvar eos::current-dbx-proc-id nil
  27.   "TT id for the current dbx")
  28. (defvar eos::current-debugger-clique-id nil
  29.   "Clique_ID for the current debugger/dbx")
  30.  
  31. ;; currentpc.color
  32.  
  33. (defvar eos::currentpc-inst   "/* XPM */
  34. static char * file[] = {
  35. \"16 11 5 1\",
  36. \"     s background c #BDBDBDBDBDBD\",
  37. \".    c #000000000000\",
  38. \"X    c #0000FFFF0000\",
  39. \"o    c #000077770000\",
  40. \"O    c #000044440000\",
  41. \"         .      \",
  42. \"         ..     \",
  43. \"         .X.    \",
  44. \" .........XX.   \",
  45. \" .XXXXXXXXXoX.  \",
  46. \" .Xooooooooooo. \",
  47. \" .oOOOOOOOOoO.  \",
  48. \" .........OO.   \",
  49. \"         .O.    \",
  50. \"         ..     \",
  51. \"         .      \"};")
  52.  
  53. (defvar eos::currentpc-inst-alt
  54.    "/* XPM */
  55. static char * file[] = {
  56. \"16 11 5 1\",
  57. \"     s background c #BDBDBDBDBDBD\",
  58. \".    c #000000000000\",
  59. \"X    c #0000FFFF0000\",
  60. \"o    c #000077770000\",
  61. \"O    c #000044440000\",
  62. \"         .      \",
  63. \"         ..     \",
  64. \"         .X.    \",
  65. \" .........XX.   \",
  66. \" .XXXXXXXXXoX.  \",
  67. \" .Xooooooooooo. \",
  68. \" .oOOOOOOOOoO.  \",
  69. \" .........OO.   \",
  70. \"         .O.    \",
  71. \"         ..   ..\",
  72. \"         .    ..\"};")
  73.  
  74. (defvar eos::visitedpc-inst
  75.    "/* XPM */
  76. static char * file[] ={
  77. \"16 11 5 1\",
  78. \"     s background c #BDBDBDBDBDBD\",
  79. \".    c #000000000000\",
  80. \"X    c #AFAFAFAFAFAF\",
  81. \"o    c #7E7E7E7EA9A9\",
  82. \"O    c #666633339999\",
  83. \"         .      \",
  84. \"         ..     \",
  85. \"         .X.    \",
  86. \" .........XX.   \",
  87. \" .XXXXXXXXXoX.  \",
  88. \" .XooooooooooO. \",
  89. \" .XOOOOOOOOoO.  \",
  90. \" .........OO.   \",
  91. \"         .O.    \",
  92. \"         ..     \",
  93. \"         .      \"};")
  94.  
  95. (defvar eos::visitedpc-inst-alt
  96.    "/* XPM */
  97. static char * file[] ={
  98. \"16 11 5 1\",
  99. \"     s background c #BDBDBDBDBDBD\",
  100. \".    c #000000000000\",
  101. \"X    c #AFAFAFAFAFAF\",
  102. \"o    c #7E7E7E7EA9A9\",
  103. \"O    c #666633339999\",
  104. \"         .      \",
  105. \"         ..     \",
  106. \"         .X.    \",
  107. \" .........XX.   \",
  108. \" .XXXXXXXXXoX.  \",
  109. \" .XooooooooooO. \",
  110. \" .XOOOOOOOOoO.  \",
  111. \" .........OO.   \",
  112. \"         .O.    \",
  113. \"         ..   ..\",
  114. \"         .    ..\"};")
  115.  
  116. (defvar eos::breakpoint-inst
  117.    "/* XPM */
  118. static char * file[] ={
  119. \"11 11 5 1\",
  120. \"     s background c #BDBDBDBDBDBD\",
  121. \".    c #000000000000\",
  122. \"X    c #FFFF66666666\",
  123. \"o    c #FFFF00000000\",
  124. \"O    c #777700000000\",
  125. \"   .....   \",
  126. \"  .XXXXX.  \",
  127. \" .XXoooXX. \",
  128. \".XXoooooXO.\",
  129. \".XoooooooO.\",
  130. \".XoooooooO.\",
  131. \".XoooooooO.\",
  132. \".XXoooooOO.\",
  133. \" .XXoooOO. \",
  134. \"  .OOOOO.  \",
  135. \"   .....   \"};")
  136.  
  137. (defvar eos::breakpoint-inst-alt
  138.    "/* XPM */
  139. static char * file[] ={
  140. \"11 11 5 1\",
  141. \"     s background c #BDBDBDBDBDBD\",
  142. \".    c #000000000000\",
  143. \"X    c #FFFF66666666\",
  144. \"o    c #FFFF00000000\",
  145. \"O    c #777700000000\",
  146. \"   .....   \",
  147. \"  .XXXXX.  \",
  148. \" .XXoooXX. \",
  149. \".XXoooooXO.\",
  150. \".XoooooooO.\",
  151. \".XoooooooO.\",
  152. \".XoooooooO.\",
  153. \".XXoooooOO.\",
  154. \" .XXoooOO. \",
  155. \"  .OOOOO...\",
  156. \"   ..... ..\"};")
  157.  
  158. ;; The TT protocol does not provide enough information to
  159. ;; use the eos::disabledBreakpoint glyph.
  160.  
  161. (defvar eos::disabledBreakpoint-inst
  162.    "/* XPM */
  163. static char * file[] ={
  164. \"11 11 4 1\",
  165. \"     s background c #BDBDBDBDBDBD\",
  166. \".    c #000000000000\",
  167. \"X    c Grey\",
  168. \"O    c Grey80\",
  169. \"   .....   \",
  170. \"  .XXXXX.  \",
  171. \" .XXXXXXX. \",
  172. \".XXXXXXXXO.\",
  173. \".XXXXXXXXO.\",
  174. \".XXXXXXXXO.\",
  175. \".XXXXXXXXO.\",
  176. \".XXXXXXXOO.\",
  177. \" .XXXXXOO. \",
  178. \"  .OOOOO.  \",
  179. \"   .....   \"};")
  180.  
  181. (defvar eos::disabledBreakpoint-inst-alt
  182.    "/* XPM */
  183. static char * file[] ={
  184. \"11 11 4 1\",
  185. \"     s background c #BDBDBDBDBDBD\",
  186. \".    c #000000000000\",
  187. \"X    c Grey\",
  188. \"O    c Grey80\",
  189. \"   .....   \",
  190. \"  .XXXXX.  \",
  191. \" .XXXXXXX. \",
  192. \".XXXXXXXXO.\",
  193. \".XXXXXXXXO.\",
  194. \".XXXXXXXXO.\",
  195. \".XXXXXXXXO.\",
  196. \".XXXXXXXOO.\",
  197. \" .XXXXXOO. \",
  198. \"  .OOOOO...\",
  199. \"   ..... ..\"};")
  200.  
  201. (defvar eos::dbx-pattern-list nil)
  202.  
  203. (defun eos::debugger-startup ()
  204.   ;; Actions to do at startup for eos-debugger.el
  205.   (make-face 'stop-face)
  206.   (make-face 'solid-arrow-face)
  207.   (make-face 'hollow-arrow-face)
  208.   
  209.   (set-face-foreground 'stop-face eos::stop-color)
  210.   (set-face-background 'stop-face 
  211.                (face-background (get-face 'default)))
  212.   (set-face-foreground 'solid-arrow-face eos::solid-arrow-color)
  213.   (set-face-background 'solid-arrow-face 
  214.                (face-background (get-face 'default)))
  215.   (set-face-foreground 'hollow-arrow-face eos::hollow-arrow-color)
  216.   (set-face-background 'hollow-arrow-face 
  217.                (face-background (get-face 'default)))
  218.  
  219.   (setq eos::dbx-pattern-list        ; list of dbx TT patterns
  220.     (eos::create-debugger-patterns))
  221.  
  222. ;; should there be only one stop-face, with different properties depending
  223. ;; on the frame/device?
  224.  
  225.   (eos::annotation-set-inst 'debugger-stop 'x eos::breakpoint-inst [nothing])
  226.   (eos::annotation-set-inst 'debugger-stop 'tty "[S]" [nothing])
  227.   (eos::annotation-set-face 'debugger-stop 'x
  228.                 (get-face 'stop-face) (get-face 'stop-face))
  229.   (eos::annotation-set-face 'debugger-stop 'tty
  230.                 (get-face 'highlight) (get-face 'highlight))
  231.  
  232.   (eos::annotation-set-inst 'debugger-hollow-arrow 'x eos::visitedpc-inst [nothing])
  233.   (eos::annotation-set-inst 'debugger-hollow-arrow 'tty "[]>" [nothing])
  234.   (eos::annotation-set-face 'debugger-hollow-arrow 'x
  235.                 (get-face 'hollow-arrow-face)
  236.                 (get-face 'hollow-arrow-face))
  237.   (eos::annotation-set-face 'debugger-hollow-arrow 'tty
  238.                 (get-face 'highlight) (get-face 'highlight))
  239.  
  240.   (eos::annotation-set-inst 'debugger-solid-arrow 'x eos::currentpc-inst [nothing])
  241.   (eos::annotation-set-inst 'debugger-solid-arrow 'tty "=>" [nothing])
  242.   (eos::annotation-set-face 'debugger-solid-arrow 'x
  243.                 (get-face 'solid-arrow-face)
  244.                 (get-face 'solid-arrow-face))
  245.   (eos::annotation-set-face 'debugger-solid-arrow 'tty
  246.                 (get-face 'highlight) (get-face 'highlight))
  247. )
  248.  
  249. ;; Not yet ready for prime time.
  250.  
  251. (defvar eos::fill-stack-buffer nil
  252.   "when t don't try any stack tracing")
  253.  
  254. (defvar eos::stack-buffer "*Eos Stack*"
  255.   "name of buffer where to log Stack")
  256.  
  257. (defun eos::empty-stack ()
  258.   ;; No valid stack data - e.g. resume/run program -
  259.   (if eos::fill-stack-buffer
  260.       (progn
  261.     (set-buffer (get-buffer-create eos::stack-buffer))
  262.     (toggle-read-only -1)
  263.     (delete-region (point-min) (point-max))
  264.     (toggle-read-only 1)
  265.     )))
  266.  
  267. (defun eos::load-stack ()
  268.   ;; Should send a TT message requesting for the stack information;
  269.   ;; with the real work done in a callback
  270.   (if eos::fill-stack-buffer
  271.       (eos::stack-test 1)))
  272.  
  273. (defun eos::visit-stack (stackpos)
  274.   (if eos::fill-stack-buffer
  275.       (progn
  276.     (eos::empty-stack)
  277.     (eos::stack-test 1)
  278.     )))
  279.  
  280. (defun eos::create-stack-patterns ()
  281.   ;; returns a list of patterns
  282.   (list
  283.    (make-an-observer "SPRO_SPIDER_FRAMES" 'eos::spro_spider_frames)
  284.    ))
  285.  
  286. (defun eos::spro_spider_frames (msg pat)
  287.   ;; We have received a SPRO_SPIDER_FRAMES notice
  288.   (let ((count (get-tooltalk-message-attribute msg 'args_count))
  289.     (i 1))
  290.     (set-buffer (get-buffer-create eos::stack-buffer))
  291.     (toggle-read-only -1)
  292.     (while (< i count)
  293.       ;; optional leading comment
  294.       (if (equal (get-tooltalk-message-attribute msg 'arg_type i)
  295.          "Stack_Info1")
  296.       (progn
  297.         (insert (get-tooltalk-message-attribute msg 'arg_val i))
  298.         (setq i (1+ i))))
  299.       ;; current frame?
  300.       (insert (if (equal (get-tooltalk-message-attribute msg 'arg_ival i)
  301.              "0") "  " "> "))
  302.       (setq i (1+ i))
  303.       (insert (format "[%s] %s%s %s:%s"
  304.               ;; frameno
  305.               (get-tooltalk-message-attribute msg 'arg_ival i)
  306.               ;; funcname
  307.               (get-tooltalk-message-attribute msg 'arg_val (+ i 1))
  308.               ;; funcargs
  309.               (get-tooltalk-message-attribute msg 'arg_val (+ i 2))
  310.                     ;; source
  311.               (get-tooltalk-message-attribute msg 'arg_val (+ i 3))
  312.               ;; line
  313.               (get-tooltalk-message-attribute msg 'arg_val (+ i 4))))
  314.       (setq i (+ i 5))
  315.       (if (equal (get-tooltalk-message-attribute msg 'arg_type i)
  316.          "Stack_Info2")
  317.       (progn
  318.         (insert (get-tooltalk-message-attribute msg 'arg_val i))
  319.         (setq i (1+ i))))
  320.       (insert "\n"))
  321.     (toggle-read-only 1)
  322. ;;    (return-tooltalk-message msg)
  323.     ))
  324.  
  325. (defun eos::spider-stack-callback (msg pat)
  326.   ;; Callback after processing a spider_stack request
  327.   (destroy-tooltalk-message msg)
  328.   )
  329.  
  330. (defmacro eos::stack-tt-args (spider-id clique-id hidden verbose quick starting-index count)
  331.   (` (list
  332.       'class TT_REQUEST
  333.       'address TT_HANDLER
  334.       'scope TT_SESSION
  335.       'handler (, spider-id)
  336.       'op "SPRO_SPIDER_STACK"
  337.       'callback 'eos::spider-stack-callback
  338.       'args (list
  339.          (list 'TT_IN (, clique-id) "Context_ID")
  340.          (list 'TT_IN (, hidden) "Boolean")
  341.          (list 'TT_IN (, verbose) "Boolean")
  342.          (list 'TT_IN (, quick) "Boolean")
  343.          (list 'TT_IN (, starting-index) "int")
  344.          (list 'TT_IN (, count) "int"))
  345.       )))
  346.  
  347. (defun eos::stack-test (starting-index)
  348.   (let ((msg (make-tooltalk-message
  349.           (eos::stack-tt-args eos::current-dbx-proc-id
  350.                   eos::current-debugger-clique-id
  351.                   0    ; hidden
  352.                   1    ; verbose
  353.                   0    ; quick
  354.                   starting-index
  355.                   4    ; count
  356.                   ))))
  357.     (send-tooltalk-message msg)
  358. ;;    (destroy-tooltalk-message msg)
  359.     ))
  360.  
  361. ;; (setq eos::fill-stack-buffer t)
  362. ;; (setq eos::fill-stack-buffer nil)
  363. ;; (setq eos::stack-pattern-list (eos::create-stack-patterns))
  364. ;; (mapcar 'register-tooltalk-pattern eos::stack-pattern-list)
  365. ;; (mapcar 'unregister-tooltalk-pattern eos::stack-pattern-list)
  366. ;; (eos::stack-test 1)
  367.  
  368.  
  369. ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
  370.  
  371.  
  372. ;;
  373.  
  374. (defun eos::spro_te_eventset (msg pat)
  375.   ;; thread_id trap_id string string filename lineno string string
  376.   (let* ((trap-id
  377.       (get-tooltalk-message-attribute msg 'arg_val 1))
  378.      (filename
  379.       (get-tooltalk-message-attribute msg 'arg_val 4))
  380.      (lineno
  381.       (read (get-tooltalk-message-attribute msg 'arg_ival 5))))
  382.     (eos::add-annotation 'debugger-stop filename lineno trap-id)
  383. ;;    (return-tooltalk-message msg)
  384.     ))
  385.  
  386. (defun eos::spro_te_eventdel (msg pat)
  387.   ;; trap_id string string filename lineno string string
  388.   (let* ((trap-id
  389.       (get-tooltalk-message-attribute msg 'arg_val 0))
  390.      (filename
  391.       (get-tooltalk-message-attribute msg 'arg_val 3))
  392.      (lineno
  393.       (read (get-tooltalk-message-attribute msg 'arg_ival 4))))
  394.     (eos::delete-annotation 'debugger-stop filename lineno trap-id)
  395. ;;    (return-tooltalk-message msg)
  396.     ))
  397.  
  398. (defun eos::spro_te_stopped (msg pat)
  399.   ;; thread_id filename procname lineno filename procname lineno
  400.   (let* ((filename-hollow
  401.       (get-tooltalk-message-attribute msg 'arg_val 1))
  402.      (procname-hollow
  403.       (get-tooltalk-message-attribute msg 'arg_val 2))
  404.      (lineno-hollow
  405.       (read (get-tooltalk-message-attribute msg 'arg_ival 3)))
  406.      (filename-solid
  407.       (get-tooltalk-message-attribute msg 'arg_val 4))
  408.      (lineno-solid
  409.       (read (get-tooltalk-message-attribute msg 'arg_ival 6)))
  410.      )
  411.     (setq eos::current-solid-arrow
  412.       (eos::make-annotation-visible eos::current-solid-arrow
  413.                     filename-solid
  414.                     lineno-solid
  415.                     'debugger-solid-arrow))
  416.     (if (or (not (equal filename-solid filename-hollow))
  417.         (not (equal lineno-solid lineno-hollow)))
  418.     (setq eos::current-hollow-arrow
  419.           (eos::make-annotation-visible eos::current-hollow-arrow
  420.                  filename-hollow
  421.                  lineno-hollow
  422.                  'debugger-hollow-arrow)))
  423. ;;    (return-tooltalk-message msg)
  424.     (eos::load-stack)
  425.     ))
  426.  
  427. ;; Tracking current id's
  428. ;;
  429.  
  430. (defun eos::update-dbx-proc-id (msg)
  431.   (setq eos::current-dbx-proc-id
  432.     (get-tooltalk-message-attribute msg 'sender))
  433.   ;; the following is needed to make toolbar entries be active or not
  434.   ;; I think it is not needed in 19.13
  435.   (eos::select-debugger-frame eos::debugger-frame)
  436.   )
  437.  
  438. (defun eos::update-current-debugger-clique-id (msg)
  439.   (setq eos::current-debugger-clique-id
  440.     (get-tooltalk-message-attribute msg 'arg_val 0))
  441.   )
  442.  
  443. ;;
  444. ;; Updating arrows
  445. ;;
  446.  
  447.  
  448. (defun eos::update-pids (msg)
  449.   (eos::update-dbx-proc-id msg)
  450.   (eos::update-current-debugger-clique-id msg))
  451.  
  452. (defun eos::internal-clear-annotations (stack arrows stops &optional clique)
  453.   (if stack
  454.       (eos::empty-stack))
  455.   (if arrows
  456.       (progn
  457.     (eos::make-annotation-invisible eos::current-hollow-arrow)
  458.     (eos::make-annotation-invisible eos::current-solid-arrow)))
  459.   (if clique
  460.       (progn
  461.     (setq eos::current-debugger-clique-id nil)
  462.     ;; not needed in 19.13?
  463.     (eos::select-debugger-frame eos::debugger-frame)))
  464.   (if stops
  465.       (eos::remove-all-from-annotation-list 'debugger-stop)))
  466.  
  467.  
  468. (defun eos::clear-arrows (msg pat)
  469.   (eos::internal-clear-annotations t t nil)
  470. ;;  (return-tooltalk-message msg)
  471.   )
  472.  
  473. (defun eos::update-clear-stops (msg pat)
  474.   (eos::update-pids msg)
  475.   (eos::internal-clear-annotations t nil t)
  476. ;;  (return-tooltalk-message msg)
  477.   )
  478.  
  479. (defun eos::update-clear-arrows-stops (msg pat)
  480.   (eos::update-pids msg)
  481.   (eos::internal-clear-annotations t t t)
  482. ;;  (return-tooltalk-message msg)
  483.   )
  484.  
  485. (defun eos::clear-arrows-stops (msg pat)
  486.   (let ((this-proc-id
  487.      (get-tooltalk-message-attribute msg 'sender)))
  488.     (if (equal eos::current-dbx-proc-id this-proc-id)
  489.     (progn
  490.       (eos::internal-clear-annotations t t t)
  491.       ;;  (return-tooltalk-message msg)
  492.       ))))
  493.  
  494. ;;
  495.  
  496. ;;
  497.  
  498. (defun eos::spro_detach (msg pat)
  499.   ;; a detach notification has been received. this means dbx/debugger
  500.   ;; is exiting
  501.   (eos::internal-clear-annotations t t t t)
  502.   (eos::dismiss-print-frame))
  503.  
  504. (defun eos::spro_te_location (msg pat)
  505.   ;; thread_id filename procname lineno filename procname lineno
  506.   (let* ((filename-hollow
  507.       (get-tooltalk-message-attribute msg 'arg_val 1))
  508.      (lineno-hollow
  509.       (read (get-tooltalk-message-attribute msg 'arg_ival 3)))
  510.      (filename-solid
  511.       (get-tooltalk-message-attribute msg 'arg_val 4))
  512.      (lineno-solid
  513.       (read (get-tooltalk-message-attribute msg 'arg_ival 6)))
  514.      )
  515.     (setq eos::current-solid-arrow
  516.       (eos::make-annotation-visible eos::current-solid-arrow
  517.                  filename-solid
  518.                  lineno-solid
  519.                  'debugger-solid-arrow))
  520.     (if (or (not (equal filename-solid filename-hollow))
  521.         (not (equal lineno-solid lineno-hollow)))
  522.     (setq eos::current-hollow-arrow
  523.           (eos::make-annotation-visible eos::current-hollow-arrow
  524.                  filename-hollow
  525.                  lineno-hollow
  526.                  'debugger-hollow-arrow)))
  527. ;;    (return-tooltalk-message msg)
  528.     ))
  529.  
  530. (defun eos::spro_te_visit (msg pat)
  531.   ;; thread_id filename procname lineno stackpos
  532.   (let* ((filename
  533.       (get-tooltalk-message-attribute msg 'arg_val 1))
  534.      (procname
  535.       (get-tooltalk-message-attribute msg 'arg_val 2))
  536.      (lineno
  537.       (read (get-tooltalk-message-attribute msg 'arg_ival 3)))
  538.      (stackpos
  539.       (read (get-tooltalk-message-attribute msg 'arg_ival 4)))
  540.      )
  541.     (eos::make-annotation-invisible eos::current-hollow-arrow)
  542.     (if (equal stackpos 1)
  543.     (progn
  544.       (eos::make-annotation-invisible eos::current-solid-arrow)
  545.       (setq eos::current-solid-arrow
  546.         (eos::make-annotation-visible eos::current-solid-arrow
  547.                           filename
  548.                           lineno
  549.                           'debugger-solid-arrow))
  550.       )
  551.       (setq eos::current-hollow-arrow
  552.         (eos::make-annotation-visible eos::current-hollow-arrow
  553.                       filename
  554.                       lineno
  555.                       'debugger-hollow-arrow))
  556.       )
  557. ;;    (return-tooltalk-message msg)
  558.     (eos::visit-stack stackpos)
  559.     ))
  560.  
  561. ;; generate a list of patterns
  562. ;; so it can be registered and unregistered.
  563.  
  564.  
  565. (defun eos::create-debugger-patterns ()
  566.   ;; returns a list of patterns
  567.   (list
  568.    (make-an-observer "SPRO_TE_STOPPED" 'eos::spro_te_stopped)
  569.    (make-an-observer "SPRO_SE_STARTED" 'eos::clear-arrows)
  570.    (make-an-observer "SPRO_TE_STEPPED" 'eos::clear-arrows)
  571.    (make-an-observer "SPRO_TE_CONTINUED" 'eos::clear-arrows)
  572.    (make-an-observer "SPRO_SE_DROPPED" 'eos::clear-arrows-stops)
  573.    (make-an-observer "SPRO_SE_DEBUGGED" 'eos::update-clear-stops)
  574.    (make-an-observer "SPRO_SE_REVIVED" 'eos::update-clear-arrows-stops)
  575.    (make-an-observer "SPRO_SE_ATTACHED" 'eos::update-clear-arrows-stops)
  576.    (make-an-observer "SPRO_SE_GONE" 'eos::clear-arrows)
  577.    (make-an-observer "SPRO_TE_LOCATION" 'eos::spro_te_location)
  578.    (make-an-observer "SPRO_TE_VISIT" 'eos::spro_te_visit)
  579.    (make-an-observer "SPRO_TE_EVENTSET" 'eos::spro_te_eventset)
  580.    (make-an-observer "SPRO_TE_EVENTDEL" 'eos::spro_te_eventdel)
  581.    (make-an-observer "SPRO_DETACH" 'eos::spro_detach)
  582.    ))
  583.  
  584. (defun eos::register-debugger-patterns ()
  585.   ;; register all dbx patterns
  586.   (mapcar 'register-tooltalk-pattern eos::dbx-pattern-list)
  587.   (eos::register-debugger-extra-patterns))
  588.  
  589. (defun eos::unregister-debugger-patterns ()
  590.   ;; unregister all dbx patterns
  591.   (mapcar 'unregister-tooltalk-pattern eos::dbx-pattern-list)
  592.   (eos::unregister-debugger-extra-patterns))
  593.  
  594. (provide 'eos-debugger)
  595.  
  596. ;;; sun-eos-debugger.el ends here
  597.