LabVIEW Idea Exchange

cancel
Showing results for 
Search instead for 
Did you mean: 
AristosQueue (NI)

Putting a probe on the real reentrant VI should put a probe on the clones

Status: New

This idea came from customer Jason Willis during an NIWeek 2012 brainstorm session with LV developers. To me, it seemed like a good idea, so I figured I would post it to the community to flesh it out and see what kudos it gets.

 

When you have a reentrant VI, you have the one real VI and many clone VIs. Debugging the clones is hard. One way to make it easier might be to make the probes behave like the breakpoints do.

 

When you put a breakpoint on an individual clone, only that clone gets the breakpoint. But if you put a breakpoint on the real VI, all the clones get that breakpoint. That gives you a way to stop at a point of execution regardless of which clone gets pulled from the clone pool.

 

We could make probes do the same: if you put a probe on a real VI, any time the block diagram of a clone gets opened, a probe would be added to its wires in the same locations as on the real VI. If you removed the probe from the real VI, all the duplicate probes on the clones would go away too. But if you added a probe to a clone, the other clones would not get a probe.

21 Comments
crossrulz
Knight of NI

If nothing else, it increases consistency to the debug tools.


GCentral
There are only two ways to tell somebody thanks: Kudos and Marked Solutions
Unofficial Forum Rules and Guidelines
"Not that we are sufficient in ourselves to claim anything as coming from us, but our sufficiency is from God" - 2 Corinthians 3:5
GregSands
Active Participant

It's hard to see when this wouldn't be desirable.  One thing that might need some more thought is the way in which the probe window displays this.  Perhaps with a "probe group", where the root element is the probe on the real VI - if that's deleted then all children/clone probes also get removed, but individual probes can also be removed from this window.  Something like this perhaps:

CloneProbes.png

fabric
Active Participant

Good idea. I was just going to make the same suggestion as GregS... Would definitely need some heirarchy so as not to overcrowd the probe window.

 

And obviously double-clicking the clone name in the probe window would open that particular clone's diagram. Now THAT would be nice! Smiley Happy

SteenSchmidt
Trusted Enthusiast

This would be a consistent extension to the existing way breakpoints work. But behold; I see a huge improvement possibility here when debugging reentrant VIs on LV Real Time (which you really can't today):

 

Currently it's not possible to place a probe in a clone on Real Time, since it's not possible to display the clone BDs anywhere so you can place your probe. I don't think your idea here should even open the BDs of the clones - the probe window simply populates with the added probes from the clones when you probe the real VI. Thus, if you run a Real Time project from a Desktop PC and debug through VI Server as today, you can open non-reentrant VIs and stick probes in them. Implementing your idea could allow us to similarly open the real VI on the Desktop PC and that way get probes in all the clones running on the RT target.

 

That would simply be awesome!

 

Cheers,

Steen

CLA, CTA, CLED & LabVIEW Champion
GregFreeman
Trusted Enthusiast

Um, yes please. Additionally, I would like reentrant VIs, when launched dynamically to show their front panel on RT when in the dev environment. I recently have been working on an application that needs different VIs to be launched (the actor framework does this too 😉 and yes I know there is now a debugger for it) But I get stuck building a debuggable exe every time I make changes, just so I can get to the block diagrams of these dynamically launched VIs in the RT environment....this may be a whole other idea all together...

X.
Trusted Enthusiast
Trusted Enthusiast

Shameless plug: If you get somebody to work on probes, please consider filing a CAR for the lack of wire label inheritance (discussed here: http://forums.ni.com/t5/LabVIEW-Idea-Exchange/Allow-labeling-to-the-probe/idc-p/2157982).

In the context of clone probes, you will have to face the issue of "user friendly" naming of probes. If you go down the route of least effort, you'll get something like:

 

 Clone 1:

Probe

Probe

Probe

 

...

 

Clone n:

Probe

Probe

Probe

 

Duh! People have started revolutions for less in some countries.

Richard_D-W
Member

YES!  Please!  I could really use probes that actually PROBE instead of "bounce off" clones.

SteenSchmidt
Trusted Enthusiast

@Richard_D-W: You can probe clones in the same way as ordinary VIs (as long as you can get to their BD). If your probe "bounces off" in all likelyhood you have disabled debugging for that VI. Enable debugging in the real VI in the 'Execution' section of VI Properties, then you're all set.

 

/Steen

CLA, CTA, CLED & LabVIEW Champion
SKauth
Member

I see, when I enable debugging, I can set a probe, but still, it won't update...

 

Is there a better solution in anything newer than LV 2012?

X.
Trusted Enthusiast
Trusted Enthusiast

You have to put the probe IN THE CLONE, not the parent diagram. That usually requires stepping through the code until that clone is called and its diagram shown, A major pain in the rear, hence the need for that idea to be implemented.