rdb 0.0.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (331) hide show
  1. checksums.yaml +7 -0
  2. data/.gitignore +3 -0
  3. data/Gemfile +3 -0
  4. data/LICENSE +21 -0
  5. data/README.md +9 -0
  6. data/Rakefile +93 -0
  7. data/TODO.txt +44 -0
  8. data/bin/rdb +8 -0
  9. data/lib/rdb.rb +5 -0
  10. data/lib/rdb/attach.rb +10 -0
  11. data/lib/rdb/debugger.rb +297 -0
  12. data/lib/rdb/inspector.rb +42 -0
  13. data/lib/rdb/messaging.rb +287 -0
  14. data/lib/rdb/version.rb +3 -0
  15. data/lib/rdb/web/public/css/editor.css +29 -0
  16. data/lib/rdb/web/public/css/lato.css +16 -0
  17. data/lib/rdb/web/public/css/ng-table.min.css +3 -0
  18. data/lib/rdb/web/public/css/style.css +156 -0
  19. data/lib/rdb/web/public/font/Lato.woff2 +0 -0
  20. data/lib/rdb/web/public/img/breakpoint-light.png +0 -0
  21. data/lib/rdb/web/public/img/breakpoint-live-command-light.png +0 -0
  22. data/lib/rdb/web/public/img/breakpoint-live-command.png +0 -0
  23. data/lib/rdb/web/public/img/breakpoint.png +0 -0
  24. data/lib/rdb/web/public/img/favicon.ico +0 -0
  25. data/lib/rdb/web/public/img/favicon.png +0 -0
  26. data/lib/rdb/web/public/img/live-command.png +0 -0
  27. data/lib/rdb/web/public/img/settings.png +0 -0
  28. data/lib/rdb/web/public/js/ace/ace.js +11 -0
  29. data/lib/rdb/web/public/js/ace/ext-beautify.js +5 -0
  30. data/lib/rdb/web/public/js/ace/ext-chromevox.js +5 -0
  31. data/lib/rdb/web/public/js/ace/ext-elastic_tabstops_lite.js +5 -0
  32. data/lib/rdb/web/public/js/ace/ext-emmet.js +5 -0
  33. data/lib/rdb/web/public/js/ace/ext-error_marker.js +5 -0
  34. data/lib/rdb/web/public/js/ace/ext-keybinding_menu.js +5 -0
  35. data/lib/rdb/web/public/js/ace/ext-language_tools.js +5 -0
  36. data/lib/rdb/web/public/js/ace/ext-linking.js +5 -0
  37. data/lib/rdb/web/public/js/ace/ext-modelist.js +5 -0
  38. data/lib/rdb/web/public/js/ace/ext-old_ie.js +5 -0
  39. data/lib/rdb/web/public/js/ace/ext-searchbox.js +5 -0
  40. data/lib/rdb/web/public/js/ace/ext-settings_menu.js +5 -0
  41. data/lib/rdb/web/public/js/ace/ext-spellcheck.js +5 -0
  42. data/lib/rdb/web/public/js/ace/ext-split.js +5 -0
  43. data/lib/rdb/web/public/js/ace/ext-static_highlight.js +5 -0
  44. data/lib/rdb/web/public/js/ace/ext-statusbar.js +5 -0
  45. data/lib/rdb/web/public/js/ace/ext-textarea.js +5 -0
  46. data/lib/rdb/web/public/js/ace/ext-themelist.js +5 -0
  47. data/lib/rdb/web/public/js/ace/ext-whitespace.js +5 -0
  48. data/lib/rdb/web/public/js/ace/keybinding-emacs.js +1 -0
  49. data/lib/rdb/web/public/js/ace/keybinding-vim.js +1 -0
  50. data/lib/rdb/web/public/js/ace/mode-abap.js +1 -0
  51. data/lib/rdb/web/public/js/ace/mode-actionscript.js +1 -0
  52. data/lib/rdb/web/public/js/ace/mode-ada.js +1 -0
  53. data/lib/rdb/web/public/js/ace/mode-apache_conf.js +1 -0
  54. data/lib/rdb/web/public/js/ace/mode-applescript.js +1 -0
  55. data/lib/rdb/web/public/js/ace/mode-asciidoc.js +1 -0
  56. data/lib/rdb/web/public/js/ace/mode-assembly_x86.js +1 -0
  57. data/lib/rdb/web/public/js/ace/mode-autohotkey.js +1 -0
  58. data/lib/rdb/web/public/js/ace/mode-batchfile.js +1 -0
  59. data/lib/rdb/web/public/js/ace/mode-c9search.js +1 -0
  60. data/lib/rdb/web/public/js/ace/mode-c_cpp.js +1 -0
  61. data/lib/rdb/web/public/js/ace/mode-cirru.js +1 -0
  62. data/lib/rdb/web/public/js/ace/mode-clojure.js +1 -0
  63. data/lib/rdb/web/public/js/ace/mode-cobol.js +1 -0
  64. data/lib/rdb/web/public/js/ace/mode-coffee.js +1 -0
  65. data/lib/rdb/web/public/js/ace/mode-coldfusion.js +1 -0
  66. data/lib/rdb/web/public/js/ace/mode-csharp.js +1 -0
  67. data/lib/rdb/web/public/js/ace/mode-css.js +1 -0
  68. data/lib/rdb/web/public/js/ace/mode-curly.js +1 -0
  69. data/lib/rdb/web/public/js/ace/mode-d.js +1 -0
  70. data/lib/rdb/web/public/js/ace/mode-dart.js +1 -0
  71. data/lib/rdb/web/public/js/ace/mode-diff.js +1 -0
  72. data/lib/rdb/web/public/js/ace/mode-django.js +1 -0
  73. data/lib/rdb/web/public/js/ace/mode-dockerfile.js +1 -0
  74. data/lib/rdb/web/public/js/ace/mode-dot.js +1 -0
  75. data/lib/rdb/web/public/js/ace/mode-eiffel.js +1 -0
  76. data/lib/rdb/web/public/js/ace/mode-ejs.js +1 -0
  77. data/lib/rdb/web/public/js/ace/mode-erlang.js +1 -0
  78. data/lib/rdb/web/public/js/ace/mode-forth.js +1 -0
  79. data/lib/rdb/web/public/js/ace/mode-ftl.js +1 -0
  80. data/lib/rdb/web/public/js/ace/mode-gcode.js +1 -0
  81. data/lib/rdb/web/public/js/ace/mode-gherkin.js +1 -0
  82. data/lib/rdb/web/public/js/ace/mode-gitignore.js +1 -0
  83. data/lib/rdb/web/public/js/ace/mode-glsl.js +1 -0
  84. data/lib/rdb/web/public/js/ace/mode-golang.js +1 -0
  85. data/lib/rdb/web/public/js/ace/mode-groovy.js +1 -0
  86. data/lib/rdb/web/public/js/ace/mode-haml.js +1 -0
  87. data/lib/rdb/web/public/js/ace/mode-handlebars.js +1 -0
  88. data/lib/rdb/web/public/js/ace/mode-haskell.js +1 -0
  89. data/lib/rdb/web/public/js/ace/mode-haxe.js +1 -0
  90. data/lib/rdb/web/public/js/ace/mode-html.js +1 -0
  91. data/lib/rdb/web/public/js/ace/mode-html_ruby.js +1 -0
  92. data/lib/rdb/web/public/js/ace/mode-ini.js +1 -0
  93. data/lib/rdb/web/public/js/ace/mode-jack.js +1 -0
  94. data/lib/rdb/web/public/js/ace/mode-jade.js +1 -0
  95. data/lib/rdb/web/public/js/ace/mode-java.js +1 -0
  96. data/lib/rdb/web/public/js/ace/mode-javascript.js +1 -0
  97. data/lib/rdb/web/public/js/ace/mode-json.js +1 -0
  98. data/lib/rdb/web/public/js/ace/mode-jsoniq.js +1 -0
  99. data/lib/rdb/web/public/js/ace/mode-jsp.js +1 -0
  100. data/lib/rdb/web/public/js/ace/mode-jsx.js +1 -0
  101. data/lib/rdb/web/public/js/ace/mode-julia.js +1 -0
  102. data/lib/rdb/web/public/js/ace/mode-latex.js +1 -0
  103. data/lib/rdb/web/public/js/ace/mode-less.js +1 -0
  104. data/lib/rdb/web/public/js/ace/mode-liquid.js +1 -0
  105. data/lib/rdb/web/public/js/ace/mode-lisp.js +1 -0
  106. data/lib/rdb/web/public/js/ace/mode-livescript.js +1 -0
  107. data/lib/rdb/web/public/js/ace/mode-logiql.js +1 -0
  108. data/lib/rdb/web/public/js/ace/mode-lsl.js +1 -0
  109. data/lib/rdb/web/public/js/ace/mode-lua.js +1 -0
  110. data/lib/rdb/web/public/js/ace/mode-luapage.js +1 -0
  111. data/lib/rdb/web/public/js/ace/mode-lucene.js +1 -0
  112. data/lib/rdb/web/public/js/ace/mode-makefile.js +1 -0
  113. data/lib/rdb/web/public/js/ace/mode-markdown.js +1 -0
  114. data/lib/rdb/web/public/js/ace/mode-matlab.js +1 -0
  115. data/lib/rdb/web/public/js/ace/mode-mel.js +1 -0
  116. data/lib/rdb/web/public/js/ace/mode-mushcode.js +1 -0
  117. data/lib/rdb/web/public/js/ace/mode-mysql.js +1 -0
  118. data/lib/rdb/web/public/js/ace/mode-nix.js +1 -0
  119. data/lib/rdb/web/public/js/ace/mode-objectivec.js +1 -0
  120. data/lib/rdb/web/public/js/ace/mode-ocaml.js +1 -0
  121. data/lib/rdb/web/public/js/ace/mode-pascal.js +1 -0
  122. data/lib/rdb/web/public/js/ace/mode-perl.js +1 -0
  123. data/lib/rdb/web/public/js/ace/mode-pgsql.js +1 -0
  124. data/lib/rdb/web/public/js/ace/mode-php.js +1 -0
  125. data/lib/rdb/web/public/js/ace/mode-plain_text.js +1 -0
  126. data/lib/rdb/web/public/js/ace/mode-powershell.js +1 -0
  127. data/lib/rdb/web/public/js/ace/mode-praat.js +1 -0
  128. data/lib/rdb/web/public/js/ace/mode-prolog.js +1 -0
  129. data/lib/rdb/web/public/js/ace/mode-properties.js +1 -0
  130. data/lib/rdb/web/public/js/ace/mode-protobuf.js +1 -0
  131. data/lib/rdb/web/public/js/ace/mode-python.js +1 -0
  132. data/lib/rdb/web/public/js/ace/mode-r.js +1 -0
  133. data/lib/rdb/web/public/js/ace/mode-rdoc.js +1 -0
  134. data/lib/rdb/web/public/js/ace/mode-rhtml.js +1 -0
  135. data/lib/rdb/web/public/js/ace/mode-ruby.js +1 -0
  136. data/lib/rdb/web/public/js/ace/mode-rust.js +1 -0
  137. data/lib/rdb/web/public/js/ace/mode-sass.js +1 -0
  138. data/lib/rdb/web/public/js/ace/mode-scad.js +1 -0
  139. data/lib/rdb/web/public/js/ace/mode-scala.js +1 -0
  140. data/lib/rdb/web/public/js/ace/mode-scheme.js +1 -0
  141. data/lib/rdb/web/public/js/ace/mode-scss.js +1 -0
  142. data/lib/rdb/web/public/js/ace/mode-sh.js +1 -0
  143. data/lib/rdb/web/public/js/ace/mode-sjs.js +1 -0
  144. data/lib/rdb/web/public/js/ace/mode-smarty.js +1 -0
  145. data/lib/rdb/web/public/js/ace/mode-snippets.js +1 -0
  146. data/lib/rdb/web/public/js/ace/mode-soy_template.js +1 -0
  147. data/lib/rdb/web/public/js/ace/mode-space.js +1 -0
  148. data/lib/rdb/web/public/js/ace/mode-sql.js +1 -0
  149. data/lib/rdb/web/public/js/ace/mode-stylus.js +1 -0
  150. data/lib/rdb/web/public/js/ace/mode-svg.js +1 -0
  151. data/lib/rdb/web/public/js/ace/mode-tcl.js +1 -0
  152. data/lib/rdb/web/public/js/ace/mode-tex.js +1 -0
  153. data/lib/rdb/web/public/js/ace/mode-text.js +0 -0
  154. data/lib/rdb/web/public/js/ace/mode-textile.js +1 -0
  155. data/lib/rdb/web/public/js/ace/mode-toml.js +1 -0
  156. data/lib/rdb/web/public/js/ace/mode-twig.js +1 -0
  157. data/lib/rdb/web/public/js/ace/mode-typescript.js +1 -0
  158. data/lib/rdb/web/public/js/ace/mode-vala.js +1 -0
  159. data/lib/rdb/web/public/js/ace/mode-vbscript.js +1 -0
  160. data/lib/rdb/web/public/js/ace/mode-velocity.js +1 -0
  161. data/lib/rdb/web/public/js/ace/mode-verilog.js +1 -0
  162. data/lib/rdb/web/public/js/ace/mode-vhdl.js +1 -0
  163. data/lib/rdb/web/public/js/ace/mode-xml.js +1 -0
  164. data/lib/rdb/web/public/js/ace/mode-xquery.js +1 -0
  165. data/lib/rdb/web/public/js/ace/mode-yaml.js +1 -0
  166. data/lib/rdb/web/public/js/ace/snippets/abap.js +1 -0
  167. data/lib/rdb/web/public/js/ace/snippets/actionscript.js +1 -0
  168. data/lib/rdb/web/public/js/ace/snippets/ada.js +1 -0
  169. data/lib/rdb/web/public/js/ace/snippets/apache_conf.js +1 -0
  170. data/lib/rdb/web/public/js/ace/snippets/applescript.js +1 -0
  171. data/lib/rdb/web/public/js/ace/snippets/asciidoc.js +1 -0
  172. data/lib/rdb/web/public/js/ace/snippets/assembly_x86.js +1 -0
  173. data/lib/rdb/web/public/js/ace/snippets/autohotkey.js +1 -0
  174. data/lib/rdb/web/public/js/ace/snippets/batchfile.js +1 -0
  175. data/lib/rdb/web/public/js/ace/snippets/c9search.js +1 -0
  176. data/lib/rdb/web/public/js/ace/snippets/c_cpp.js +1 -0
  177. data/lib/rdb/web/public/js/ace/snippets/cirru.js +1 -0
  178. data/lib/rdb/web/public/js/ace/snippets/clojure.js +1 -0
  179. data/lib/rdb/web/public/js/ace/snippets/cobol.js +1 -0
  180. data/lib/rdb/web/public/js/ace/snippets/coffee.js +1 -0
  181. data/lib/rdb/web/public/js/ace/snippets/coldfusion.js +1 -0
  182. data/lib/rdb/web/public/js/ace/snippets/csharp.js +1 -0
  183. data/lib/rdb/web/public/js/ace/snippets/css.js +1 -0
  184. data/lib/rdb/web/public/js/ace/snippets/curly.js +1 -0
  185. data/lib/rdb/web/public/js/ace/snippets/d.js +1 -0
  186. data/lib/rdb/web/public/js/ace/snippets/dart.js +1 -0
  187. data/lib/rdb/web/public/js/ace/snippets/diff.js +1 -0
  188. data/lib/rdb/web/public/js/ace/snippets/django.js +1 -0
  189. data/lib/rdb/web/public/js/ace/snippets/dockerfile.js +1 -0
  190. data/lib/rdb/web/public/js/ace/snippets/dot.js +1 -0
  191. data/lib/rdb/web/public/js/ace/snippets/eiffel.js +1 -0
  192. data/lib/rdb/web/public/js/ace/snippets/ejs.js +1 -0
  193. data/lib/rdb/web/public/js/ace/snippets/erlang.js +1 -0
  194. data/lib/rdb/web/public/js/ace/snippets/forth.js +1 -0
  195. data/lib/rdb/web/public/js/ace/snippets/ftl.js +1 -0
  196. data/lib/rdb/web/public/js/ace/snippets/gcode.js +1 -0
  197. data/lib/rdb/web/public/js/ace/snippets/gherkin.js +1 -0
  198. data/lib/rdb/web/public/js/ace/snippets/gitignore.js +1 -0
  199. data/lib/rdb/web/public/js/ace/snippets/glsl.js +1 -0
  200. data/lib/rdb/web/public/js/ace/snippets/golang.js +1 -0
  201. data/lib/rdb/web/public/js/ace/snippets/groovy.js +1 -0
  202. data/lib/rdb/web/public/js/ace/snippets/haml.js +1 -0
  203. data/lib/rdb/web/public/js/ace/snippets/handlebars.js +1 -0
  204. data/lib/rdb/web/public/js/ace/snippets/haskell.js +1 -0
  205. data/lib/rdb/web/public/js/ace/snippets/haxe.js +1 -0
  206. data/lib/rdb/web/public/js/ace/snippets/html.js +1 -0
  207. data/lib/rdb/web/public/js/ace/snippets/html_ruby.js +1 -0
  208. data/lib/rdb/web/public/js/ace/snippets/ini.js +1 -0
  209. data/lib/rdb/web/public/js/ace/snippets/jack.js +1 -0
  210. data/lib/rdb/web/public/js/ace/snippets/jade.js +1 -0
  211. data/lib/rdb/web/public/js/ace/snippets/java.js +1 -0
  212. data/lib/rdb/web/public/js/ace/snippets/javascript.js +1 -0
  213. data/lib/rdb/web/public/js/ace/snippets/json.js +1 -0
  214. data/lib/rdb/web/public/js/ace/snippets/jsoniq.js +1 -0
  215. data/lib/rdb/web/public/js/ace/snippets/jsp.js +1 -0
  216. data/lib/rdb/web/public/js/ace/snippets/jsx.js +1 -0
  217. data/lib/rdb/web/public/js/ace/snippets/julia.js +1 -0
  218. data/lib/rdb/web/public/js/ace/snippets/latex.js +1 -0
  219. data/lib/rdb/web/public/js/ace/snippets/less.js +1 -0
  220. data/lib/rdb/web/public/js/ace/snippets/liquid.js +1 -0
  221. data/lib/rdb/web/public/js/ace/snippets/lisp.js +1 -0
  222. data/lib/rdb/web/public/js/ace/snippets/livescript.js +1 -0
  223. data/lib/rdb/web/public/js/ace/snippets/logiql.js +1 -0
  224. data/lib/rdb/web/public/js/ace/snippets/lsl.js +1 -0
  225. data/lib/rdb/web/public/js/ace/snippets/lua.js +1 -0
  226. data/lib/rdb/web/public/js/ace/snippets/luapage.js +1 -0
  227. data/lib/rdb/web/public/js/ace/snippets/lucene.js +1 -0
  228. data/lib/rdb/web/public/js/ace/snippets/makefile.js +1 -0
  229. data/lib/rdb/web/public/js/ace/snippets/markdown.js +1 -0
  230. data/lib/rdb/web/public/js/ace/snippets/matlab.js +1 -0
  231. data/lib/rdb/web/public/js/ace/snippets/mel.js +1 -0
  232. data/lib/rdb/web/public/js/ace/snippets/mushcode.js +1 -0
  233. data/lib/rdb/web/public/js/ace/snippets/mysql.js +1 -0
  234. data/lib/rdb/web/public/js/ace/snippets/nix.js +1 -0
  235. data/lib/rdb/web/public/js/ace/snippets/objectivec.js +1 -0
  236. data/lib/rdb/web/public/js/ace/snippets/ocaml.js +1 -0
  237. data/lib/rdb/web/public/js/ace/snippets/pascal.js +1 -0
  238. data/lib/rdb/web/public/js/ace/snippets/perl.js +1 -0
  239. data/lib/rdb/web/public/js/ace/snippets/pgsql.js +1 -0
  240. data/lib/rdb/web/public/js/ace/snippets/php.js +1 -0
  241. data/lib/rdb/web/public/js/ace/snippets/plain_text.js +1 -0
  242. data/lib/rdb/web/public/js/ace/snippets/powershell.js +1 -0
  243. data/lib/rdb/web/public/js/ace/snippets/praat.js +1 -0
  244. data/lib/rdb/web/public/js/ace/snippets/prolog.js +1 -0
  245. data/lib/rdb/web/public/js/ace/snippets/properties.js +1 -0
  246. data/lib/rdb/web/public/js/ace/snippets/protobuf.js +1 -0
  247. data/lib/rdb/web/public/js/ace/snippets/python.js +1 -0
  248. data/lib/rdb/web/public/js/ace/snippets/r.js +1 -0
  249. data/lib/rdb/web/public/js/ace/snippets/rdoc.js +1 -0
  250. data/lib/rdb/web/public/js/ace/snippets/rhtml.js +1 -0
  251. data/lib/rdb/web/public/js/ace/snippets/ruby.js +1 -0
  252. data/lib/rdb/web/public/js/ace/snippets/rust.js +1 -0
  253. data/lib/rdb/web/public/js/ace/snippets/sass.js +1 -0
  254. data/lib/rdb/web/public/js/ace/snippets/scad.js +1 -0
  255. data/lib/rdb/web/public/js/ace/snippets/scala.js +1 -0
  256. data/lib/rdb/web/public/js/ace/snippets/scheme.js +1 -0
  257. data/lib/rdb/web/public/js/ace/snippets/scss.js +1 -0
  258. data/lib/rdb/web/public/js/ace/snippets/sh.js +1 -0
  259. data/lib/rdb/web/public/js/ace/snippets/sjs.js +1 -0
  260. data/lib/rdb/web/public/js/ace/snippets/smarty.js +1 -0
  261. data/lib/rdb/web/public/js/ace/snippets/snippets.js +1 -0
  262. data/lib/rdb/web/public/js/ace/snippets/soy_template.js +1 -0
  263. data/lib/rdb/web/public/js/ace/snippets/space.js +1 -0
  264. data/lib/rdb/web/public/js/ace/snippets/sql.js +1 -0
  265. data/lib/rdb/web/public/js/ace/snippets/stylus.js +1 -0
  266. data/lib/rdb/web/public/js/ace/snippets/svg.js +1 -0
  267. data/lib/rdb/web/public/js/ace/snippets/tcl.js +1 -0
  268. data/lib/rdb/web/public/js/ace/snippets/tex.js +1 -0
  269. data/lib/rdb/web/public/js/ace/snippets/text.js +1 -0
  270. data/lib/rdb/web/public/js/ace/snippets/textile.js +1 -0
  271. data/lib/rdb/web/public/js/ace/snippets/toml.js +1 -0
  272. data/lib/rdb/web/public/js/ace/snippets/twig.js +1 -0
  273. data/lib/rdb/web/public/js/ace/snippets/typescript.js +1 -0
  274. data/lib/rdb/web/public/js/ace/snippets/vala.js +1 -0
  275. data/lib/rdb/web/public/js/ace/snippets/vbscript.js +1 -0
  276. data/lib/rdb/web/public/js/ace/snippets/velocity.js +1 -0
  277. data/lib/rdb/web/public/js/ace/snippets/verilog.js +1 -0
  278. data/lib/rdb/web/public/js/ace/snippets/vhdl.js +1 -0
  279. data/lib/rdb/web/public/js/ace/snippets/xml.js +1 -0
  280. data/lib/rdb/web/public/js/ace/snippets/xquery.js +1 -0
  281. data/lib/rdb/web/public/js/ace/snippets/yaml.js +1 -0
  282. data/lib/rdb/web/public/js/ace/theme-ambiance.js +1 -0
  283. data/lib/rdb/web/public/js/ace/theme-chaos.js +1 -0
  284. data/lib/rdb/web/public/js/ace/theme-chrome.js +1 -0
  285. data/lib/rdb/web/public/js/ace/theme-clouds.js +1 -0
  286. data/lib/rdb/web/public/js/ace/theme-clouds_midnight.js +1 -0
  287. data/lib/rdb/web/public/js/ace/theme-cobalt.js +1 -0
  288. data/lib/rdb/web/public/js/ace/theme-crimson_editor.js +1 -0
  289. data/lib/rdb/web/public/js/ace/theme-dawn.js +1 -0
  290. data/lib/rdb/web/public/js/ace/theme-dreamweaver.js +1 -0
  291. data/lib/rdb/web/public/js/ace/theme-eclipse.js +1 -0
  292. data/lib/rdb/web/public/js/ace/theme-github.js +1 -0
  293. data/lib/rdb/web/public/js/ace/theme-idle_fingers.js +1 -0
  294. data/lib/rdb/web/public/js/ace/theme-katzenmilch.js +1 -0
  295. data/lib/rdb/web/public/js/ace/theme-kr.js +1 -0
  296. data/lib/rdb/web/public/js/ace/theme-kr_theme.js +1 -0
  297. data/lib/rdb/web/public/js/ace/theme-kuroir.js +1 -0
  298. data/lib/rdb/web/public/js/ace/theme-merbivore.js +1 -0
  299. data/lib/rdb/web/public/js/ace/theme-merbivore_soft.js +1 -0
  300. data/lib/rdb/web/public/js/ace/theme-mono_industrial.js +1 -0
  301. data/lib/rdb/web/public/js/ace/theme-monokai.js +1 -0
  302. data/lib/rdb/web/public/js/ace/theme-pastel_on_dark.js +1 -0
  303. data/lib/rdb/web/public/js/ace/theme-solarized_dark.js +1 -0
  304. data/lib/rdb/web/public/js/ace/theme-solarized_light.js +1 -0
  305. data/lib/rdb/web/public/js/ace/theme-terminal.js +1 -0
  306. data/lib/rdb/web/public/js/ace/theme-textmate.js +1 -0
  307. data/lib/rdb/web/public/js/ace/theme-tomorrow.js +1 -0
  308. data/lib/rdb/web/public/js/ace/theme-tomorrow_night.js +1 -0
  309. data/lib/rdb/web/public/js/ace/theme-tomorrow_night_blue.js +1 -0
  310. data/lib/rdb/web/public/js/ace/theme-tomorrow_night_bright.js +1 -0
  311. data/lib/rdb/web/public/js/ace/theme-tomorrow_night_eighties.js +1 -0
  312. data/lib/rdb/web/public/js/ace/theme-twilight.js +1 -0
  313. data/lib/rdb/web/public/js/ace/theme-vibrant_ink.js +1 -0
  314. data/lib/rdb/web/public/js/ace/theme-xcode.js +1 -0
  315. data/lib/rdb/web/public/js/ace/worker-coffee.js +1 -0
  316. data/lib/rdb/web/public/js/ace/worker-css.js +1 -0
  317. data/lib/rdb/web/public/js/ace/worker-html.js +1 -0
  318. data/lib/rdb/web/public/js/ace/worker-javascript.js +1 -0
  319. data/lib/rdb/web/public/js/ace/worker-json.js +1 -0
  320. data/lib/rdb/web/public/js/ace/worker-lua.js +1 -0
  321. data/lib/rdb/web/public/js/ace/worker-php.js +1 -0
  322. data/lib/rdb/web/public/js/ace/worker-xquery.js +1 -0
  323. data/lib/rdb/web/public/js/angular.min.js +202 -0
  324. data/lib/rdb/web/public/js/app.js +389 -0
  325. data/lib/rdb/web/public/js/ng-table.min.js +3 -0
  326. data/lib/rdb/web/server.rb +173 -0
  327. data/lib/rdb/web/views/index.erb +79 -0
  328. data/lib/web.rb +3 -0
  329. data/rdb.gemspec +26 -0
  330. data/test.rb +39 -0
  331. metadata +486 -0
@@ -0,0 +1,7 @@
1
+ ---
2
+ SHA1:
3
+ metadata.gz: cb10186874a82b79627e85bc76509e03947a5795
4
+ data.tar.gz: 7b062cebaa8ed960fa418c144e531e9e15f6e0f7
5
+ SHA512:
6
+ metadata.gz: 1bdadde43fb3ea668a1e6af471b7fdd699d7d08ab4c83db4b98357f3abd31ba357dd29d0bd00fe7745acaae02ace51ceeb29224d16bb96f2102399fcc3952a33
7
+ data.tar.gz: 068a505eec8b57c3440586b5be63696df678affa9a510178125162f09e7add3cf8ae68ae6ab098b4ebadf26c8e1cc3003d2b6d6858c5a2175c5b8e6fbf45c52b
@@ -0,0 +1,3 @@
1
+ Gemfile.lock
2
+ gem/
3
+ .bundle/
data/Gemfile ADDED
@@ -0,0 +1,3 @@
1
+ source 'https://rubygems.org'
2
+
3
+ gemspec
data/LICENSE ADDED
@@ -0,0 +1,21 @@
1
+ The MIT License (MIT)
2
+
3
+ Copyright (c) 2014 Chris Schmich
4
+
5
+ Permission is hereby granted, free of charge, to any person obtaining a copy
6
+ of this software and associated documentation files (the "Software"), to deal
7
+ in the Software without restriction, including without limitation the rights
8
+ to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
9
+ copies of the Software, and to permit persons to whom the Software is
10
+ furnished to do so, subject to the following conditions:
11
+
12
+ The above copyright notice and this permission notice shall be included in
13
+ all copies or substantial portions of the Software.
14
+
15
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
16
+ IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
17
+ FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
18
+ AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
19
+ LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
20
+ OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
21
+ THE SOFTWARE.
@@ -0,0 +1,9 @@
1
+ # rdb
2
+
3
+ Shh, it's a secret (for now).
4
+
5
+ ## License
6
+
7
+ Copyright © 2014 Chris Schmich
8
+ <br />
9
+ MIT License, See [LICENSE](LICENSE) for details.
@@ -0,0 +1,93 @@
1
+ require 'rake/testtask'
2
+ require 'fileutils'
3
+
4
+ class GemInfo
5
+ def initialize
6
+ @gemspec_filename = Dir['*.gemspec'][0]
7
+ end
8
+
9
+ def spec
10
+ @spec ||= eval(File.read(@gemspec_filename))
11
+ end
12
+
13
+ def name
14
+ @name ||= spec.name
15
+ end
16
+
17
+ def version
18
+ @version ||= spec.version.to_s
19
+ end
20
+
21
+ def gem_filename
22
+ "#{name}-#{version}.gem"
23
+ end
24
+
25
+ def gemspec_filename
26
+ @gemspec_filename
27
+ end
28
+ end
29
+
30
+ $gem = GemInfo.new
31
+
32
+ desc "Start irb #{$gem.name} session"
33
+ task :console do
34
+ sh "irb -rubygems -I./lib -r ./lib/#{$gem.name}.rb"
35
+ end
36
+
37
+ desc "Install #{$gem.name} gem"
38
+ task :install => :build do
39
+ gemfile = "gem/#{$gem.gem_filename}"
40
+ if !gemfile.nil?
41
+ sh "gem install --no-ri --no-rdoc #{gemfile}"
42
+ else
43
+ puts 'Could not find gem.'
44
+ end
45
+ end
46
+
47
+ desc "Uninstall #{$gem.name} gem"
48
+ task :uninstall do
49
+ sh "gem uninstall #{$gem.name} -x"
50
+ end
51
+
52
+ desc "Build #{$gem.name} gem"
53
+ task :build do
54
+ FileUtils.mkdir_p('gem')
55
+ sh "gem build #{$gem.gemspec_filename}"
56
+ FileUtils.mv $gem.gem_filename, 'gem'
57
+ end
58
+
59
+ desc "Release #{$gem.name} v#{$gem.version} and tag in git"
60
+ task :release => :build do
61
+ if (`git` rescue nil).nil?
62
+ puts 'Could not run git command.'
63
+ exit!
64
+ end
65
+
66
+ if (`gem` rescue nil).nil?
67
+ puts 'Could not run gem command.'
68
+ exit!
69
+ end
70
+
71
+ unless (`git branch --no-color`.strip rescue '') =~ /\A*\s+master\z/
72
+ puts 'You must release from the master branch.'
73
+ exit!
74
+ end
75
+
76
+ print "Do you want to release #{$gem.name} v#{$gem.version} and tag it in git (y/n)? "
77
+ response = $stdin.gets.strip
78
+ unless response =~ /\Ay/
79
+ puts 'Aborting.'
80
+ exit!
81
+ end
82
+
83
+ version = $gem.version
84
+ puts "Releasing version #{version}."
85
+
86
+ sh "git commit --allow-empty -a -m \"Release #{version}.\""
87
+ sh "git tag v#{version}"
88
+ sh 'git push origin master'
89
+ sh "git push origin v#{version}"
90
+ sh "gem push gem/#{$gem.gem_filename}"
91
+
92
+ puts 'Fin.'
93
+ end
@@ -0,0 +1,44 @@
1
+ - File selector at top of source editor
2
+ - Populate with every file seen so far
3
+ - Locals window
4
+ - Params window (with locals?)
5
+ - Watch window
6
+ - Custom user expressions
7
+ - Object explorer
8
+ - Tree view
9
+ - Show class names
10
+ - Show circular references like node
11
+ - Breakpoint setting
12
+ - Breakpoints window
13
+ - Tracepoints
14
+ - Like VS Debugger
15
+ - stdout/stderr viewer ("Console" window)
16
+ - Exception reporter
17
+ - Have target launch webserver itself
18
+ - Auto-open browser
19
+ - Gemify library
20
+ - Preserve settings
21
+ - Breakpoints
22
+ - Watches
23
+ - Expression tooltips
24
+ - Hovering over expressions in source editor shows evaluated value
25
+ - Show graphs while running
26
+ - Mem usage
27
+ - CPU usage
28
+ - Network/disk usage
29
+ - Expose ARGV/ARGC, env, and config somewhere (from GET /process)
30
+ - Cover usage scenarios
31
+ - Launch
32
+ - Attach/dettach/re-attach
33
+ - Rails/Sinatra/Padrino
34
+ - Thin/WEBRick/Puma/Unicorn
35
+ - User-invoked
36
+ - Command history for expression evaluator
37
+ - e.g. up/down arrow to recall previous commands
38
+ - Escape to clear current command
39
+ - Autocomplete for evaluation
40
+ - Discover from target
41
+ - Tab to complete
42
+ - Use RUBYOPT/RUBYLIB to autoload debugger
43
+ - RUBYLIB=/path/to/rdb/lib
44
+ - RUBYOPT=-rrdb
data/bin/rdb ADDED
@@ -0,0 +1,8 @@
1
+ #!/usr/bin/env ruby
2
+
3
+ require 'web'
4
+
5
+ server = Rdb::DebugServer
6
+ server.set(:bind, 'localhost')
7
+ server.set(:port, 4567)
8
+ server.run!
@@ -0,0 +1,5 @@
1
+ require 'rdb/inspector'
2
+ require 'rdb/messaging'
3
+ require 'rdb/debugger'
4
+ require 'rdb/attach'
5
+ require 'rdb/version'
@@ -0,0 +1,10 @@
1
+ module Kernel
2
+ def rdb
3
+ Byebug.handler = RemoteCommandProcessor.new
4
+ Byebug.start
5
+ Byebug.run_init_script(StringIO.new)
6
+ Byebug.current_context.step_out(1, true)
7
+ end
8
+
9
+ alias_method :debugger, :rdb
10
+ end
@@ -0,0 +1,297 @@
1
+ require 'byebug'
2
+ require 'thread'
3
+
4
+ class CommandServer < Messaging::Server
5
+ def initialize
6
+ super
7
+
8
+ @debug_thread_group = nil
9
+
10
+ @access = Mutex.new
11
+
12
+ @waiting = false
13
+ @mutex = Mutex.new
14
+ @resource = ConditionVariable.new
15
+
16
+ @command_queue = []
17
+ end
18
+
19
+ def start
20
+ @debug_thread_group = group = ThreadGroup.new
21
+
22
+ thread = Byebug::DebugThread.new do
23
+ listen('0.0.0.0', 4444)
24
+ end
25
+
26
+ group.add(thread)
27
+ group.enclose
28
+ end
29
+
30
+ remote!
31
+ def threads
32
+ @access.synchronize {
33
+ # TODO: Better sync
34
+ while !@waiting
35
+ end
36
+
37
+ threads = []
38
+ Thread.list.each do |t|
39
+ next if ignored? t
40
+
41
+ backtrace = []
42
+
43
+ context = Byebug.thread_context(t)
44
+ stack_size = context.calced_stack_size
45
+
46
+ (0...stack_size).each do |i|
47
+ path = File.expand_path(context.frame_file(i))
48
+ line = context.frame_line(i)
49
+ klass = context.frame_class(i).to_s
50
+ klass = nil if klass.empty?
51
+ method = context.frame_method(i)
52
+
53
+ backtrace << {
54
+ path: path,
55
+ line: line,
56
+ class: klass,
57
+ method: method,
58
+ }
59
+ end
60
+
61
+ threads << {
62
+ id: context.thnum,
63
+ main: t == Thread.main,
64
+ status: t.status,
65
+ alive: t.alive?,
66
+ priority: t.priority,
67
+ safe_level: t.safe_level,
68
+ backtrace: backtrace
69
+ }
70
+ end
71
+
72
+ threads
73
+ }
74
+ end
75
+
76
+ remote!
77
+ def process
78
+ @access.synchronize {
79
+ {
80
+ id: Process.pid,
81
+ argv: ARGV,
82
+ script: $0,
83
+ env: ENV.to_h,
84
+ config: RbConfig::CONFIG
85
+ }
86
+ }
87
+ end
88
+
89
+ remote!
90
+ def locals
91
+ @access.synchronize {
92
+ while !@waiting
93
+ end
94
+
95
+ vars = {}
96
+ context = Byebug.thread_context(Thread.main)
97
+ syms = context.frame_binding.eval('local_variables')
98
+ syms.each do |sym|
99
+ name = sym.to_s
100
+ vars[name] = context.frame_binding.eval(name).inspect
101
+ end
102
+
103
+ vars
104
+ }
105
+ end
106
+
107
+ remote!
108
+ def eval(expr: nil, frame: nil)
109
+ @access.synchronize {
110
+ while !@waiting
111
+ end
112
+
113
+ context = Byebug.thread_context(Thread.main)
114
+ begin
115
+ binding = context.frame_binding(frame)
116
+ value = Inspector.inspect(binding.eval(expr))
117
+ return { success: true, value: value }
118
+ rescue Exception => e
119
+ return { success: false, class: e.class.name, message: e.message }
120
+ end
121
+ }
122
+ end
123
+
124
+ remote!
125
+ def breakpoints
126
+ @access.synchronize {
127
+ Byebug.breakpoints.map do |bp|
128
+ {
129
+ id: bp.id,
130
+ line: bp.pos,
131
+ path: bp.source
132
+ }
133
+ end
134
+ }
135
+ end
136
+
137
+ remote!
138
+ def add_breakpoint(file: nil, line: nil)
139
+ @access.synchronize {
140
+ breakpoint = Byebug::Breakpoint.add(file, line)
141
+ broadcast.breakpoint_created
142
+ breakpoint.id
143
+ }
144
+ end
145
+
146
+ remote!
147
+ def remove_breakpoint(id: nil)
148
+ @access.synchronize {
149
+ breakpoint = Byebug::Breakpoint.remove(id)
150
+ broadcast.breakpoint_deleted
151
+ true
152
+ }
153
+ end
154
+
155
+ remote!
156
+ def pause
157
+ @access.synchronize {
158
+ context = Byebug.thread_context(Thread.main)
159
+ context.interrupt
160
+
161
+ false
162
+ }
163
+ end
164
+
165
+ remote!
166
+ def resume
167
+ @access.synchronize {
168
+ @command_queue << proc { |context|
169
+ true
170
+ }
171
+
172
+ @mutex.synchronize {
173
+ @resource.signal
174
+ }
175
+
176
+ true
177
+ }
178
+ end
179
+
180
+ remote!
181
+ def step_in
182
+ @access.synchronize {
183
+ @command_queue << proc { |context|
184
+ context.step_into(1)
185
+ true
186
+ }
187
+
188
+ @mutex.synchronize {
189
+ @resource.signal
190
+ }
191
+
192
+ true
193
+ }
194
+ end
195
+
196
+ remote!
197
+ def step_over
198
+ @access.synchronize {
199
+ @command_queue << proc { |context|
200
+ context.step_over(1)
201
+ true
202
+ }
203
+
204
+ @mutex.synchronize {
205
+ @resource.signal
206
+ }
207
+
208
+ true
209
+ }
210
+ end
211
+
212
+ remote!
213
+ def step_out
214
+ @access.synchronize {
215
+ @command_queue << proc { |context|
216
+ context.step_out(1)
217
+ true
218
+ }
219
+
220
+ @mutex.synchronize {
221
+ @resource.signal
222
+ }
223
+
224
+ true
225
+ }
226
+ end
227
+
228
+ def next_command
229
+ if @command_queue.empty?
230
+ @mutex.synchronize {
231
+ @waiting = true
232
+ # TODO: Fix this synchronization. Using a condition variable here
233
+ # triggers Ruby's deadlock detection, so for now, we use a limited
234
+ # sleep with repeated checking.
235
+ while @command_queue.empty?
236
+ sleep 0.1
237
+ end
238
+ @waiting = false
239
+ }
240
+ end
241
+
242
+ return @command_queue.shift
243
+ end
244
+
245
+ remote!
246
+ def running?
247
+ @access.synchronize {
248
+ @running
249
+ }
250
+ end
251
+
252
+ def running=(running)
253
+ @running = running
254
+ end
255
+
256
+ private
257
+
258
+ def ignored?(thread)
259
+ thread.group == @debug_thread_group
260
+ end
261
+ end
262
+
263
+ class RemoteCommandProcessor < Byebug::Processor
264
+ def initialize(interface = Byebug::LocalInterface.new)
265
+ super(interface)
266
+
267
+ @server = CommandServer.new
268
+ @server.start
269
+ end
270
+
271
+ def at_breakpoint(context, breakpoint)
272
+ end
273
+
274
+ def at_catchpoint(context, excpt)
275
+ end
276
+
277
+ def at_tracing(context, file, line)
278
+ end
279
+
280
+ def at_line(context, file, line)
281
+ @server.broadcast.break
282
+ process_commands(context, file, line)
283
+ end
284
+
285
+ def at_return(context, file, line)
286
+ process_commands(context, file, line)
287
+ end
288
+
289
+ def process_commands(context, file, line)
290
+ @server.running = false
291
+ loop do
292
+ command = @server.next_command
293
+ break if command.call(context)
294
+ end
295
+ @server.running = true
296
+ end
297
+ end