LabVIEW

cancel
Showing results for 
Search instead for 
Did you mean: 

Debugging dynamicaly loadable VI

I'm developing VI, which main application loads using "Open VI Reference", and later executes using "Invoke Node". Main application is written in LabVIEW but distributed as executable without debugging information.

How can I step into the new Vi code (execute breakpoint inside the VI), when running main application?

 

I tried, Operate | Debug application, but main application cannot be selected as it does not contain debug information.

 

I developed my own simpler main application/wrapper (for which I have source/block diagrams), but when I used Operate | Debug application, I was able to debug main application, but debugger is not stopping on a breakpoint in the dynamically loaded Vi. It looks that this option allows only to debug what was loaded during connection. Dynamically loaded VIs debugging information is NOT available. 

 

The only way I found right now is to debug the newly developed Vi inside the LabVIEW project set for my simpler main application/wrapper.

 

Unfortunately I must use the original app for final debugging, and in the future projects.

 

In conclusion:

Is there a way in LabVIEW, which allows to debug dynamically loadable VI, by lunching those VIs using executable code, for which debugging information is not available?

My previous applications where developed in C, and both LabWindows/CVI and Visual Studio are able to lunch executable, which loads DLL, and step into the DLL code for debugging. Is there similar facility in the LabVIEW environment?

 

 

    

0 Kudos
Message 1 of 4
(2,787 Views)

Good example of, what I'm looking for is TestStand.

Inside TestStand I can debug LabVIEW VI, which was dynamically loaded.

 

Is it possible to setup LabVIEW project that way that it lunches user chosen executable, which loads VI and allows for it to be debugged?

In TestStand I can edit VI, set a breakpoint on it's block diagram, and execution stops on that breakpoint when debugging.

0 Kudos
Message 2 of 4
(2,761 Views)

Hi Pawel_K, 

 

     If you must use the original application for final debugging, you will have to enable the debug option when you build the executable.  Unfortunately, there is no way to"step into" or set breakpoints in a subVI if the calling function is an executable, unless you enable debugging in the main executable.  Your other option is, of course, to debug in the development environment.  Sorry to be the bearer of bad news Smiley Sad.  Perhaps I have misunderstood what you are attempting to do?

0 Kudos
Message 3 of 4
(2,731 Views)

Thank you,

 

This is a major LabVIEW limitation.

 

I'm developing a LabVIEW application, which end used can customize using dynamicaly loadable module(s) (as TestStand calls LabVIEW).

It is a major problem/limitation if this custom code cannot be debugged without full access to the main application source.

 

The main application code cannot be released. It is company IP and it is also quite big/complicated. It would confuse new users.

 

I guess my only option is to allow customizations using C/C++, and use Microsoft dev toollkit to debug.

 

 

 

 

0 Kudos
Message 4 of 4
(2,654 Views)