Author |
Message
|
lium |
Posted: Mon Oct 07, 2013 9:42 am Post subject: toolkit debug is very slow |
|
|
Disciple
Joined: 17 Jul 2002 Posts: 184
|
Hi, I tried to debug the message flow through toolkit.
I found it have been very slow. Some time it hangs
However, even last week, it was good.
Even though I roll backed to previous message flow, it was still very slow from this debug point to next debug point.
I am using toolkit 7.0.0.3.
Any tips would be greatly appreciated. |
|
Back to top |
|
 |
lancelotlinc |
Posted: Mon Oct 07, 2013 9:46 am Post subject: |
|
|
 Jedi Knight
Joined: 22 Mar 2010 Posts: 4941 Location: Bloomington, IL USA
|
You should be on 7.0.0.6 and using Trace nodes rather than interactive debug.
What OS is your runtime on ? _________________ http://leanpub.com/IIB_Tips_and_Tricks
Save $20: Coupon Code: MQSERIES_READER |
|
Back to top |
|
 |
smdavies99 |
Posted: Mon Oct 07, 2013 9:55 am Post subject: |
|
|
 Jedi Council
Joined: 10 Feb 2003 Posts: 6076 Location: Somewhere over the Rainbow this side of Never-never land.
|
lancelotlinc wrote: |
using Trace nodes rather than interactive debug. |
So all that money spent on those training couses you so often thrust at people is (in a good part) a waste of time then? After all they teach you how to use the interactive debugger don't they? Do they spend equal amounts of time on the trace nodes/usertrace as they do on the debugger? I think not.
Out of a quick sample of 8 Broker developers, only two of us don't use the Debugger. Our excuse is that we started using broker before there was a usable debugger. _________________ WMQ User since 1999
MQSI/WBI/WMB/'Thingy' User since 2002
Linux user since 1995
Every time you reinvent the wheel the more square it gets (anon). If in doubt think and investigate before you ask silly questions. |
|
Back to top |
|
 |
lancelotlinc |
Posted: Mon Oct 07, 2013 10:03 am Post subject: |
|
|
 Jedi Knight
Joined: 22 Mar 2010 Posts: 4941 Location: Bloomington, IL USA
|
smdavies99 wrote: |
lancelotlinc wrote: |
using Trace nodes rather than interactive debug. |
So all that money spent on those training couses you so often thrust at people is (in a good part) a waste of time then? After all they teach you how to use the interactive debugger don't they? Do they spend equal amounts of time on the trace nodes/usertrace as they do on the debugger? I think not.
Out of a quick sample of 8 Broker developers, only two of us don't use the Debugger. Our excuse is that we started using broker before there was a usable debugger. |
Interactive debugger is less useful when it upsets the timing of the message flow. Also, depending on the OS of the runtime, its possible he's incurring aforementioned deadlock issue. _________________ http://leanpub.com/IIB_Tips_and_Tricks
Save $20: Coupon Code: MQSERIES_READER |
|
Back to top |
|
 |
lium |
Posted: Mon Oct 07, 2013 10:13 am Post subject: |
|
|
Disciple
Joined: 17 Jul 2002 Posts: 184
|
It is windows XP.
The issue is:
even last week, it was working perfectly. |
|
Back to top |
|
 |
smdavies99 |
Posted: Mon Oct 07, 2013 10:14 am Post subject: |
|
|
 Jedi Council
Joined: 10 Feb 2003 Posts: 6076 Location: Somewhere over the Rainbow this side of Never-never land.
|
lancelotlinc wrote: |
Interactive debugger is less useful when it upsets the timing of the message flow. Also, depending on the OS of the runtime, its possible he's incurring aforementioned deadlock issue. |
Isn't that a better explanation than the first one? Just saying Don't.... without reasons is rather abrupt. _________________ WMQ User since 1999
MQSI/WBI/WMB/'Thingy' User since 2002
Linux user since 1995
Every time you reinvent the wheel the more square it gets (anon). If in doubt think and investigate before you ask silly questions. |
|
Back to top |
|
 |
lancelotlinc |
Posted: Mon Oct 07, 2013 10:14 am Post subject: |
|
|
 Jedi Knight
Joined: 22 Mar 2010 Posts: 4941 Location: Bloomington, IL USA
|
lium wrote: |
It is windows XP.
The issue is:
even last week, it was working perfectly. |
Nonetheless, you should be using Trace nodes and depending on them rather than the interactive debugger. _________________ http://leanpub.com/IIB_Tips_and_Tricks
Save $20: Coupon Code: MQSERIES_READER |
|
Back to top |
|
 |
Esa |
Posted: Tue Oct 08, 2013 1:11 am Post subject: |
|
|
 Grand Master
Joined: 22 May 2008 Posts: 1387 Location: Finland
|
The server side counterpart of the debugger sends to your toolkit all the content you can see in the Variables window -- each time you step or the execution pauses at a breakpoint. This is why the debugging is slower when you are debugging a large message. And hangs when you are debugging a huge message.
Perhaps your this weeks message was a large one? |
|
Back to top |
|
 |
McueMart |
Posted: Tue Oct 08, 2013 1:52 am Post subject: |
|
|
 Chevalier
Joined: 29 Nov 2011 Posts: 490 Location: UK...somewhere
|
Quote: |
Nonetheless, you should be using Trace nodes and depending on them rather than the interactive debugger. |
Please explain how I figure out if complex code is following the correct path using Trace nodes. (and dont tell me that complex code shouldn't be written in broker ha ha...)
I dont understand your dislike of the debugger but as someone who uses it religiously on a daily basis I would say its an indispensable asset in a developers toolkit, and if you aren't using it you are costing yourself productivity. Careful on preaching this approach to others though. |
|
Back to top |
|
 |
smdavies99 |
Posted: Tue Oct 08, 2013 2:25 am Post subject: |
|
|
 Jedi Council
Joined: 10 Feb 2003 Posts: 6076 Location: Somewhere over the Rainbow this side of Never-never land.
|
McueMart wrote: |
I don't understand your dislike of the debugger but as someone who uses it religiously on a daily basis I would say its an indispensable asset in a developers toolkit, and if you aren't using it you are costing yourself productivity. Careful on preaching this approach to others though. |
I've seen people use the debugger very efficiently. for me, it is a PITA. My style is NOT to use it but usertrace/trace nodes. I'm usually more efficient than many of my colleagues at producing completed work but that it more down to getting a lot of it right first time. _________________ WMQ User since 1999
MQSI/WBI/WMB/'Thingy' User since 2002
Linux user since 1995
Every time you reinvent the wheel the more square it gets (anon). If in doubt think and investigate before you ask silly questions. |
|
Back to top |
|
 |
fatherjack |
Posted: Tue Oct 08, 2013 2:31 am Post subject: |
|
|
 Knight
Joined: 14 Apr 2010 Posts: 522 Location: Craggy Island
|
McueMart wrote: |
Please explain how I figure out if complex code is following the correct path |
You get the expected output? _________________ Never let the facts get in the way of a good theory. |
|
Back to top |
|
 |
lancelotlinc |
Posted: Tue Oct 08, 2013 3:22 am Post subject: |
|
|
 Jedi Knight
Joined: 22 Mar 2010 Posts: 4941 Location: Bloomington, IL USA
|
McueMart wrote: |
Quote: |
Nonetheless, you should be using Trace nodes and depending on them rather than the interactive debugger. |
Please explain how I figure out if complex code is following the correct path using Trace nodes. (and dont tell me that complex code shouldn't be written in broker ha ha...)
I dont understand your dislike of the debugger but as someone who uses it religiously on a daily basis I would say its an indispensable asset in a developers toolkit, and if you aren't using it you are costing yourself productivity. Careful on preaching this approach to others though. |
You put a Trace node before and after every major node in your flow. You point each trace node to a unique file. From file explorer, you sort by date. Fairly simple routine.
Interactive debugger is not useful for real-time message flows, such as those processing user requests for which a human is waiting on a response. The interactive debugger forces timeouts in this instance. Environments which this is true are banks, insurance companies and stock exchanges. Timing is important in those environments.
How many times have you stepped past the break point without getting the information you needed from the interactive debugger ? Using Trace nodes this never occurs because all data you ever want is written to disk.
How many times has an end user called you up and said a transaction she ran two days ago in the QA environment failed and she wants to know why ? Would you have the data to replicate that transaction in DEV environment with the interactive debugger ? No, because the debugger was not active in the QA environment when the end user ran her transaction. With Trace nodes, you simple search for the transaction time or some unique Id, look at the data and replicate the issue in DEV. Simple.
So from a productivity stand-point, the interactive debugger is wasteful of time since you have to repeat multiple times the offending point, and even then still not get a full understanding of ALL values contained within the Logical Message Tree.
To each his own. I never said you must use Trace nodes. I just said that Trace nodes are an answer to the OPs issue. You should depend on Trace nodes rather than the interactive debugger since you get better and more complete information from Trace nodes and you do not disrupt the timing of the flow execution.
Those people who do not make good use of Environment variables, do not organize their code properly, or do not treat InputRoot as immutable will have equally difficult time developing message flows irrespective of which method they use to debug.
Some people are not cut-out to be developers. Those people should go back to being Admins. _________________ http://leanpub.com/IIB_Tips_and_Tricks
Save $20: Coupon Code: MQSERIES_READER
Last edited by lancelotlinc on Tue Oct 08, 2013 4:02 am; edited 1 time in total |
|
Back to top |
|
 |
McueMart |
Posted: Tue Oct 08, 2013 3:47 am Post subject: |
|
|
 Chevalier
Joined: 29 Nov 2011 Posts: 490 Location: UK...somewhere
|
Quote: |
You put a Trace node before and after every major node in your flow |
This doesn't help with determining if particular code paths are being followed within individual compute nodes.
Sometimes a single node will have 100's (or indeed 1000's...) of lines of code. Sticking a trace node on either side of the node is going to do very little to help me debug a complex issue within this code.
The debugger still has a long way to go with capabilities like:
- Showing the types of logical tree elements
- Showing a logical tree when debugging JCNs
- Fix a multitude of bugs and performance issues.
...but advocating not using it is a step backwards imho. |
|
Back to top |
|
 |
lancelotlinc |
Posted: Tue Oct 08, 2013 4:04 am Post subject: |
|
|
 Jedi Knight
Joined: 22 Mar 2010 Posts: 4941 Location: Bloomington, IL USA
|
McueMart wrote: |
Quote: |
You put a Trace node before and after every major node in your flow |
This doesn't help with determining if particular code paths are being followed within individual compute nodes. |
It does if you make proper use of Environment variables as previously mentioned. Each time your logic makes a decision, you need to record that decision in the Environment.
One look at the Environment should tell you all the information you need to know about how your logic handled that transaction. Not making a record of how your logic behaves is a rookie mistake.
Quote: |
Those people who do not make good use of Environment variables, do not organize their code properly, or do not treat InputRoot as immutable will have equally difficult time developing message flows irrespective of which method they use to debug.
Some people are not cut-out to be developers. Those people should go back to being Admins. |
_________________ http://leanpub.com/IIB_Tips_and_Tricks
Save $20: Coupon Code: MQSERIES_READER |
|
Back to top |
|
 |
smdavies99 |
Posted: Tue Oct 08, 2013 4:19 am Post subject: |
|
|
 Jedi Council
Joined: 10 Feb 2003 Posts: 6076 Location: Somewhere over the Rainbow this side of Never-never land.
|
[quote="McueMart"]
Quote: |
This doesn't help with determining if particular code paths are being followed within individual compute nodes.
|
Then I was an apprentice (a very long time ago) one of the problems we were given to solve was the Black Box.
By measuring the inputs and output and its response to different inputs you could determine what components were inside.
A compute node is very much like a Black Box. Using trace nodes alone and help you understand what is going on inside. The are a couple of ways to see the paths taken by the code inside the Node.
1) Use a User Trace.
2) Add instrumentation calls/events/code at key points in the code that will allow you to determine the path the message took through the code.
The last option is IMHO a lost/dying art. The common use of interactive debuggers is IMHO to blame for that. Back in the day of proper real time programming there were no such things as interactive debuggers. One system I developed used the CPU Front panel to show progress of an event through some pretty hairy code that was to work inside an Contact Admin.
Yes, back in the day Computers had lots of light on their front panels.
You could make nice patterns from some of them! _________________ WMQ User since 1999
MQSI/WBI/WMB/'Thingy' User since 2002
Linux user since 1995
Every time you reinvent the wheel the more square it gets (anon). If in doubt think and investigate before you ask silly questions. |
|
Back to top |
|
 |
|