0
STOP (DE)BUGGING ME!
Disclaimer
This session is only for people that
make errors.
All others can leave.
Agenda
 Debuggers in Designer
 Java debugger
 SSJS debugger

 XPage Debug Toolbar
Who’s that?
 Freelance consultant/ developer
 IBM Notes/ Domino
 XPages, web, client, mobile

 OpenNTF Board member & ...
Debugging in Designer
 For Java & SSJS (as of Designer 9)

 Based on standards
 Java Platform Debugger Architecture (JP...
Debugging in Designer
 Not recommended for productions servers
 Impacts performance & security
 Only 1 developer can co...
Java debugger
 In Designer since 8.5
 Debug:
 Java classes
 Managed beans
 OSGi plugins
 Compiled XPages Java (Local...
Server Side JavaScript debugger
 New in Domino 9
 Configured and works (almost) the same as

the Java debugger
 Debug S...
Activating the debuggers - server
 Add configuration to notes.ini:
Add this row only if you
want to debug SSJS too

JavaE...
Activating the debuggers - server
 Restart the server
 Watch for this:

 Port needs to be open(ed) in the firewall
 Wo...
Activating the debugger - code
 Set breakpoints
 Right-click in gutter

 Add ‘debugger’ statement (SSJS)
 Don’t use th...
Starting a debug session
 Click the triangle next to the “bug” icon

(this is Designer 9, icon looks slightly different i...
Starting a debug session - Java

Name for this configuration (can be any)

IP Address of your server

Port that the Debugg...
Starting a debug session - SSJS
 Demo
Debug perspective
 Designer automatically asks to open Debug perspective when

it suspends
 Breakpoint or ‘debugger’ sta...
Source not found?
Keyboard shortcuts





F5
F6
F7
F8

Step into
Step over
Step exit
Continue

F8

F5 F6 F7

 Strange issue with the F6...
Conditional breakpoints
 Set breakpoint

 Right-click on breakpoint
 Click “Breakpoint properties”
Partial refresh timeouts
 When you’re debugging your page may say:

 Increase timeout using JavaScript:
XSP.submitLatenc...
Display view
 Window > Show Eclipse View > Display

 Run an expression in the context of a breakpoint
and view the resul...
Expressions view
 Window > Show Eclipse View > Expressions

 Inspect the current state of objects
 2 ways to add:
 Rig...
From SSJS to Java
 You can debug Java code when you’re

debugging SSJS code
 But NOT using “Step into” (F5)
 It will on...
Disconnect
 When you’re done: disconnect your debugging

session
 Java debugger

 SSJS debugger
XPage Debug Toolbar
Background/ features
 Debug tool for XPage developers

 Free download from OpenNTF
 Part of OpenNTF Essentials Toolkit
...
Installation
 2 ways to install:
 Download from OpenNTF, copy to your application
 Use the OpenNTF Import/ export tool
Installation
 Add the ccDebugToolbar custom control to

your XPage
 Add the (dBar) managed bean
 (optionally) Change th...
Components
ccDebugToolbar

Custom control

xpDebugToolbar

SSJS library

eu.linqed.debugtoolbar.DebugToolbar

Java class

...
Scope contents
 Shows contents of
 applicationScope
 sessionScope
 viewScope

 requestScope

 Remove a variable
 Or...
Environment variables
 Information about the current:






User
Browser
Server
Database
Request

 Java heap size
...
Inspector
 View classes for controls on the current page
 And change them

 View any variable:
 Scoped variables

 Ma...
Messages
 Alternative to print() or _dump() functions
 No server console access needed
 Your messages only
 Makes your...
Messages
 Specify a context: dBar.info( “message”, “context” );
 dBar.error() function accepts ‘error’ objects:
try {

v...
Messages
 Add debug messages from Java:
DebugToolbar.get().info( “message” );
DebugToolbar.get().warn( “message” );

 Or...
Log messages to documents
 Create log documents for all dBar calls

 All required code built-in
 Uses the OpenLog (form...
Log messages to documents
 Configure using managed properties
 logDbPath
 logEnabled
 logLevel

current, logdb.nsf
tru...
Best practices
 Add [debug] role to the ACL
 Set loaded property of the ccDebugToolbar only for

[debug] role:
loaded=“#...
Resources
 XPage Debug Toolbar on OpenNTF & GitHub


http://www.openntf.org/internal/home.nsf/project.xsp?action=openDoc...
Thank you !
 Twitter: markleusink

 Skype: mark_leusink
 Blog: http://linqed.eu
 Email: m.leusink@linqed.eu
 http://w...
Upcoming SlideShare
Loading in...5
×

Stop (de)bugging me!

2,636

Published on

Slides for my session at DanNotes and BLUG 2013 about the (SSJS & Java) debuggers in Designer 9 and the XPage Debug Toolbar.

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
2,636
On Slideshare
0
From Embeds
0
Number of Embeds
5
Actions
Shares
0
Downloads
31
Comments
0
Likes
0
Embeds 0
No embeds

No notes for slide

Transcript of "Stop (de)bugging me!"

  1. 1. STOP (DE)BUGGING ME!
  2. 2. Disclaimer This session is only for people that make errors. All others can leave.
  3. 3. Agenda  Debuggers in Designer  Java debugger  SSJS debugger  XPage Debug Toolbar
  4. 4. Who’s that?  Freelance consultant/ developer  IBM Notes/ Domino  XPages, web, client, mobile  OpenNTF Board member & contributor  Auto Logins  XPage Multiple File Uploader  XPage Debug Toolbar  IBM Champion  Bootstrap4XPages.com
  5. 5. 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. 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. Java debugger  In Designer since 8.5  Debug:  Java classes  Managed beans  OSGi plugins  Compiled XPages Java (Local/xsp folder)
  8. 8. 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. Activating the debuggers - server  Add configuration to notes.ini: Add this row only if you want to debug SSJS too 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
  10. 10. 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. 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. 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. Starting a debug session - Java Name for this configuration (can be any) IP Address of your server Port that the Debugger listens on
  14. 14. Starting a debug session - SSJS
  15. 15.  Demo
  16. 16. 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. Source not found?
  18. 18. Keyboard shortcuts     F5 F6 F7 F8 Step into Step over Step exit Continue F8 F5 F6 F7  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
  19. 19. Conditional breakpoints  Set breakpoint  Right-click on breakpoint  Click “Breakpoint properties”
  20. 20. Partial refresh timeouts  When you’re debugging your page may say:  Increase timeout using JavaScript: XSP.submitLatency = 600000; //that’s 600 secs
  21. 21. 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
  22. 22. 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
  23. 23. 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
  24. 24. Disconnect  When you’re done: disconnect your debugging session  Java debugger  SSJS debugger
  25. 25. XPage Debug Toolbar
  26. 26. Background/ features  Debug tool for XPage developers  Free download from OpenNTF  Part of OpenNTF Essentials Toolkit  Or download directly from GitHub  Features  Log debug messages  View contents of scopes  Log file reader  API Inspector
  27. 27. Installation  2 ways to install:  Download from OpenNTF, copy to your application  Use the OpenNTF Import/ export tool
  28. 28. 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
  29. 29. 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
  30. 30. Scope contents  Shows contents of  applicationScope  sessionScope  viewScope  requestScope  Remove a variable  Or clean an entire scope  Modify values through the Inspector
  31. 31. Environment variables  Information about the current:      User Browser Server Database Request  Java heap size     Maximum heap size Allocated Used Free
  32. 32. 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
  33. 33. 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> );
  34. 34. 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();
  35. 35. Messages  Add debug messages from Java: DebugToolbar.get().info( “message” ); DebugToolbar.get().warn( “message” );  Or catch an Exception  DebugToolbar.get().error( e );
  36. 36. Log messages to documents  Create log documents for all dBar calls  All required code 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
  37. 37. Log messages to documents  Configure using managed properties  logDbPath  logEnabled  logLevel current, logdb.nsf true, false debug, info, warn, error  Logging will continue even if the toolbar isn’t displayed
  38. 38. 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
  39. 39. Resources  XPage Debug Toolbar on OpenNTF & GitHub  http://www.openntf.org/internal/home.nsf/project.xsp?action=openDocume nt&name=XPage%20Debug%20Toolbar  https://github.com/markleusink/XpageDebugToolbar  OpenNTF Essentials  http://essentials.openntf.org  OpenNTF Import/ export tool  http://www.openntf.org/internal/home.nsf/project.xsp?action=openDocume nt&name=Import%20and%20Export%20for%20Designer  XPages OpenLog Logger  http://www.openntf.org/internal/home.nsf/project.xsp?action=openDocume nt&name=XPages%20OpenLog%20Logger  OpenLog  http://www.openntf.org/internal/home.nsf/project.xsp?action=openDocume nt&name=OpenLog
  40. 40. Thank you !  Twitter: markleusink  Skype: mark_leusink  Blog: http://linqed.eu  Email: m.leusink@linqed.eu  http://www.bootstrap4xpages.com
  1. A particular slide catching your eye?

    Clipping is a handy way to collect important slides you want to go back to later.

×