SlideShare a Scribd company logo
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 & contributor
 Auto Logins
 XPage Multiple File Uploader
 XPage Debug Toolbar

 IBM Champion
 Bootstrap4XPages.com
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
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?
Java debugger
 In Designer since 8.5
 Debug:
 Java classes
 Managed beans
 OSGi plugins
 Compiled XPages Java (Local/xsp folder)
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
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
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
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
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…”
Starting a debug session - Java

Name for this configuration (can be any)

IP Address of your server

Port that the Debugger listens on
Starting a debug session - SSJS
 Demo
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
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 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
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.submitLatency = 600000;

//that’s 600 secs
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
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
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
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
 Or download directly from GitHub

 Features
 Log debug messages
 View contents of scopes
 Log file reader
 API Inspector
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 the default settings using
custom control properties
 collapseTo
 defaultCollapsed
 color
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
Scope contents
 Shows contents of
 applicationScope
 sessionScope
 viewScope

 requestScope

 Remove a variable
 Or clean an entire scope

 Modify values through the Inspector
Environment variables
 Information about the current:






User
Browser
Server
Database
Request

 Java heap size





Maximum heap size
Allocated
Used
Free
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
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> );
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();
Messages
 Add debug messages from Java:
DebugToolbar.get().info( “message” );
DebugToolbar.get().warn( “message” );

 Or catch an Exception
 DebugToolbar.get().error( e );
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
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
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
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
Thank you !
 Twitter: markleusink

 Skype: mark_leusink
 Blog: http://linqed.eu
 Email: m.leusink@linqed.eu
 http://www.bootstrap4xpages.com

More Related Content

PDF
Softwaretestingtoolsfreeandopensourcefinal 150411221750-conversion-gate01
Aravindharamanan S
 
PDF
Selenium Tutorial
prad_123
 
PPTX
Containerize your Blackbox tests
Kevin Beeman
 
PPT
Selenium ide material (1)
Sriram Angajala
 
DOCX
ID E's features
wajahat Gul
 
PPSX
Selenium Installation
ANKUR-BA
 
PPTX
Selenium - Installation
Rajesh-QA
 
PPTX
Database Management Assignment Help
Database Homework Help
 
Softwaretestingtoolsfreeandopensourcefinal 150411221750-conversion-gate01
Aravindharamanan S
 
Selenium Tutorial
prad_123
 
Containerize your Blackbox tests
Kevin Beeman
 
Selenium ide material (1)
Sriram Angajala
 
ID E's features
wajahat Gul
 
Selenium Installation
ANKUR-BA
 
Selenium - Installation
Rajesh-QA
 
Database Management Assignment Help
Database Homework Help
 

What's hot (20)

PDF
Selenium Handbook
Suresh Thammishetty
 
PDF
Unit-testing and E2E testing in JS
Michael Haberman
 
ODP
Integrating Selenium testing infrastructure into Scala Project
Knoldus Inc.
 
PPTX
Unit Testing Android Applications
Rody Middelkoop
 
ODT
Testing in-python-and-pytest-framework
Arulalan T
 
PPTX
SwtBot: Unit Testing Made Easy
Ankit Goel
 
PPT
Selenium training
Robin0590
 
PPTX
Selenium
nil65
 
PPT
Unit Testing in iOS
Long Weekend LLC
 
KEY
iOS Unit Testing
sgleadow
 
PDF
PVS-Studio Now Supports Any Build System under Windows and Any Compiler. Easy...
Andrey Karpov
 
PDF
Selenium - Introduction
Amr E. Mohamed
 
PPTX
Selenium Interview Questions & Answers
Techcanvass
 
PPTX
3 Ways to test your ColdFusion API - 2017 Adobe CF Summit
Ortus Solutions, Corp
 
PDF
Klement_0902_v2F (complete article)
Mike Friehauf
 
PPT
Automating UI testing
Adam Siton
 
PDF
We continue checking Microsoft projects: analysis of PowerShell
PVS-Studio
 
PPTX
#ATAGTR2021 Presentation - "Selenium 4 Observability – a 90 Min Hands on Lab"
Agile Testing Alliance
 
PDF
Functional Testing made easy with SWTBot for Developers and Testers
Aurélien Pupier
 
Selenium Handbook
Suresh Thammishetty
 
Unit-testing and E2E testing in JS
Michael Haberman
 
Integrating Selenium testing infrastructure into Scala Project
Knoldus Inc.
 
Unit Testing Android Applications
Rody Middelkoop
 
Testing in-python-and-pytest-framework
Arulalan T
 
SwtBot: Unit Testing Made Easy
Ankit Goel
 
Selenium training
Robin0590
 
Selenium
nil65
 
Unit Testing in iOS
Long Weekend LLC
 
iOS Unit Testing
sgleadow
 
PVS-Studio Now Supports Any Build System under Windows and Any Compiler. Easy...
Andrey Karpov
 
Selenium - Introduction
Amr E. Mohamed
 
Selenium Interview Questions & Answers
Techcanvass
 
3 Ways to test your ColdFusion API - 2017 Adobe CF Summit
Ortus Solutions, Corp
 
Klement_0902_v2F (complete article)
Mike Friehauf
 
Automating UI testing
Adam Siton
 
We continue checking Microsoft projects: analysis of PowerShell
PVS-Studio
 
#ATAGTR2021 Presentation - "Selenium 4 Observability – a 90 Min Hands on Lab"
Agile Testing Alliance
 
Functional Testing made easy with SWTBot for Developers and Testers
Aurélien Pupier
 
Ad

Similar to Stop (de)bugging me! (20)

PPT
.NET Debugging Tips and Techniques
Bala Subra
 
PPT
.Net Debugging Techniques
Bala Subra
 
PPT
Introduction to Software Development
Zeeshan MIrza
 
PPTX
Debugging in .Net
Muhammad Amir
 
ODP
Jbossworld Presentation
Dan Hinojosa
 
PPT
NewSeriesSlideShare
Sandeep Putrevu
 
PPT
myslide1
Sandeep Putrevu
 
PPT
myslide6
Sandeep Putrevu
 
PDF
Android Logging System
William Lee
 
PDF
Different Techniques Of Debugging Selenium Based Test Scripts.pdf
pCloudy
 
PPTX
C# Production Debugging Made Easy
Alon Fliess
 
PPTX
Siebel Open UI Debugging (Siebel Open UI Training, Part 7)
Tech OneStop
 
PPT
Whats New in MSBuild 3.5 and Team Build 2008
wbarthol
 
ODP
Plug yourself in and your app will never be the same (1 hr edition)
Mikkel Flindt Heisterberg
 
PPT
Newgenlib
Shiba Bhue
 
PPT
Newgenlib
Shiba Bhue
 
PPT
Install NewGenLib on Windows XP
Rupesh Kumar
 
PDF
Android develop guideline
Kan-Han (John) Lu
 
PPTX
Understanding IDEs
sunmitraeducation
 
PDF
Dsplab v1
wladimir1988
 
.NET Debugging Tips and Techniques
Bala Subra
 
.Net Debugging Techniques
Bala Subra
 
Introduction to Software Development
Zeeshan MIrza
 
Debugging in .Net
Muhammad Amir
 
Jbossworld Presentation
Dan Hinojosa
 
NewSeriesSlideShare
Sandeep Putrevu
 
myslide1
Sandeep Putrevu
 
myslide6
Sandeep Putrevu
 
Android Logging System
William Lee
 
Different Techniques Of Debugging Selenium Based Test Scripts.pdf
pCloudy
 
C# Production Debugging Made Easy
Alon Fliess
 
Siebel Open UI Debugging (Siebel Open UI Training, Part 7)
Tech OneStop
 
Whats New in MSBuild 3.5 and Team Build 2008
wbarthol
 
Plug yourself in and your app will never be the same (1 hr edition)
Mikkel Flindt Heisterberg
 
Newgenlib
Shiba Bhue
 
Newgenlib
Shiba Bhue
 
Install NewGenLib on Windows XP
Rupesh Kumar
 
Android develop guideline
Kan-Han (John) Lu
 
Understanding IDEs
sunmitraeducation
 
Dsplab v1
wladimir1988
 
Ad

More from Mark Leusink (12)

PDF
Now what can you really build with DQL and web components?
Mark Leusink
 
PDF
ICON UK 2016: Modernizing an IBM Notes applicaton using with AngularJS
Mark Leusink
 
PDF
Creating mobile apps - an introduction to Ionic (Engage 2016)
Mark Leusink
 
PDF
The future of web development write once, run everywhere with angular js an...
Mark Leusink
 
PDF
Escaping the yellow bubble - rewriting Domino using MongoDb and Angular
Mark Leusink
 
PDF
A 20 minute introduction to AngularJS for XPage developers
Mark Leusink
 
PPTX
Bootstrap4XPages webinar
Mark Leusink
 
PPTX
Get the best out of Bootstrap with Bootstrap4XPages - Engage 2014
Mark Leusink
 
ODP
Get the best out of Bootstrap with Bootstrap4XPages (AD202)
Mark Leusink
 
PDF
Bootstrap and XPages (DanNotes 2013)
Mark Leusink
 
PPTX
Introduction to Bootstrap (with XPages)
Mark Leusink
 
PPTX
Stop (de)bugging me - ICON UK 2013
Mark Leusink
 
Now what can you really build with DQL and web components?
Mark Leusink
 
ICON UK 2016: Modernizing an IBM Notes applicaton using with AngularJS
Mark Leusink
 
Creating mobile apps - an introduction to Ionic (Engage 2016)
Mark Leusink
 
The future of web development write once, run everywhere with angular js an...
Mark Leusink
 
Escaping the yellow bubble - rewriting Domino using MongoDb and Angular
Mark Leusink
 
A 20 minute introduction to AngularJS for XPage developers
Mark Leusink
 
Bootstrap4XPages webinar
Mark Leusink
 
Get the best out of Bootstrap with Bootstrap4XPages - Engage 2014
Mark Leusink
 
Get the best out of Bootstrap with Bootstrap4XPages (AD202)
Mark Leusink
 
Bootstrap and XPages (DanNotes 2013)
Mark Leusink
 
Introduction to Bootstrap (with XPages)
Mark Leusink
 
Stop (de)bugging me - ICON UK 2013
Mark Leusink
 

Recently uploaded (20)

PDF
How Onsite IT Support Drives Business Efficiency, Security, and Growth.pdf
Captain IT
 
PPTX
How to Build a Scalable Micro-Investing Platform in 2025 - A Founder’s Guide ...
Third Rock Techkno
 
PPTX
The Power of IoT Sensor Integration in Smart Infrastructure and Automation.pptx
Rejig Digital
 
PDF
REPORT: Heating appliances market in Poland 2024
SPIUG
 
PDF
Building High-Performance Oracle Teams: Strategic Staffing for Database Manag...
SMACT Works
 
PDF
AI Unleashed - Shaping the Future -Starting Today - AIOUG Yatra 2025 - For Co...
Sandesh Rao
 
PDF
DevOps & Developer Experience Summer BBQ
AUGNYC
 
PDF
Make GenAI investments go further with the Dell AI Factory - Infographic
Principled Technologies
 
PDF
Event Presentation Google Cloud Next Extended 2025
minhtrietgect
 
PDF
Google’s NotebookLM Unveils Video Overviews
SOFTTECHHUB
 
PDF
NewMind AI Monthly Chronicles - July 2025
NewMind AI
 
PDF
CIFDAQ's Token Spotlight: SKY - A Forgotten Giant's Comeback?
CIFDAQ
 
PDF
Using Anchore and DefectDojo to Stand Up Your DevSecOps Function
Anchore
 
PDF
Cloud-Migration-Best-Practices-A-Practical-Guide-to-AWS-Azure-and-Google-Clou...
Artjoker Software Development Company
 
PPTX
PA Analog/Digital System: The Backbone of Modern Surveillance and Communication
AVTRON Technologies LLC
 
PDF
BLW VOCATIONAL TRAINING SUMMER INTERNSHIP REPORT
codernjn73
 
PDF
Why Your AI & Cybersecurity Hiring Still Misses the Mark in 2025
Virtual Employee Pvt. Ltd.
 
PDF
madgavkar20181017ppt McKinsey Presentation.pdf
georgschmitzdoerner
 
PDF
Orbitly Pitch Deck|A Mission-Driven Platform for Side Project Collaboration (...
zz41354899
 
PDF
Unlocking the Future- AI Agents Meet Oracle Database 23ai - AIOUG Yatra 2025.pdf
Sandesh Rao
 
How Onsite IT Support Drives Business Efficiency, Security, and Growth.pdf
Captain IT
 
How to Build a Scalable Micro-Investing Platform in 2025 - A Founder’s Guide ...
Third Rock Techkno
 
The Power of IoT Sensor Integration in Smart Infrastructure and Automation.pptx
Rejig Digital
 
REPORT: Heating appliances market in Poland 2024
SPIUG
 
Building High-Performance Oracle Teams: Strategic Staffing for Database Manag...
SMACT Works
 
AI Unleashed - Shaping the Future -Starting Today - AIOUG Yatra 2025 - For Co...
Sandesh Rao
 
DevOps & Developer Experience Summer BBQ
AUGNYC
 
Make GenAI investments go further with the Dell AI Factory - Infographic
Principled Technologies
 
Event Presentation Google Cloud Next Extended 2025
minhtrietgect
 
Google’s NotebookLM Unveils Video Overviews
SOFTTECHHUB
 
NewMind AI Monthly Chronicles - July 2025
NewMind AI
 
CIFDAQ's Token Spotlight: SKY - A Forgotten Giant's Comeback?
CIFDAQ
 
Using Anchore and DefectDojo to Stand Up Your DevSecOps Function
Anchore
 
Cloud-Migration-Best-Practices-A-Practical-Guide-to-AWS-Azure-and-Google-Clou...
Artjoker Software Development Company
 
PA Analog/Digital System: The Backbone of Modern Surveillance and Communication
AVTRON Technologies LLC
 
BLW VOCATIONAL TRAINING SUMMER INTERNSHIP REPORT
codernjn73
 
Why Your AI & Cybersecurity Hiring Still Misses the Mark in 2025
Virtual Employee Pvt. Ltd.
 
madgavkar20181017ppt McKinsey Presentation.pdf
georgschmitzdoerner
 
Orbitly Pitch Deck|A Mission-Driven Platform for Side Project Collaboration (...
zz41354899
 
Unlocking the Future- AI Agents Meet Oracle Database 23ai - AIOUG Yatra 2025.pdf
Sandesh Rao
 

Stop (de)bugging me!

  • 2. Disclaimer This session is only for people that make errors. All others can leave.
  • 3. Agenda  Debuggers in Designer  Java debugger  SSJS debugger  XPage Debug Toolbar
  • 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. 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. 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. Java debugger  In Designer since 8.5  Debug:  Java classes  Managed beans  OSGi plugins  Compiled XPages Java (Local/xsp folder)
  • 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. 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. 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. 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. 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. Starting a debug session - Java Name for this configuration (can be any) IP Address of your server Port that the Debugger listens on
  • 14. Starting a debug session - SSJS
  • 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
  • 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. Conditional breakpoints  Set breakpoint  Right-click on breakpoint  Click “Breakpoint properties”
  • 20. Partial refresh timeouts  When you’re debugging your page may say:  Increase timeout using JavaScript: XSP.submitLatency = 600000; //that’s 600 secs
  • 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. 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. 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. Disconnect  When you’re done: disconnect your debugging session  Java debugger  SSJS debugger
  • 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. Installation  2 ways to install:  Download from OpenNTF, copy to your application  Use the OpenNTF Import/ export tool
  • 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. 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. Scope contents  Shows contents of  applicationScope  sessionScope  viewScope  requestScope  Remove a variable  Or clean an entire scope  Modify values through the Inspector
  • 31. Environment variables  Information about the current:      User Browser Server Database Request  Java heap size     Maximum heap size Allocated Used Free
  • 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. 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. 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. Messages  Add debug messages from Java: DebugToolbar.get().info( “message” ); DebugToolbar.get().warn( “message” );  Or catch an Exception  DebugToolbar.get().error( e );
  • 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. 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. 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. 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. Thank you !  Twitter: markleusink  Skype: mark_leusink  Blog: http://linqed.eu  Email: [email protected]  http://www.bootstrap4xpages.com