Visit our LabVIEW Wiki Real Time article
Tags |
(This content has not been tagged yet)
|
![]() |
Aug 27 2008, 05:48 PM
Post
#1
|
|||
|
2 more posts to go! Member Posts: 8 Joined: 11-August 08 Member No.: 12249 Using LabVIEW Since:2002 LV:8.20 ,8.5.1 ,.
|
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
|
||
|
|
|||
| Ad |
Aug 27 2008, 05:48 PM
Post
#
|
||
|
|
|
||
|
|
|||
Aug 27 2008, 05:50 PM
Post
#2
|
|||
|
Certified Kool-Aid Kid Premium Member ![]() Posts: 1189 Joined: 6-December 02 From: Pittsburgh PA USA Member No.: 29 Using LabVIEW Since:1998 LV:7.1 ,. ,.
|
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
|
||
|
|
|||
Aug 28 2008, 10:54 AM
Post
#3
|
|||
|
2 more posts to go! Member Posts: 8 Joined: 11-August 08 Member No.: 12249 Using LabVIEW Since:2002 LV:8.20 ,8.5.1 ,.
|
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
|
||
|
|
|||
Aug 28 2008, 11:06 AM
Post
#4
|
|||
|
Certified Kool-Aid Kid Premium Member ![]() Posts: 1189 Joined: 6-December 02 From: Pittsburgh PA USA Member No.: 29 Using LabVIEW Since:1998 LV:7.1 ,. ,.
|
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 LabVIEW to avoid a crash. (Just a friendlt warning) Ben
|
||
|
|
|||
Aug 28 2008, 02:48 PM
Post
#5
|
|||
![]() I'm a LAVA, not a fighter. V I Engineering, Inc. ![]() Posts: 3851 Joined: 13-October 03 From: Michigan, USA Member No.: 181 Using LabVIEW Since:1993 LV:8.5 ,. ,.
My Blog
|
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. -------------------- ![]()
|
||
|
|
|||
Aug 29 2008, 02:43 AM
Post
#6
|
|||
|
Very Active Member Posts: 71 Joined: 1-June 06 Member No.: 5171 LV:8.0 ,. ,.
|
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. Absolutely correct. Right thing to do now is to use a Static VI Reference.
|
||
|
|
|||
![]() ![]() |
| Time is now: 8th January 2009 - 10:08 PM |