I don't know if it is possible technically but from a user's perspective it would be convenient for debugging a program (in debug configuration) if the UI constants could be provided in the data tooltips, too. Right now, if something is wrong with my UI I will have to do a lot of detective work to find out which control / control attribute is the problematic one...
Example: Consider the code
SetCtrlAttribute ( panel_handle, control_id, control_attribute, attribute_value );
Right now, if I hover over attribute_value, the tooltip will display something like "attribute_value = 24064". Then I will need to look up userint.h to find out which attribute value this is ( ATTR_CTRL_VAL ). It would be more convenient if the tooltip could include this information, too, and display something like "attribute_value = 24064 ( ATTR_CTRL_VAL )"
The same holds for control_id, because a number such as 14 will not immediately help me - I will have to go through the corresponding include file to find the respective UI control (e.g. TABPANEL_2_NUMERIC ).
It was a nice surprise when CVI provided clang as an external optimizing compiler. In the meantime, however, the initial clang version 1.0 has been significantly improved and now is at version 3.0 - but not for CVI users...
I would suggest that NI provides a current Windows binary of the compiler for everyone with a legal copy of CVI2010 or later. As the release cycles of CVI are quite long it would be convenient to obtain, on a biannual interval, interim updates of clang.
On a side note, this also would provide some motivation to keep/renew the SSP. Right now I consider it disappointing if the equivalent of several hundred Euros is a patch of CVI only. Other major companies such as Autodesk or Microsoft provide patches free of charge...
The JIT debugger option in CVI 2010 is a nice step in the right direction, but only being able to debug builds that were compiled in "Debug" mode pretty much defeats the whole purpose of the idea. Debug builds are much too slow to be used in production and on my machines, if I ever use a Debug build, it probably already runs under the debugger anyway! Seeing that CVI is not even an optimizing compiler I cannot understand why release builds cannot be properly debugged.
Thing is, the crashes in production are the important ones that I absolutely need to be able to investigate, and CVI does not provide ANY assistance in this area apart from being able to at least generate a MAP file. This is what I currently have to do: I have included code in my application that creates a memory dump and sends it to me when the application crashes or hangs. This dump I can then load into WinDbg and with a few tricks I can at least import the CVI MAP file to get some functions names in the stack traces, but that's it, all investigations have to be done on the assembly level. To quickly decipher stack frames, e.g. to have a look at local variables, I often even have to throw my OWN code into a disassembler (IDA Pro)! I'm really glad that this way I am now at least able to debug most crashes at all, even when they happen far away in a different country, but this aren't the 80s anymore and you can probably imagine that this process is hard and time consuming and very much annyoing. With code compiled in VC on the other hand I can load a MiniDump and have a look at the stack trace, variables and code on the source level without much hassles.
Some ideas that could help:
- Let me (JIT) debug release builds
- Let me load MiniDumps into the debugger or
- create PDB files that I can use together with a debugger that can load MiniDumps (WinDbg, VS)
- Let me not only use an external compiler but also an external linker that generates PDB files for release builds (I don't like this solution as I use C99 features VC does not support, but I'm desperate here)
Okay, rant over for now, I think I really needed to vent a bit. Thanks for reading this far ;-)
All the best, Marcel
I would like to see an configuration of batchbuilt process. I have a big workspace with many projects; and would like to create different setups, like "compile only all server projects" or "compile all client projects". The workspace contains a big server-client -based software packages; some dll-projects used for server side only, some only client side.
LabWindows/CVI 9.0.1's implementation of <stdio.h> *scanf and <stdlib.h> strtod functions appears not to support reading back "NaN", "Inf", "+Inf" or "-Inf" values, although printf() can generate them. May I suggest to add functionality like described below.
Practical use would be that it's easier to propagate "invalid measurement" through strings if strto*() and *scanf() understand all classes of strings that *printf() family functions will generate.
This suggestion is in alignment with ISO 9899:1999 (withdrawn) and its successor ISO 9899:2011, i. e. C99 and C11. Note that there is a "stronger" suggestion to implement all of the C11 standard library in the idea exchange already, which - if implemented - would subsume this suggestion, but as the bare minimum, I'd certainly appreciate seeing this in CVI 2012.
double x = 0; int i;
i = sscanf("NaN", "%lf", &x); printf("i=%d, x=%g\n", i, x);
i = sscanf("Inf", "%lf", &x); printf("i=%d, x=%g\n", i, x);
errno = 0; x = strtod("NaN", NULL); printf("x=%g, errno=%d\n", x, errno);
Actual result: we see that printf supports NaN/Inf, but scanf and strtod do not:
Is NI road map going to allow applications that are developed with CVI for Windows to run also on the Apple MAC OS as well as run on IPhone and Android Devices? The current alternative to develop the applications for the Apple MAC OS is on X-Code IDE where the code with Objective C (and Objective C++). The code that is developed with CVI cannot be ported over to the MAC OS because Objective C is not based on the ANSI C Standard. X-Code IDE is a powerful but also a clumsy IDE and can be unforgiving. NI also provides the drivers for most its hardware for the MAC. In my opinion the CVI IDE has a much better IDE than X-Code and CVI is more intuitive to use from a development perspective. Since there is open source CLang Compiler for the MAC why can't NI import the CLang Compiler to work with the MAC and IPhone? Both Windows and MAC use the same Intel Microprocessor. Intel also has a compiler for the MAC OS that is separate from the X-Code IDE.
To develop the applications for Android devices requires the Eclipse IDE. Can CVI be adapted to develop software with the Eclipse IDE like an add-on?
In principle CVI supports external compilers for an optimized release version such as Intel's ICL and I managed to successfully compile release versions using ICL 11.1.
However, documentation on this issue is sparse.
It is even worse if one attempts to use an external linker which might be appropriate if one attempts to use e.g. Intel's MKL. Here I would love to see the support of external linkers in combination with an improved documentation.
Similarly, CUDA is becoming more attractive for more demanding floating point applications - I would consider it very useful if NI could provide e.g. an application note of how to do this in an easy to follow tutorial.
Tiling windows is only possible, when they are released from the IDE before. But navigating between the IDE and the released windows is difficult. It would be nice if the sourcecode and uir windows could be tiled INSIDE the IDE. Could look like this:
Currently the 'long double' type has 64 bits of precision, which is the same as the 'double' type. It would be handy on occasion to be able to use the full 80 bits of precision like is available with the Intel compiler.
Wenn ein Rechner nicht am Nezt ist, vielleicht das Kabel nicht richtig drin oder am Platz kein Netz mehr frei ist, dann wird CVI mit einer eingeeschränkten Testlizenz gestartet und würde dann eine EXE generieren, welche in der Laufzeit eingeschränkt ist. Oft ist es der Fall, dass jemand CVI ohne Netzt started um im Quelltext etwas zu kontrollieren. Zu einem späteren Zeitpunkt erstellt jemand eine EXE neu und bemerkt nicht, dass das gestartete CVI keine Lizenz hat, obwohl der Rechner Netz hat. Er müsste erst CVI neustarten um die Lizenz zu holen.
Den Fehler bemerkt er erst am Folgetag, wo das Programm mit einem Fehler abgebrochen wird.
Es wäre aus meiner Sicht sehr sinnvoll, dass eine EXE, welche durch CVI ohne Lizenz erstellt wird, auch einen Popup mit eingebaut bekommt, welcher hiervor warnt.
Auch eine Abfrage, welche der Progrmmierer in sein Programm einbauen kann wäre sehr Hilfreich.
The C preprocessor in other compilers has seen some improvements over the years. Maybe you could freshen the CVI one up a little bit. With most modern C compilers there are some pretty advanced things that can be done in the preprocessor. But include those header files into a CVI project, and you start getting errors in the strangest places. And the cause of these isn't even some nasty trick, but pretty basic stuff for any other preprocessor.
Note: the LabWindows/CVI Idea Exchange is not the appropriate forum to submit technical support questions.
The LabWindows/CVI R&D team is committed to reviewing every idea submitted via the LabWindows/CVI Idea Exchange. However, we cannot guarantee the implementation of any LabWindows/CVI Idea Exchange submission.