Troubleshooting skills - what do we have at our disposal?

Hi All
While learning ignition i am trying to improve my troubleshooting skills when things don’t work as intended. At the moment i would use the following tools:

  1. Messageboxes - helpful but far from ideal as they can brake the flow of the logic. Also easy to forget to remove when they are not needed.

  2. Designer preview - very helpful to preview the values of the variables but designer does not load all components the same as the Client. Also designer is limited to previewing 1 screen only

  3. Logging values using designer and print command which will show the values in the console

  4. Using diagnostic tags to captue the values of the tags

  5. Devtools for opening gateway page and checking network communication

Questions:

  1. Do you have any other preferred tools for troubleshooting ?

  2. In general why ignition cannot provide at least similar environment as visual studio for monitoring variables etc. - is it hugely complicated or rather impossible task due to the fact that there are so many different components and jython, internal language combination used? Also the code in ignition is interpreted rather than compiled.

In Wincc there was visual basic script debugger which was giving useful preview of the call-up path with the last values on each function. Is this function not possible in Ignition due to the fact that Ignition does not use ADSI microsoft data model? sorry if i wrote any nonsense here :slight_smile:

  1. Can i log “print” commands while operating Client to the wrapper file?

This is generally how I do it. For question 3, you can open a Vision client’s console with ctrl+shift+F7 or from the menu to see print statements.

2 Likes

thanks a lot - i just tried it and it works :slight_smile:

1 Like

I think you’ve missed a few

  1. Ignition Users Manual
  2. Designer’s Script Console
  3. Database Query Browser
  4. You can use system.util.getLogger() to log messages to the gateway logs.
logger = system.util.getLogger('YourLoggersName')
logger.info('Your Message Here')
  1. For Perspective your browsers Dev Tools (e.g.in Chrome press F12)
  2. For perspective system.perspective.print()
  3. These forums ( I mean just do a search for @pturmel or @JordanCClark you’ll learn all kinds of cool tricks)
  4. Your flavor of DB’s management software (MSSQL’s SSMS for example)
  5. PLC Emulation software or access to offline (or online if you dare) PLC programs
  6. Google

Any number of other resources like PyCharm (or other IDE’s), W3Schools for things like html and CSS.

Even if you had, you would be in good company. :grinning_face_with_smiling_eyes:

3 Likes

I use this a lot while developing.

@thecesrom has made some modules/packages that you can add to an IDE to get code completion for Ignition scripts (system.*, stuff in particular)

EDIT: Forgot to link to Cesar’s git page. Link added.

4 Likes

Thanks for great list. I am just downloading pycharm to have a look.
I am impressed by @pturmel and @JordanCClark knowledge and that they find time to answer all these strange questions :slight_smile:

Loggers, loggers, and more loggers. Preferably set to debug level instead of deleted when no longer immediately needed.

Multiple monitors! When working on gateway scripts, I keep a tail following the wrapper log on another monitor.

4 Likes

Learn what certain error messages mean. For example, what does a SyntaxError (you probably miscounted whitespace), an AttributeError (you tried myComponent.nonExistantPropertyOrFunction), a KeyError (you tried myDictionary['nonExistantKey']), etc.

Given the close interaction between databases and most Ignition programs, it’s also beneficial to also learn what errors from the database mean(and know that they come in as a java.lang.Exception instead of python errors), like a constraint violation etc.

I know this isn’t really a “tool” in the way you are asking, but it’s an invaluable skill in debugging to know what errors typically mean.

4 Likes

thanks for very useful comments