A Multitier Debugger for Web Applications

Manuel Serrano

Abstract

Debugging Web applications is difficult because of their distributed nature but also because of the programming languages and tools commonly used to develop them. Taking benefit of the multitier aspect of the Hop programming language, we have built a new debugger for Web applications that copes with the server-side and the client-side of the executions. Its advantage over most debuggers for the Web is that it reports the full stack trace containing all the server-side and client-side frames that have conducted to an error. An error is reported on its actual position on the source code, wherever it occurs on the server or on the client. To help detecting errors as early as possible, the Hop debugger is accompanied with a debugging execution mode where types are checked before data structures are accessed, argument numbers are verified before functions are called, and array bounds are checked before vectors are accessed. Combining the debugger and the debugging mode makes errors of Web applications easier to understand and easier to localize. Hopefully they also become easier to fix.

References

  1. Binsztok, H., Koprowski, A., and Swarczewskaja, I. (2013). Opa: Up and Running. O'Reilly Media.
  2. Cooper, E., Lindley, S., Wadler, P., and Yallop, J. (2006). Links: Web Programming Without Tiers. In 5th International Symposium on Formal Methods for Components and Objects (FMCO), pages 266-296, Amsterdam, The Netherlands.
  3. ECMA (2009). Ecma-262: Ecmascript language specification.
  4. ECMA (2013). Ecma-262: Ecmascript quasi-literals (ecma-262 edition 6, rev 21). http://wiki.ecmascript.org/doku.php?id=harmony:quasis.
  5. Feldman, P. (2011). WebKit Remote Debugging. http://www.webkit.org/blog/1620/webkit-remotedebugging.
  6. Google (2013). Angularjs. http://angularjs.org/.
  7. Herman, D., Wagner, L., and Zakai, A. (2013). asm.js, Working Draft - 17 march 2013. http://asmjs.org/spec/latest/.
  8. Jensen, S., Møller, A., and Thiemann, P. (2009). Type analysis for javascript. In Proceedings of the 16th International Symposium on Static Analysis (SAS), pages 238-255, Berlin, Heidelberg. Springer-Verlag.
  9. Kellomäki, P. (1993). Psda portable scheme debugger. SIGPLAN Lisp Pointers, VI(1):15-23.
  10. Lenz, J. and Fitzgerald, N. (2011). Source Map Revision 3 Proposal - better bidirectional mapping.
  11. Loitsch, F. and Serrano, M. (2007). Hop Client-Side Compilation. In Proceedings of the 8th Symposium on Trends on Functional Languages (TFL), New York, USA.
  12. Mickens, J. (2012). Rivet: Browser-agnostic Remote Debugging for Web Applications. In Proceedings of the Usenix Annual Technical Conference (ATC), pages 30-43, Boston, MA, USA.
  13. Microsoft (2013). TypeSscript, Language Specification, version 0.9.5.
  14. Rozas, G. (1992). Taming the Y operator. In Conference Record of the 1982 ACM Symposium on Lisp and Functional Programming (LFP), pages 226-234, San Francisco, California, USA.
  15. Schneider, F. (2012). High performance JavaScript with V8. http://cs.au.dk/ jmi/VM/IC-V8.pdf.
  16. Schrock, E. (2009). Debugging AJAX in Production. ACM Queue, 7(1).
  17. Serrano, M. (2009). HOP, a Fast Server for the Diffuse Web. In proceedings of the 11th international conference on Coordination Models and Languages (COORDINATION'09) (invited paper), Lisbon, Portugal.
  18. Serrano, M. and Berry, G. (2012). Multitier Programming in Hop - a first step toward programming 21st-century applications. Communications of the ACM, 55(8):53- 59.
  19. Serrano, M., Gallesio, E., and Loitsch, F. (2006). HOP, a language for programming the Web 2.0. In Proceedings of the First Dynamic Languages Symposium (DLS), Portland, Oregon, USA.
  20. Sharma, A. J. (2012). Better Web Development with WebKit Remote Debugging. In Proceedings of the World Wide Web Conference (WWW), Lyon, France.
  21. Shivers, O. (1988). Control Flow Analysis in Scheme. In Proceedings of the SIGPLAN 7888 ACM SIGPLAN Int'l Conference on Programming Language Design and Implementation (PLDI), pages 164-174, Atlanta, Georgia, USA.
  22. Vckovski, A. (1998). wshdbg - a Debugger for CGI Applications. In Proceedings of the 6th conference on Annual Tcl/Tk Workshop (TCLTK), pages 89-96, Berkeley, CA, USA.
  23. Vouillon, J. and Balat, V. (2013). From bytecode to Javascript: the Js of ocaml compiler. Software: Practice and Experience, doi: 10.1002/spe.2187.
Download


Paper Citation


in Harvard Style

Serrano M. (2014). A Multitier Debugger for Web Applications . In Proceedings of the 10th International Conference on Web Information Systems and Technologies - Volume 1: WEBIST, ISBN 978-989-758-023-9, pages 5-16. DOI: 10.5220/0004790600050016


in Bibtex Style

@conference{webist14,
author={Manuel Serrano},
title={A Multitier Debugger for Web Applications},
booktitle={Proceedings of the 10th International Conference on Web Information Systems and Technologies - Volume 1: WEBIST,},
year={2014},
pages={5-16},
publisher={SciTePress},
organization={INSTICC},
doi={10.5220/0004790600050016},
isbn={978-989-758-023-9},
}


in EndNote Style

TY - CONF
JO - Proceedings of the 10th International Conference on Web Information Systems and Technologies - Volume 1: WEBIST,
TI - A Multitier Debugger for Web Applications
SN - 978-989-758-023-9
AU - Serrano M.
PY - 2014
SP - 5
EP - 16
DO - 10.5220/0004790600050016