Jump to content

troubleshootings while Building large application


Recommended Posts

Hello,

I am currently trying to build a large application :

- ~6000 vis,

- ~300 or 400 classes,

I am quite proud of the code, because there is only 1 vi not packaged in a lib or 1 class, it's the Main_App.vi that launches the application.

Architecture is based on Model View Presenter design pattern.

When I try to build the application Labview just process for hours and don't even moves.

Last night, I let him go for 10 hours and it and just processed 1 class.

I tried using Libp to package part of the code but with no success, a lot of linkage troubles occurs when I try to use them. And management of redefinition seems to broke Vis.

As any body encounters that king of situation and even solved it.

Any Ideas...

The software have to be delivered within a week and it makes me sick not to be able to make usable to work we have done for months....

Thanx for answers.

Pierre

cross-post : http://forums.ni.com/t5/LabVIEW/troubleshootings-while-building-large-application/td-p/1725632

Link to post
Share on other sites

I am getting used with that kind of problems, so every time I added major libs into the project try a new build.

It has work since I last add a big enough lib (almost 1200 Vis and maybe 80 classes).

The design is based on 5 major libs :

- MVPFramework,

- Image display models & interface,

- Connectivity daemon,

- Connectivity database models & interface,

- Main Database models & interface,

Building have been tried with every package separately excepted with the main Database.

What I am going to try is to build without the last one.

The answer in a few hours...

Thanx for your answer,

Regards

Pierre

Link to post
Share on other sites

Pierre,

We do have a customer application with similar statistic (6000+ VIs but only around 100+ classes) and the build does take about 15 hours. Like you we have a lot of problems with the build (it is very easy to brake it for no obvious reason and when it take so long to do a rebuild this can very quickly eat weeks of your time).

Here is some info that might help you.

  • We notice that adding xcontrol can brake our build (ex: adding the 3dsurface plot xcontrol did that [took us 2 weeks to find that this was the issue]).
  • Make sure your build output is as close as possible to the root folder (ex: C\build) so you wont hit the "path too long" issue that plague windows OS.
  • Build that fail do sometime succeed when we do a control+shit+run arrow (re-compiles everything in memory) and a resave.
  • Build that do fail on "regular" 32-bit OS do sometime succeed on 64-bit OS.
  • Sometime adding more memory to the build machine helps.
  • When none of the above succeed we have to try to figure out what was change since the last successful build. Note: we try very hard to do build very frequently to alleviate these issues.
  • We have several machine (for instance Virtual Machine) where we can try several builds in parallel to speed up the debugging.

So my first suggestion would be to let the build go until you get an error as it can take a very long time. Also, if you have not done so, make sure you can try the build on several machines (using VMs [Virtual Machine] is really ideal for this tasks).

I feel your pain, and I wish you the best of luck. Please report back here when you found out what was the issue.

PJM

  • Like 2
Link to post
Share on other sites

Hi,

I have had these kind of problems. Now I must use LV2011f2 to be able to make a build.

What OS are you running?

Which LV version?

Have you enabled LV to use 3GB of virtual memory? http://zone.ni.com/reference/en-XX/help/371361D-01/lvhowto/enable_lrg_ad_aware/

Have you set GDI objects to maximum? HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Windows\GDIProcessHandleQuota (max 65536)

/Staffan

Link to post
Share on other sites

Hi,

I have had these kind of problems. Now I must use LV2011f2 to be able to make a build.

What OS are you running?

Which LV version?

Have you enabled LV to use 3GB of virtual memory? http://zone.ni.com/r...e_lrg_ad_aware/

Have you set GDI objects to maximum? HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Windows\GDIProcessHandleQuota (max 65536)

/Staffan

Hi,

OS : Seven 64bits,

LV : 2011 32bits

I just modified GDIProcessHandleQuota, let wait for a few hours...

Link to post
Share on other sites

Found the trouble....

There was a class disturbing the building process.

Traitment for a class in large project takes about 10 to 15s. With this class included processing time raise up to 250s per class. without, processing time goes to 10s.

I regenerated the class, include in the project and restart the compilation.

Processing time per class is between 14 to 18s.

Past 1h, almost 70% of the class and libs where processed.

Let's wait for 30 mn and then run the application :)

To find where was the bottle neck, I add those lines in labview.ini :

keepinternalllb=TRUE

NI_AppBuilder_Logging=TRUE

DWarnDialog=True

promoteDWarnInternals=True

DPrintfLogging=True

LLVMLargeVIThreshold

I installed 2011f2 and add line : lazyLoadIcons=True.

Thanx for every answers.

Bye

Link to post
Share on other sites

Hi,

Nice to hear that you managed to complete the building process.

About the "lazyLoadIcons=True". Beside the documented issue with the icon there are at least two more issues when this parameter is True

  1. When creating a new "VI for Override...", icon of the new VI is not updated.
  2. If changing the classicon and applying this to all member VIs, all member VIs not in memory/not opened will lose their "local" part. (I have a lot of VIs now that only have the "NI_Library"-part of the icon. Everything else is gone :angry::frusty: ).

/Staffan

Link to post
Share on other sites

Pierre

Thanks for reporting back your findings.

That class that was giving you issues, was it doing anything out of the ordinary?

Also, what do you mean exactly by "I regenerate the class"? Did you recreate if from scratch, mass compile it or something else?

Thanks

PJM

Link to post
Share on other sites

Hello,

To respect the design pattern we decided to use (Model-View-Presenter), I created a few scripting tools.

Their purpose was to generate concrete classes from template, modify vi names and class inheritence, icons, save and insert into the project... It works nice.

(I should maybe post the framework to show what can be done with labview engine)

That given class was just some kind of container and factory for other presenters and views.

It was written at the begining of the project so was not generated by scripting tools.

So what I did, was to generate the class using scripting tools and every thing was done. But I still don't understand what happened will that class...

Link to post
Share on other sites

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.