rdb 0.0.1

Sign up to get free protection for your applications and to get access to all the features.
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