Jump to content

Debugging of reentrant VIs in RT


P. Rosegger

Recommended Posts

QUOTE (P. Rosegger @ Aug 27 2008, 01:48 PM)

Hi there,

does anyone out there have any suggestions how to debug reentrant VIs in RT? So far we couldn't figure out any feasible way...

TiA,

PR

I'm sure I will not remember all of them but ...

Use the Hiearchy screen and do a ctrl-a to find the re-entrant VI's.

Find the re-ntrant VI on a diagram and double click it to open the FP of that instance of the re-entrant VI

Ben

Link to comment

QUOTE (neB @ Aug 27 2008, 07:50 PM)

Use the Hiearchy screen and do a ctrl-a to find the re-entrant VI's.

Hi neB,

thanks for your answer, which unfortunately does not work for us. I'll try to explain in detail what we were trying:

We need to load multiple instances of reentrant VIs dynamically via "Open VI Reference". As it seemed not possible in RT to place break points in reentrant VIs that are loaded dynamically we had no possibility to directly debug these VIs. Furthermore, as LabVIEW couldn't find the VIs-to-be-loaded we copied them manually to the RT system via FTP and changed the path information to have them loaded from that new location. That's why we could find no way to see wether the vi was loaded and - if it was loaded - what was going on in there.

Today we realized that in the exe creation dialogue we can define which files are to be loaded dynamically ("Source files" -> "Dynamic VIs and Support Files"). The exe creator obviously copies also those files to the RT system (at least our application worked again afterwards). The good thing about it: We're now able to open the files that are loaded dynamically in the project explorer and we're also able to debug them. The bad thing: We need to deploy those files manually after each change.

Thanks again,

PR

Link to comment

Unless I mis-read you the reason they could not be found was tht they were not loaded.

A "cheap trick" that use to work was to put an instance of the dynamically called VI in a non-executing case structure so that the VIs are part of the top level app. This will forrce the dynamic VI to be deployed with the app.

Also watch your file spec since the specs change in a exe.

If you are using an invoke node, call by reference, I think you can now single step into that call and debug as normal. I also seem to remember that if you single step into multiple re-cursive calls you want to get out of all of the re-cursive calls before stopping LV to avoid a crash. (Just a friendlt warning)

Ben

Link to comment

QUOTE (neB @ Aug 28 2008, 07:06 AM)

A "cheap trick" that use to work was to put an instance of the dynamically called VI in a non-executing case structure so that the VIs are part of the top level app. This will forrce the dynamic VI to be deployed with the app.

Note: if you do this by wiring a constant to the case selector, this won't work when you build an app in LabVIEW 8.x (LabVIEW will strip the non-executing cases and anything that's inside them) as it folds the case structure.

Link to comment

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

×
×
  • Create New...

Important Information

By using this site, you agree to our Terms of Use.