📜 ⬆️ ⬇️

Small Javascript Debugger

Recently faced in research with the project trimpath . For myself, I did not find anything interesting, except for an interesting way of setting breakpoints (I modified it a bit from the original - otherwise the long lines were incorrectly displayed in the opera and IA)

breakpoint = function (_name, _context) { if (!breakpoint.allow) { return ; } var expr, result, output; while ( true ) { expr = prompt( 'Debug into breakpoint "' + _name + '"' , '' ); if (!expr) { break ; } else { output = true ; try { result = result = _context(expr); } catch (e) { alert( '[!] caught exception with message "' + e.message + '"' ); output = false ; } if (output) { alert(result); } } } } breakpoint.allow = true ; * This source code was highlighted with Source Code Highlighter .
  1. breakpoint = function (_name, _context) { if (!breakpoint.allow) { return ; } var expr, result, output; while ( true ) { expr = prompt( 'Debug into breakpoint "' + _name + '"' , '' ); if (!expr) { break ; } else { output = true ; try { result = result = _context(expr); } catch (e) { alert( '[!] caught exception with message "' + e.message + '"' ); output = false ; } if (output) { alert(result); } } } } breakpoint.allow = true ; * This source code was highlighted with Source Code Highlighter .
  2. breakpoint = function (_name, _context) { if (!breakpoint.allow) { return ; } var expr, result, output; while ( true ) { expr = prompt( 'Debug into breakpoint "' + _name + '"' , '' ); if (!expr) { break ; } else { output = true ; try { result = result = _context(expr); } catch (e) { alert( '[!] caught exception with message "' + e.message + '"' ); output = false ; } if (output) { alert(result); } } } } breakpoint.allow = true ; * This source code was highlighted with Source Code Highlighter .
  3. breakpoint = function (_name, _context) { if (!breakpoint.allow) { return ; } var expr, result, output; while ( true ) { expr = prompt( 'Debug into breakpoint "' + _name + '"' , '' ); if (!expr) { break ; } else { output = true ; try { result = result = _context(expr); } catch (e) { alert( '[!] caught exception with message "' + e.message + '"' ); output = false ; } if (output) { alert(result); } } } } breakpoint.allow = true ; * This source code was highlighted with Source Code Highlighter .
  4. breakpoint = function (_name, _context) { if (!breakpoint.allow) { return ; } var expr, result, output; while ( true ) { expr = prompt( 'Debug into breakpoint "' + _name + '"' , '' ); if (!expr) { break ; } else { output = true ; try { result = result = _context(expr); } catch (e) { alert( '[!] caught exception with message "' + e.message + '"' ); output = false ; } if (output) { alert(result); } } } } breakpoint.allow = true ; * This source code was highlighted with Source Code Highlighter .
  5. breakpoint = function (_name, _context) { if (!breakpoint.allow) { return ; } var expr, result, output; while ( true ) { expr = prompt( 'Debug into breakpoint "' + _name + '"' , '' ); if (!expr) { break ; } else { output = true ; try { result = result = _context(expr); } catch (e) { alert( '[!] caught exception with message "' + e.message + '"' ); output = false ; } if (output) { alert(result); } } } } breakpoint.allow = true ; * This source code was highlighted with Source Code Highlighter .
  6. breakpoint = function (_name, _context) { if (!breakpoint.allow) { return ; } var expr, result, output; while ( true ) { expr = prompt( 'Debug into breakpoint "' + _name + '"' , '' ); if (!expr) { break ; } else { output = true ; try { result = result = _context(expr); } catch (e) { alert( '[!] caught exception with message "' + e.message + '"' ); output = false ; } if (output) { alert(result); } } } } breakpoint.allow = true ; * This source code was highlighted with Source Code Highlighter .
  7. breakpoint = function (_name, _context) { if (!breakpoint.allow) { return ; } var expr, result, output; while ( true ) { expr = prompt( 'Debug into breakpoint "' + _name + '"' , '' ); if (!expr) { break ; } else { output = true ; try { result = result = _context(expr); } catch (e) { alert( '[!] caught exception with message "' + e.message + '"' ); output = false ; } if (output) { alert(result); } } } } breakpoint.allow = true ; * This source code was highlighted with Source Code Highlighter .
  8. breakpoint = function (_name, _context) { if (!breakpoint.allow) { return ; } var expr, result, output; while ( true ) { expr = prompt( 'Debug into breakpoint "' + _name + '"' , '' ); if (!expr) { break ; } else { output = true ; try { result = result = _context(expr); } catch (e) { alert( '[!] caught exception with message "' + e.message + '"' ); output = false ; } if (output) { alert(result); } } } } breakpoint.allow = true ; * This source code was highlighted with Source Code Highlighter .
  9. breakpoint = function (_name, _context) { if (!breakpoint.allow) { return ; } var expr, result, output; while ( true ) { expr = prompt( 'Debug into breakpoint "' + _name + '"' , '' ); if (!expr) { break ; } else { output = true ; try { result = result = _context(expr); } catch (e) { alert( '[!] caught exception with message "' + e.message + '"' ); output = false ; } if (output) { alert(result); } } } } breakpoint.allow = true ; * This source code was highlighted with Source Code Highlighter .
  10. breakpoint = function (_name, _context) { if (!breakpoint.allow) { return ; } var expr, result, output; while ( true ) { expr = prompt( 'Debug into breakpoint "' + _name + '"' , '' ); if (!expr) { break ; } else { output = true ; try { result = result = _context(expr); } catch (e) { alert( '[!] caught exception with message "' + e.message + '"' ); output = false ; } if (output) { alert(result); } } } } breakpoint.allow = true ; * This source code was highlighted with Source Code Highlighter .
  11. breakpoint = function (_name, _context) { if (!breakpoint.allow) { return ; } var expr, result, output; while ( true ) { expr = prompt( 'Debug into breakpoint "' + _name + '"' , '' ); if (!expr) { break ; } else { output = true ; try { result = result = _context(expr); } catch (e) { alert( '[!] caught exception with message "' + e.message + '"' ); output = false ; } if (output) { alert(result); } } } } breakpoint.allow = true ; * This source code was highlighted with Source Code Highlighter .
  12. breakpoint = function (_name, _context) { if (!breakpoint.allow) { return ; } var expr, result, output; while ( true ) { expr = prompt( 'Debug into breakpoint "' + _name + '"' , '' ); if (!expr) { break ; } else { output = true ; try { result = result = _context(expr); } catch (e) { alert( '[!] caught exception with message "' + e.message + '"' ); output = false ; } if (output) { alert(result); } } } } breakpoint.allow = true ; * This source code was highlighted with Source Code Highlighter .
  13. breakpoint = function (_name, _context) { if (!breakpoint.allow) { return ; } var expr, result, output; while ( true ) { expr = prompt( 'Debug into breakpoint "' + _name + '"' , '' ); if (!expr) { break ; } else { output = true ; try { result = result = _context(expr); } catch (e) { alert( '[!] caught exception with message "' + e.message + '"' ); output = false ; } if (output) { alert(result); } } } } breakpoint.allow = true ; * This source code was highlighted with Source Code Highlighter .
  14. breakpoint = function (_name, _context) { if (!breakpoint.allow) { return ; } var expr, result, output; while ( true ) { expr = prompt( 'Debug into breakpoint "' + _name + '"' , '' ); if (!expr) { break ; } else { output = true ; try { result = result = _context(expr); } catch (e) { alert( '[!] caught exception with message "' + e.message + '"' ); output = false ; } if (output) { alert(result); } } } } breakpoint.allow = true ; * This source code was highlighted with Source Code Highlighter .
  15. breakpoint = function (_name, _context) { if (!breakpoint.allow) { return ; } var expr, result, output; while ( true ) { expr = prompt( 'Debug into breakpoint "' + _name + '"' , '' ); if (!expr) { break ; } else { output = true ; try { result = result = _context(expr); } catch (e) { alert( '[!] caught exception with message "' + e.message + '"' ); output = false ; } if (output) { alert(result); } } } } breakpoint.allow = true ; * This source code was highlighted with Source Code Highlighter .
  16. breakpoint = function (_name, _context) { if (!breakpoint.allow) { return ; } var expr, result, output; while ( true ) { expr = prompt( 'Debug into breakpoint "' + _name + '"' , '' ); if (!expr) { break ; } else { output = true ; try { result = result = _context(expr); } catch (e) { alert( '[!] caught exception with message "' + e.message + '"' ); output = false ; } if (output) { alert(result); } } } } breakpoint.allow = true ; * This source code was highlighted with Source Code Highlighter .
  17. breakpoint = function (_name, _context) { if (!breakpoint.allow) { return ; } var expr, result, output; while ( true ) { expr = prompt( 'Debug into breakpoint "' + _name + '"' , '' ); if (!expr) { break ; } else { output = true ; try { result = result = _context(expr); } catch (e) { alert( '[!] caught exception with message "' + e.message + '"' ); output = false ; } if (output) { alert(result); } } } } breakpoint.allow = true ; * This source code was highlighted with Source Code Highlighter .
  18. breakpoint = function (_name, _context) { if (!breakpoint.allow) { return ; } var expr, result, output; while ( true ) { expr = prompt( 'Debug into breakpoint "' + _name + '"' , '' ); if (!expr) { break ; } else { output = true ; try { result = result = _context(expr); } catch (e) { alert( '[!] caught exception with message "' + e.message + '"' ); output = false ; } if (output) { alert(result); } } } } breakpoint.allow = true ; * This source code was highlighted with Source Code Highlighter .
  19. breakpoint = function (_name, _context) { if (!breakpoint.allow) { return ; } var expr, result, output; while ( true ) { expr = prompt( 'Debug into breakpoint "' + _name + '"' , '' ); if (!expr) { break ; } else { output = true ; try { result = result = _context(expr); } catch (e) { alert( '[!] caught exception with message "' + e.message + '"' ); output = false ; } if (output) { alert(result); } } } } breakpoint.allow = true ; * This source code was highlighted with Source Code Highlighter .
  20. breakpoint = function (_name, _context) { if (!breakpoint.allow) { return ; } var expr, result, output; while ( true ) { expr = prompt( 'Debug into breakpoint "' + _name + '"' , '' ); if (!expr) { break ; } else { output = true ; try { result = result = _context(expr); } catch (e) { alert( '[!] caught exception with message "' + e.message + '"' ); output = false ; } if (output) { alert(result); } } } } breakpoint.allow = true ; * This source code was highlighted with Source Code Highlighter .
  21. breakpoint = function (_name, _context) { if (!breakpoint.allow) { return ; } var expr, result, output; while ( true ) { expr = prompt( 'Debug into breakpoint "' + _name + '"' , '' ); if (!expr) { break ; } else { output = true ; try { result = result = _context(expr); } catch (e) { alert( '[!] caught exception with message "' + e.message + '"' ); output = false ; } if (output) { alert(result); } } } } breakpoint.allow = true ; * This source code was highlighted with Source Code Highlighter .
  22. breakpoint = function (_name, _context) { if (!breakpoint.allow) { return ; } var expr, result, output; while ( true ) { expr = prompt( 'Debug into breakpoint "' + _name + '"' , '' ); if (!expr) { break ; } else { output = true ; try { result = result = _context(expr); } catch (e) { alert( '[!] caught exception with message "' + e.message + '"' ); output = false ; } if (output) { alert(result); } } } } breakpoint.allow = true ; * This source code was highlighted with Source Code Highlighter .
  23. breakpoint = function (_name, _context) { if (!breakpoint.allow) { return ; } var expr, result, output; while ( true ) { expr = prompt( 'Debug into breakpoint "' + _name + '"' , '' ); if (!expr) { break ; } else { output = true ; try { result = result = _context(expr); } catch (e) { alert( '[!] caught exception with message "' + e.message + '"' ); output = false ; } if (output) { alert(result); } } } } breakpoint.allow = true ; * This source code was highlighted with Source Code Highlighter .
  24. breakpoint = function (_name, _context) { if (!breakpoint.allow) { return ; } var expr, result, output; while ( true ) { expr = prompt( 'Debug into breakpoint "' + _name + '"' , '' ); if (!expr) { break ; } else { output = true ; try { result = result = _context(expr); } catch (e) { alert( '[!] caught exception with message "' + e.message + '"' ); output = false ; } if (output) { alert(result); } } } } breakpoint.allow = true ; * This source code was highlighted with Source Code Highlighter .
  25. breakpoint = function (_name, _context) { if (!breakpoint.allow) { return ; } var expr, result, output; while ( true ) { expr = prompt( 'Debug into breakpoint "' + _name + '"' , '' ); if (!expr) { break ; } else { output = true ; try { result = result = _context(expr); } catch (e) { alert( '[!] caught exception with message "' + e.message + '"' ); output = false ; } if (output) { alert(result); } } } } breakpoint.allow = true ; * This source code was highlighted with Source Code Highlighter .
  26. breakpoint = function (_name, _context) { if (!breakpoint.allow) { return ; } var expr, result, output; while ( true ) { expr = prompt( 'Debug into breakpoint "' + _name + '"' , '' ); if (!expr) { break ; } else { output = true ; try { result = result = _context(expr); } catch (e) { alert( '[!] caught exception with message "' + e.message + '"' ); output = false ; } if (output) { alert(result); } } } } breakpoint.allow = true ; * This source code was highlighted with Source Code Highlighter .
  27. breakpoint = function (_name, _context) { if (!breakpoint.allow) { return ; } var expr, result, output; while ( true ) { expr = prompt( 'Debug into breakpoint "' + _name + '"' , '' ); if (!expr) { break ; } else { output = true ; try { result = result = _context(expr); } catch (e) { alert( '[!] caught exception with message "' + e.message + '"' ); output = false ; } if (output) { alert(result); } } } } breakpoint.allow = true ; * This source code was highlighted with Source Code Highlighter .
  28. breakpoint = function (_name, _context) { if (!breakpoint.allow) { return ; } var expr, result, output; while ( true ) { expr = prompt( 'Debug into breakpoint "' + _name + '"' , '' ); if (!expr) { break ; } else { output = true ; try { result = result = _context(expr); } catch (e) { alert( '[!] caught exception with message "' + e.message + '"' ); output = false ; } if (output) { alert(result); } } } } breakpoint.allow = true ; * This source code was highlighted with Source Code Highlighter .
  29. breakpoint = function (_name, _context) { if (!breakpoint.allow) { return ; } var expr, result, output; while ( true ) { expr = prompt( 'Debug into breakpoint "' + _name + '"' , '' ); if (!expr) { break ; } else { output = true ; try { result = result = _context(expr); } catch (e) { alert( '[!] caught exception with message "' + e.message + '"' ); output = false ; } if (output) { alert(result); } } } } breakpoint.allow = true ; * This source code was highlighted with Source Code Highlighter .
  30. breakpoint = function (_name, _context) { if (!breakpoint.allow) { return ; } var expr, result, output; while ( true ) { expr = prompt( 'Debug into breakpoint "' + _name + '"' , '' ); if (!expr) { break ; } else { output = true ; try { result = result = _context(expr); } catch (e) { alert( '[!] caught exception with message "' + e.message + '"' ); output = false ; } if (output) { alert(result); } } } } breakpoint.allow = true ; * This source code was highlighted with Source Code Highlighter .
  31. breakpoint = function (_name, _context) { if (!breakpoint.allow) { return ; } var expr, result, output; while ( true ) { expr = prompt( 'Debug into breakpoint "' + _name + '"' , '' ); if (!expr) { break ; } else { output = true ; try { result = result = _context(expr); } catch (e) { alert( '[!] caught exception with message "' + e.message + '"' ); output = false ; } if (output) { alert(result); } } } } breakpoint.allow = true ; * This source code was highlighted with Source Code Highlighter .
  32. breakpoint = function (_name, _context) { if (!breakpoint.allow) { return ; } var expr, result, output; while ( true ) { expr = prompt( 'Debug into breakpoint "' + _name + '"' , '' ); if (!expr) { break ; } else { output = true ; try { result = result = _context(expr); } catch (e) { alert( '[!] caught exception with message "' + e.message + '"' ); output = false ; } if (output) { alert(result); } } } } breakpoint.allow = true ; * This source code was highlighted with Source Code Highlighter .
  33. breakpoint = function (_name, _context) { if (!breakpoint.allow) { return ; } var expr, result, output; while ( true ) { expr = prompt( 'Debug into breakpoint "' + _name + '"' , '' ); if (!expr) { break ; } else { output = true ; try { result = result = _context(expr); } catch (e) { alert( '[!] caught exception with message "' + e.message + '"' ); output = false ; } if (output) { alert(result); } } } } breakpoint.allow = true ; * This source code was highlighted with Source Code Highlighter .
  34. breakpoint = function (_name, _context) { if (!breakpoint.allow) { return ; } var expr, result, output; while ( true ) { expr = prompt( 'Debug into breakpoint "' + _name + '"' , '' ); if (!expr) { break ; } else { output = true ; try { result = result = _context(expr); } catch (e) { alert( '[!] caught exception with message "' + e.message + '"' ); output = false ; } if (output) { alert(result); } } } } breakpoint.allow = true ; * This source code was highlighted with Source Code Highlighter .
breakpoint = function (_name, _context) { if (!breakpoint.allow) { return ; } var expr, result, output; while ( true ) { expr = prompt( 'Debug into breakpoint "' + _name + '"' , '' ); if (!expr) { break ; } else { output = true ; try { result = result = _context(expr); } catch (e) { alert( '[!] caught exception with message "' + e.message + '"' ); output = false ; } if (output) { alert(result); } } } } breakpoint.allow = true ; * This source code was highlighted with Source Code Highlighter .


Now, to put a breakpoint current, you need to write something like this:
')
  1. function f (_a, _b, _c)
  2. {
  3. var a = 10;
  4. var b = 20;
  5. var c = 30;
  6. breakpoint ( "breakpoint1" , function (_ $) { return eval (_ $);});
  7. }
  8. f (40, 50, 60);
* This source code was highlighted with Source Code Highlighter .


Pay attention to the function function (_ $) {return eval (_ $); } - so the context of the calling function is passed to the breakpoint. The name _ $ is used as a rarely encountered identifier.

This mechanism can be useful where there is no firebug or other normal debuggers, for example, in IA. Simple and tasteful. : ^)

I apologize if I wrote the dupe - for me it was a new approach.

UPD # 1 12/08/09

If you change the breakpoint code like this:

  1. debug = true ;
  2. breakpoint = '(new Breakpoint (\' anonymous \ ')). exec (function (_ $) {return eval (_ $);});' ;
  3. Breakpoint = function (_name)
  4. {
  5. this .name = _name? 'anonymous' : _name;
  6. this .allow = true ;
  7. }
  8. Breakpoint.prototype.exec = function (_context)
  9. {
  10. if (! (debug && this .allow))
  11. {
  12. return ;
  13. }
  14. ...
  15. }
* This source code was highlighted with Source Code Highlighter .


you can write like this:

  1. eval (breakpoint);
* This source code was highlighted with Source Code Highlighter .


Thanks asmolianinov for the idea (see comments).

Source: https://habr.com/ru/post/77183/


All Articles