Reduce Development Time with LabWindows/CVI 2017


For more than 30 years, C developers have used LabWindows/CVI to create robust, high performance applications for manufacturing, military, aerospace, telecommunications, and automotive industries. With updates that improve debugging and enhance editor usability, LabWindows/CVI 2017 will help developers take concept to hardware faster than ever before. 

LabWindows/CVI developers will immediately be able to take advantage of enhanced debugging capabilities such as thread-specific breakpoints for debugging multi-threaded applications and tracepoints for debugging time-critical applications. 

In keeping pace with industry trends, LabWindows/CVI 2017 includes editor enhancements that focus on better window management and improved syntax highlighting. These features facilitate management of larger codebases and more complex LabWindows/CVI projects allowing developers to reduce development time. 

Download LabWindows/CVI 2017



Applications often need to be debugged at the same execution speed that the deployed executable will run at. In versions before LabWindows/CVI this could be accomplished through specifying debug output in source code or using the variable watch window. However, with the addition of tracepoints to LabWindows/CVI, it is now possible to set up a breakpoint that does not stop execution but either prints specific output to the console or jumps to a new line of code. This enables developers to get debug output for time-critical applications without adding lines of code to their source and dynamically control the execution flow of their code based on different variable values or system states.

Tracepoints allow developers to take advantage of defined macros to better understand the current state of their application. These macros can identify the function that the code is currently executing, the state of a specific variable, and much more.

Thread-Specific Breakpoints

Building multi-threaded applications has an associated complexity when it comes to debugging multiple threads executing in parallel. Understanding race conditions, inter-thread communication, file I/O, and other common issues that arise from multi-threading is a constant struggle for developers. LabWindows/CVI 2017 features added breakpoint functionality to specify which thread a breakpoint should break on, thereby making it easier to understand a specific thread’s state in a multi-threaded application.

At run time, developers now have the option of specifying for each breakpoint which thread to break on via thread ID. The breakpoint window maintains an understanding of what threads are currently in memory in the application and allows the developer to select one via drop-down. When used in conjunction with the new tracepoint functionality, users can also choose to print out the thread ID using $TID.

UI Event Logger

One of the clearest advantages of using LabWindows/CVI is the ability to respond to user events simply and easily using callback functions associated with user interface objects. With LabWindows/CVI 2017, a UI Event Logger allows developers to better understand which events will be fired when a user interacts with the user interface of an application. This can help developers better plan for what actions a user will take and respond to them in turn.

The UI Event Logger not only allows developers to plan for what events will be fired at run time but can also act as a useful debugging tool by reporting specific timing for each UI event and other information such as containing object constant and specific control constant values. The UI Event Logger can respond to different events based on user selection of available events specific to the active user interface.

Enhanced Syntax Highlighting

Navigating through dense source code files without a good understanding of where variables are used, which parentheses match, and what data type a constant will take the form of slows down development time and can often lead to frustration. With LabWindows/CVI 2017’s enhanced syntax highlighting, that frustration is removed by highlighting matching usages of a selected variable or function, highlighting the parenthetical counterpart of a selected bracket or parenthesis, and giving specific colors to constant values in source.

This feature represents an overall trend of LabWindows/CVI keeping pace with the best-in-class editors available while still maintaining the application-specific functionality for engineers and scientists to develop applications more effectively.

Improved Window Management

Managing large code bases and LabWindows/CVI projects can become unruly without the proper features to open and close source files easily. LabWindows/CVI 2017 adds a common user-requested feature to add close buttons for each tab in a workspace. This feature also adds the ability to close each tab by clicking the middle mouse button, thereby facilitating quicker context switches and simplified window navigation.  

Build with the LabWindows/CVI Community

LabWindows/CVI 2017 contains multiple user-suggested features sourced from the LabWindows/CVI Idea Exchange, including tab-specific close buttons, the UI Event Logger, and more. 

The Idea Exchange is the most broadly available route of communication between LabWindows/CVI users and the NI development team. The Idea Exchange gives programmers an avenue to collaborate on feature ideas and communicate these suggestions to National Instruments. Since its inception in 2010, LabWindows/CVI users have contributed over 200 ideas and feature suggestions to the exchange and over 25 of these have been implemented to better meet the needs of LabWindows/CVI developers. Programmers are invited to influence future versions of LabWindows/CVI by submitting a new idea or voting on exiting requests.  

Figure 1. Print messages from tracepoints using built-in macros.
Figure 2. Thread-specific breakpoints enhance a developer’s ability to debug multi-threaded applications.
Figure 3. The UI Event Logger allows LabWindows/CVI developers to better understand what UI events will be triggered when users interact with their user interface.
Figure 4. Enhanced syntax highlighting facilitates better understanding of all the uses of a specific variable or function throughout a source file.
Figure 5. Tab-specific close buttons allow developers to quickly switch between active source files.
Figure 6. Visit to submit or vote on a new feature request for future versions of LabWindows/CVI