Stop (de)bugging me - ICON UK 2013

1,089 views
946 views

Published on

Slides for the presentation I did at ICON UK 2013, Brighton on Tuesday, September 3 2013

Published in: Technology
0 Comments
0 Likes
Statistics
Notes
  • Be the first to comment

  • Be the first to like this

No Downloads
Views
Total views
1,089
On SlideShare
0
From Embeds
0
Number of Embeds
1
Actions
Shares
0
Downloads
13
Comments
0
Likes
0
Embeds 0
No embeds

No notes for slide

Stop (de)bugging me - ICON UK 2013

  1. 1. UKLUG 2012 – Cardiff, Wales Stop (de)bugging me!
  2. 2. UKLUG 2012 – Cardiff, Wales Disclaimer This session is only for people that make errors. All others can leave. Suggestions: • Re-inventing your ideas (room 3) • The DevAdmin Chimera (room 2)
  3. 3. UKLUG 2012 – Cardiff, Wales Agenda • Debuggers in Designer • Java debugger • SSJS debugger • XPage Debug Toolbar ™
  4. 4. UKLUG 2012 – Cardiff, Wales Who’s that guy anyway? • Freelance consultant/ developer • IBM Notes/ Domino • XPages, web, client, mobile, Unplugged • OpenNTF Contributor • Auto Logins • XPage Multiple File Uploader • XPage Debug Toolbar • IBM Champion • XPages4Bootstrap.com
  5. 5. UKLUG 2012 – Cardiff, Wales Debugging in Designer • For Java & SSJS (as of Designer 9) • Based on standards • Java Platform Debugger Architecture (JPDA) • ‘Remote’ debugging • Enable on server • IDE (Designer/ Eclipse) connects to Server on specified port
  6. 6. UKLUG 2012 – Cardiff, Wales Debugging in Designer • Not recommended for productions servers • Impacts performance & security • Only 1 developer can connect at a time • … but that’s not a problem • … since we don’t debug applications on production servers Right?
  7. 7. UKLUG 2012 – Cardiff, Wales Java debugger • In Designer since 8.5 • Debug: • Java classes • Managed beans • OSGi plugins • Compiled XPages Java (Local/xsp folder)
  8. 8. UKLUG 2012 – Cardiff, Wales Server Side JavaScript debugger • New in Domino 9 • Configured and works (almost) the same as the Java debugger • Debug SSJS in • XPages • Custom controls • SSJS libraries
  9. 9. UKLUG 2012 – Cardiff, Wales Activating the debuggers - server • Add configuration to notes.ini: JavaEnableDebug=1 JavascriptEnableDebug=1 JavaDebugOptions=transport=dt_socket,server=y,suspend=n,address=8000 • Tip: if you click on the “Debug” icon in the toolbar, you can copy-paste these settings from there Add this row only if you want to debug SSJS (too)
  10. 10. UKLUG 2012 – Cardiff, Wales Activating the debuggers - server • Restart the server • Watch for this: • Port needs to be open(ed) in the firewall • Works with local HTTP preview too • Tip: If the local preview won’t start, try starting the local HTTP task from a command prompt • Run “nhttp preview” from your Notes folder
  11. 11. UKLUG 2012 – Cardiff, Wales Activating the debugger - code • Set breakpoints • Right-click in gutter • Add ‘debugger’ statement (SSJS) • Don’t use this in Designer < 9 ! • Stop at first line of JavaScript code
  12. 12. UKLUG 2012 – Cardiff, Wales Starting a debug session • Click the triangle next to the “bug” icon (this is Designer 9, icon looks slightly different in 8.5) • Select an existing configuration or click “Manage…”
  13. 13. UKLUG 2012 – Cardiff, Wales Starting a debug session - Java IP Address of your server Port that the Debugger listens on Name for this configuration (can be any)
  14. 14. UKLUG 2012 – Cardiff, Wales Starting a debug session - SSJS
  15. 15. UKLUG 2012 – Cardiff, Wales • Demo
  16. 16. UKLUG 2012 – Cardiff, Wales Debug perspective • Designer automatically asks to open Debug perspective when it suspends • Breakpoint or ‘debugger’ statement in SSJS • Change behaviour in Preferences > Run/Debug > Perspectives • Tip: switch perspectives using Ctrl-F8 in Designer
  17. 17. UKLUG 2012 – Cardiff, Wales Source not found?
  18. 18. UKLUG 2012 – Cardiff, Wales Keyboard shortcuts • F5 Step into • F6 Step over • F7 Step exit • F8 Continue • Strange issue with the F6 key • With the default Designer/ Eclipse binding it doesn’t work • If you create your own binding to F6 it does • Do this in File > Preferences > Type “keys” in filter F5 F6 F7F8
  19. 19. UKLUG 2012 – Cardiff, Wales Conditional breakpoints • Set breakpoint • Right-click on breakpoint • Click “Breakpoint properties”
  20. 20. UKLUG 2012 – Cardiff, Wales Display view • Window > Show Eclipse View > Display • Run an expression in the context of a breakpoint and view the result • Only works with Java debugger • With code completion
  21. 21. UKLUG 2012 – Cardiff, Wales Expressions view • Window > Show Eclipse View > Expressions • Inspect the current state of objects • 2 ways to add: • Right-click on expression in ‘Display’ view • Type in manually
  22. 22. UKLUG 2012 – Cardiff, Wales From SSJS to Java • You can debug Java code when you’re debugging SSJS code • But NOT using “Step into” (F5): • It will only stop on breakpoints in the Java class
  23. 23. UKLUG 2012 – Cardiff, Wales Disconnect • When you’re done: disconnect your debugging session • Java debugger • SSJS debugger
  24. 24. UKLUG 2012 – Cardiff, Wales XPage Debug Toolbar
  25. 25. UKLUG 2012 – Cardiff, Wales Background/ features • Tool for XPage developers • Free download from OpenNTF • Or directly from GitHub • Features: • Log debug messages • View contents of scopes • Log file reader • API Inspector
  26. 26. UKLUG 2012 – Cardiff, Wales Installation • 2 ways to install: • Download from OpenNTF and copy to your application • Use the OpenNTF Import/ export tool
  27. 27. UKLUG 2012 – Cardiff, Wales Installation • Add the ccDebugToolbar custom control to your XPage • Add the (dBar) managed bean • (optionally) Change the default settings using custom control properties • collapseTo • defaultCollapsed • color
  28. 28. UKLUG 2012 – Cardiff, Wales Components ccDebugToolbar Custom control xpDebugToolbar SSJS library eu.linqed.debugtoolbar.DebugToolbar Java class eu.linqed.debugtoolbar.Message Java class debugToolbarConsole XPage optional debugToolbarErrorPage XPage optional dBar Managed bean Events View OpenLog integration Event Form OpenLog integration
  29. 29. UKLUG 2012 – Cardiff, Wales Scope contents • Shows contents of • applicationScope • sessionScope • viewScope • requestScope • Remove a variable • Or clean an entire scope • Modify values through the Inspector
  30. 30. UKLUG 2012 – Cardiff, Wales Environment variables • Information about the current: • User • Browser • Server • Database • Request • Java heap size • Maximum heap size • Allocated • Used • Free
  31. 31. UKLUG 2012 – Cardiff, Wales Inspector • View classes for controls on the current page • And change them • View any variable: • Scoped variables • Managed beans • Any XPage runtime object • Drill-down to see what value/ object is returned
  32. 32. UKLUG 2012 – Cardiff, Wales Messages • Alternative to print() or _dump() functions • No server console access needed • Your messages only • Makes your admin happy  • Add messages using: dBar.debug( “message” ); dBar.info( “message”); dBar.warn( “message” ); dBar.error( “message” ); dBar.dump( <object> );
  33. 33. UKLUG 2012 – Cardiff, Wales Messages • Specify a context: dBar.info( “message”, “context” ); • dBar.error() function accepts ‘error’ objects: try { var doc:NotesDocument = null; var id = doc.getUniversalID(); } catch (e) { dBar.error(e); } • Add a divider to the messages list: dBar.addDivider();
  34. 34. UKLUG 2012 – Cardiff, Wales Messages • Add debug messages from Java: DebugToolbar.get().info( “message” ); DebugToolbar.get().warn( “message” ); • Or catch an Exception • DebugToolbar.get().error( e );
  35. 35. UKLUG 2012 – Cardiff, Wales Log messages to documents • Create documents for all dBar calls • All required code already built-in • Uses the OpenLog (form/fields) format • Use the OpenLog database to view them • Log level can be set: log only messages with a certain log level (or ‘higher’) • warn = warn + error • debug = debug + info + warn + error
  36. 36. UKLUG 2012 – Cardiff, Wales Log messages to documents • Configure using managed properties • logDbPath current, logdb.nsf • logEnabled true, false • logLevel debug, info, warn, error • Logging will continue even if the toolbar isn’t displayed
  37. 37. UKLUG 2012 – Cardiff, Wales Best practices • Add [debug] role to the ACL • Set loaded property of the ccDebugToolbar only for [debug] role: loaded=“#,javascript:context.getUser().getRoles().contains(‘*debug’+-” • Enable logging to documents (errors/ warnings only) logLevel = “warn” • No design changes needed when moving to production
  38. 38. UKLUG 2012 – Cardiff, Wales Resources • XPage Debug Toolbar on OpenNTF & GitHub http://www.openntf.org/internal/home.nsf/project.xsp?action=ope nDocument&name=XPage%20Debug%20Toolbar https://github.com/markleusink/XpageDebugToolbar • OpenNTF Import/ export tool http://www.openntf.org/internal/home.nsf/project.xsp?action=ope nDocument&name=Import%20and%20Export%20for%20Designer • Xpages OpenLog Logger http://www.openntf.org/internal/home.nsf/project.xsp?action=ope nDocument&name=XPages%20OpenLog%20Logger • OpenLog http://www.openntf.org/internal/home.nsf/project.xsp?action=ope nDocument&name=OpenLog
  39. 39. UKLUG 2012 – Cardiff, Wales Thank you ! • Twitter: markleusink • Skype: mark_leusink • Blog: http://linqed.eu • Email: m.leusink@linqed.eu • http://www.bootstrap4xpages.com

×