# Troubleshooting skills - what do we have at our disposal?

**URL:** <https://forum.inductiveautomation.com/t/troubleshooting-skills-what-do-we-have-at-our-disposal/51854>\
**Category:** Ignition\
**Created:** [October 12, 2021, 11:13am UTC](https://forum.inductiveautomation.com/t/troubleshooting-skills-what-do-we-have-at-our-disposal/51854 "2021-10-12T11:13:29Z")\
**Posts on this page:** 9\
**Page:** 1

<div class="post-metadata">

**Author:** ![hewking32](https://avatars.discourse-cdn.com/v4/letter/h/b5ac83/32.png) [@hewking32](https://forum.inductiveautomation.com/u/hewking32)\
**Post date:** [October 12, 2021, 11:13am UTC](https://forum.inductiveautomation.com/t/troubleshooting-skills-what-do-we-have-at-our-disposal/51854/1 "2021-10-12T11:13:29Z")

</div>

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 🙂

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

---

<div class="post-metadata">

**Author:** ![rbabcock](https://sea1.discourse-cdn.com/inductiveautomation/user_avatar/forum.inductiveautomation.com/rbabcock/32/13425_2.png) [@rbabcock](https://forum.inductiveautomation.com/u/rbabcock)\
**Post date:** [October 12, 2021, 11:20am UTC](https://forum.inductiveautomation.com/t/troubleshooting-skills-what-do-we-have-at-our-disposal/51854/2 "2021-10-12T11:20:29Z")

</div>

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.

---

<div class="post-metadata">

**Author:** ![hewking32](https://avatars.discourse-cdn.com/v4/letter/h/b5ac83/32.png) [@hewking32](https://forum.inductiveautomation.com/u/hewking32)\
**Post date:** [October 12, 2021, 11:28am UTC](https://forum.inductiveautomation.com/t/troubleshooting-skills-what-do-we-have-at-our-disposal/51854/3 "2021-10-12T11:28:15Z")

</div>

thanks a lot - i just tried it and it works 🙂

---

<div class="post-metadata">

**Author:** ![lrose](https://sea1.discourse-cdn.com/inductiveautomation/user_avatar/forum.inductiveautomation.com/lrose/32/62724_2.png) [@lrose](https://forum.inductiveautomation.com/u/lrose)\
**Post date:** [October 12, 2021, 11:40am UTC](https://forum.inductiveautomation.com/t/troubleshooting-skills-what-do-we-have-at-our-disposal/51854/4 "2021-10-12T11:40:03Z")

</div>

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.

```auto
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.

> [@hewking32](#):
>
> sorry if i wrote any nonsense here

Even if you had, you would be in good company. 😄

---

<div class="post-metadata">

**Author:** ![JordanCClark](https://sea1.discourse-cdn.com/inductiveautomation/user_avatar/forum.inductiveautomation.com/jordancclark/32/83362_2.png) [@JordanCClark](https://forum.inductiveautomation.com/u/JordanCClark)\
**Post date:** [October 12, 2021, 11:52am UTC](https://forum.inductiveautomation.com/t/troubleshooting-skills-what-do-we-have-at-our-disposal/51854/5 "2021-10-12T11:52:23Z")

</div>

I use this a lot while developing.

> [@View Dataset from script console](https://forum.inductiveautomation.com/t/view-dataset-from-script-console/36704/4):
>
> Sorry, I'm on vacation, but family is napping, so I get to play. Yes, this is how I relax. Don't judge. EDIT: Added option for printing from Perspective. Sorry, not quite ready for prime time. roll_eyes def printDataSet(datasetIn): from itertools import izip import ast if 'PropertyTreeScriptWrapper$ArrayWrapper' in str(type(datasetIn)): headers = datasetIn[0].keys() data = [] for row in datasetIn: data.append([item.value for item in row.values()]) datasetIn = system.dataset…

> [@lrose](#):
>
> Any number of other resources like PyCharm

@cesrom has made some [modules/packages](https://github.com/thecesrom/Ignition) 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.

---

<div class="post-metadata">

**Author:** ![hewking32](https://avatars.discourse-cdn.com/v4/letter/h/b5ac83/32.png) [@hewking32](https://forum.inductiveautomation.com/u/hewking32)\
**Post date:** [October 12, 2021, 11:53am UTC](https://forum.inductiveautomation.com/t/troubleshooting-skills-what-do-we-have-at-our-disposal/51854/6 "2021-10-12T11:53:46Z")

</div>

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 🙂

---

<div class="post-metadata">

**Author:** ![pturmel](https://sea1.discourse-cdn.com/inductiveautomation/user_avatar/forum.inductiveautomation.com/pturmel/32/3295_2.png) [@pturmel](https://forum.inductiveautomation.com/u/pturmel)\
**Post date:** [October 12, 2021, 11:54am UTC](https://forum.inductiveautomation.com/t/troubleshooting-skills-what-do-we-have-at-our-disposal/51854/7 "2021-10-12T11:54:53Z")

</div>

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.

---

<div class="post-metadata">

**Author:** ![bkarabinchak.psi](https://sea1.discourse-cdn.com/inductiveautomation/user_avatar/forum.inductiveautomation.com/bkarabinchak.psi/32/83567_2.png) [@bkarabinchak.psi](https://forum.inductiveautomation.com/u/bkarabinchak.psi)\
**Post date:** [October 12, 2021, 12:22pm UTC](https://forum.inductiveautomation.com/t/troubleshooting-skills-what-do-we-have-at-our-disposal/51854/8 "2021-10-12T12:22:30Z")

</div>

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.

---

<div class="post-metadata">

**Author:** ![hewking32](https://avatars.discourse-cdn.com/v4/letter/h/b5ac83/32.png) [@hewking32](https://forum.inductiveautomation.com/u/hewking32)\
**Post date:** [October 12, 2021, 12:29pm UTC](https://forum.inductiveautomation.com/t/troubleshooting-skills-what-do-we-have-at-our-disposal/51854/9 "2021-10-12T12:29:08Z")

</div>

thanks for very useful comments
