QNX Technical Articles
QNX® Momentics IDE 7.1 (Build 7.1 202006141843S): Release Notes
Date of this edition: March 8, 2021
QNX Momentics IDE provides a graphical environment for developing, debugging, and profiling applications for ARMv7, AArch64, and x86_64 targets running the QNX Neutrino RTOS. You can install the IDE on the following development hosts:
- Microsoft Windows 10 Pro 64-bit, or Windows 8.1 Pro 64-bit
- macOS version 10.14, 10.15
- Linux Red Hat Enterprise Linux 7 64-bit, or Ubuntu Desktop 18 LTS 64-bit, on x86_64 processors
Note: The IDE isn't supported on Linux on ARM processors.
![]() |
|
Throughout this document, you may see reference numbers associated with particular issues, changes, etc. When corresponding with our Technical Support staff about a given issue, please quote the relevant reference number. You might also find the reference numbers useful for tracking issues as they become fixed.
Contents
- What's new in QNX Momentics IDE?
- Fixed issues
- Known issues
- Starting the IDE
- Getting started with the documentation
- Technical support
What's new in QNX Momentics IDE?
QNX Momentics IDE 7.1 allows you to develop projects for virtual machine targets, and supports newer versions of GNU tools and newer hardware for AArch64 targets.
The major changes are:
- Support for QNX SDP 7.1
- IDE 7.1 is built on Eclipse 2019-09 and CDT 9.9
- Support for mkqnximage, which generates QNX system images that can run in virtual machines
- Support for GCC 8.3 and GDB 8.2.1
- Support for ARMv8.2 variant for AArch64 targets
- Editor is compliant to the C++17 standard and the C11 standard
Fixed issues
Memory Analysis
If you use the Memory Analysis tool with the control thread enabled, no information is returned for bins, bands, or usage. (Ref# 252156, J393820)
Workaround: Disable the control thread under the Advanced Settings of the Memory Analysis controls.
System Information
-
Our documentation has been improved to explain that servers are expected to handle all message types, and how to do so.
See the
Identifying messages
topic in theMessage Passing
chapter in Getting Started with QNX Neutrino.Handling all messages avoids the problem of unpredictable IDE behavior if you access the Connection Information view and select a server process in the Target Navigator. This behavior can include qconn staying reply-blocked and in turn causing refresh failures in the IDE, or other unexpected results for qconn or for other tools, such as the command line pidin fd that's used to query servers on the target system.
(Ref# J1689419)
Known issues
The QNX Momentics IDE 7.1 release contains some known issues, many of which were also present in earlier IDE releases. These issues are listed below. Not all items listed are bugs.
- General
- Ubuntu 20.04
- Application Profiler
- System Information
- System Profiler
- Memory Analysis
- C/C++ development
- Debugging
- QNX Virtual Machine targets
- Unsupported C++17 features
- Unsupported C11 features
- Valgrind
General
After you install QNX SDP 7.1 and QNX Momentics IDE 7.1, if you configure your Floating License Server with the environment variable setting of QNXLM_LICENSE_FILE=@127.0.0.1 or with lmutil, the IDE may fail to start if your license server is out of date. Specifically, the IDE displays a dialog saying the license check has failed, and prints an error message to the console. (Ref# J2871194)
Workaround: Update your Floating License Server to the newest version. For instructions on doing so, see the
Upgrading from release 11.13?
section in the Floating License Server release notes.After you install QNX SDP 7.1 and QNX Momentics IDE 7.1, the first time you launch the IDE and go to
, the QNX SDP documentation is not visible. (Ref# J2873739)Workaround: Restart the IDE. At the second launch and beyond, the QNX SDP documentation appears.
- The IDE sometimes displays a read timeout error message when interacting with target processes that consume a lot of CPU time.
This is caused by a timeout of the socket used by the IDE to talk to the qconn target agent,
which is trying to get data from a busy process.
The situations when this occurs include but aren't necessarily limited to:
- Sending a signal to a process.
- Gathering profiling data from a process.
- Terminating a process from the launch bar.
Workaround: Several workarounds can be applied:
- Increase the qconn priority (e.g., to 21); its default priority is 10.
- Decrease the priority of the target process (e.g., to 9); this can be configured in the Arguments tab of the launch configuration, when launching the process.
- Configure the target to have or use 2 or more cores; this is especially recommended for QNX VM targets.
- Increase the qconn socket timeout, by editing the following line in qde.ini:
-Dcom.qnx.qconn.defaultReadTimeout=30000
This example makes the timeout 30 seconds, but this may not work depending on how badly the process starves the CPU.
The New Launch Target dialog shows target types that are inherited from the Workbench desktop environment and aren't meant to be used in the IDE. These target types will likely be removed in the future. The types with QNX in the title are meant for QNX Neutrino developers. (Ref# J2786811)
Using some combinations of keys in the Console view when it contains mkqnximage output causes an I/O error, making the view freeze. This issue occurs when attempting to copy and paste content with Ctrl-C, or attempting to pause all command output to the view with Ctrl-S. (Ref# J2805293)
Workaround: Use the IDE shortcut key to copy content. For instance, on Windows, it's Crtl-Shift-C. You can find the shortcut keys at
. Avoid Ctrl-S when there's mkqnximage output in the console; otherwise, this key combination should work.If the Console view freezes for whatever reason, you can open a new one with
.On macOS, the IDE doesn't automatically restart after you apply an update using the auto-update feature through
. (Ref# J2815021)Workaround: Manually restart the IDE.
For manually created launch configurations, the launch configuration dialog is missing the Delete button but the Restore Defaults button actually deletes the launch configuration. If you edit the launch configuration and click Restore Defaults in the bottom left area, the IDE asks you if you're sure you want to restore defaults and if you click Yes, it then deletes the launch configuration. (Ref# J2873573)
The auto-update feature for this release prompts you to restart the IDE, but the restart fails and may display an error dialog. (Ref# J2794115)
Workaround: Restart the IDE manually.
On Linux, many undefined symbol: menu_proxy_module_load messages might be displayed when you start the IDE from the command line. (Ref# J337353)
Workaround: Execute this command:
sudo apt-get install appmenu-gtk:i386
On Windows, if the IDE window spans two monitors, and you lock and then unlock your computer, the window is restored to be the size of one monitor. This is a general problem on Windows. (Ref# 28653)
When you do a build on a Windows host, stdout and stderr sometimes overlap, resulting in misleading error and warning messages. This is a general problem on Windows. (Ref# 15106)
Sometimes the IDE becomes unresponsive during indexing operations.
Workaround: Restart the IDE.
If you use Set Priority/Scheduling Algorithm in the Target Navigator to change a process's priority and scheduling algorithm, and then select this item again for the same process, the default settings might be displayed instead of the current ones. But, if you press OK, the settings aren't changed back to the defaults. (Ref# J537153)
The IDE no longer includes an Subversion plugin. You can install one such as Subversive or Subclipse.
The text in the IDE hover help is sometimes truncated or formatted incorrectly. For example, if you hover the pointer over the name of a library function that takes a function as a parameter, such as pthread_create() or InterruptAttach(), the function prototype in the hover help is truncated at the first closing bracket in the parameters list, which is the closing bracket for the function parameter, not the proper end of parameters list. (Ref# 259496, J393841, J929140)
Workaround: Look up the function in the QNX Neutrino C Library Reference.
We pre-index our online documentation, but the first time you search for anything in the IDE's Help system, it has to combine the indexes (and index any Eclipse documents that haven't been indexed). This should take less than a minute.
- You might see a message like this when you start the IDE:
Subscription License Expired - Your QNX License could not be obtained, some QNX functionality will be disabled.
This message appears only if QNX Software Systems has a contract with you to support server-based licenses. It indicates one of the following:
- You need to configure your license server.
- More users are trying to use the IDE at the same time than there are available licenses for.
(Ref# 51688, J236666)
The Eclipse editor doesn't behave correctly on very long lines (more than 4500 characters). At the end of a long line, the cursor doesn't position itself properly between characters, selections and changes are very slow, and the column number is reported incorrectly. (Ref# 29586, 21053; Eclipse-CDT PR 68116)
- If the IDE can't open the browser to display the documentation, it may give you an error message of:
An exception occurred while launching help. Refer to the log for more details.
It's possible the IDE couldn't find your default browser. Check the web browser listed in your preferences (see
) to make sure it's a browser that's installed on your system.If this doesn't fix the problem, check the log file; see
. If you've installed the Eclipse SDK, use the Error Log view. (Ref# 29971) - Context-sensitive help doesn't work. If press F1, you should get a list of relevant topics in the IDE Help.
When you click on a link, it incorrectly goes to a topic called Editors.
(Ref# J393737)
Workaround: Select
and use that dialog box in the Help landing page to search and read information in the Help. - If your development host has an installation of a previous SDK version supported by the IDE 7.1 (i.e., QNX SDP 7.0, 6.6, or 6.5.0 SP1),
parts of the legacy help are incorrectly shown alongside the new help in the IDE. For example, if you've installed QNX SDP 6.5.0 SP1,
under
Workaround: To view offline help for a previous QNX SDP version, use the IDE shipped with that version.
, you'll see the entire QNX SDP 7.1 help
but also parts of the 6.5.0 SP1 help, such as the QNX Momentics Phindows Connectivity Tool User's Guide.
(Ref# J2160532)
Ubuntu 20.04
The IDE windows containing check boxes do not display check marks. Check boxes that are affected by this have a boldened outline to determine which boxes are checked. (Ref# J2887865)
The Memory Analysis and Valgrind settings menus contain user interface errors, causing on-screen text to overlap . (Ref# J2887867)
The Heap Usage Trend chart in the Memory Analysis user interface displays incorrect information. (Ref# J2887988)
Application Profiler
- The Application Profiler can allocate CPU time to the wrong line if you're profiling code that has profiling and debugging
information, and if you linked against a static library that doesn't have profiling and debugging information.
(Ref# 21024)
Workaround: Build everything with debugging information, or use -gdwarf-2 instead of -gstabs.
System Information
-
Resizing the CPU Usage graph area in the System Resources view sometimes makes the graph show more than
100% CPU usage. This was seen when the target system was very busy; for example after enabling logging for all active processes.
(Ref# J441366)
Workaround: Don't resize the graph area.
System Profiler
- The parser used by the IDE to read kernel event log (.kev) files doesn't support
%Lf and %LF format conversions, meaning any long double data values might not be read properly
depending on your target architecture.
(Ref# J2747522)
Workaround: Use traceprinter to extract the necessary data from any .kev files that contain %Lf and %LF conversions.
Memory Analysis
- Disabling memory error-checking or memory tracing for an active Memory Analysis session doesn't work.
Suppose you configure a program to use Memory Analysis and check the Enable error detection box in the Memory Errors panel in the Memory tab of the launch configuration. If you then launch the program, open the resulting session (from the Analysis Sessions view), access the Settings tab, and uncheck the same box in the Memory Errors panel, the IDE continues to record memory error data in the Memory Problems view.
The same problem occurs if you uncheck Record memory allocation/deallocation events through the Memory Tracing panel for an active session (assuming you had checked this box in the launch configuration before launching the program).
(Ref# J583859)
- On Windows, in the Advanced Settings part of the Memory Analysis controls (which are found under the Tools tab of the
launch configuration), the default path name might start with a backslash. (Ref# J500345)
Workaround: Change the leading backslash to a forward slash.
- If you check Enable check on realloc()/free() arguments in the Memory Errors part of
Workaround: You should change this setting through the Tools tab in the launch configuration, under the Memory Errors panel within the Memory Analysis controls.
,
click Apply, close the window and then open it again, this setting is no longer enabled.
(Ref# J510803)
- If you make the period for performing memory snapshots too short, the Memory Events view might not show all allocations and
deallocations. (Ref# J577315)
Workaround:
- Run the program through the IDE with the Memory Analysis tool enabled in the launch configuration.
- When the program finishes, use the Target File System Navigator view to copy the /tmp/traces.rmat file from the target to the IDE workspace.
- In the QNX Analysis perspective, select to run the import wizard and import the traces.rmat file into a new Memory Analysis session.
When you request the Memory Analysis service to terminate, it might take longer than expected. (Ref# 46228)
In the QNX Analysis perspective, if a function causes a buffer overflow, memory leaks aren't detected correctly. (Ref# 42312)
You might see some allocations take place before your application's main() function starts. This is normal; some of the system libraries allocate space as they're initialized. (Ref# 29698)
The Memory Analysis tool changes the behavior of a program that uses fork. (Ref# 29032)
Workaround: If your program uses fork, you must disable the control thread (from the Launch Configuration, select
and disable Create control thread). Note that it's not possible to attach to this type of process because Memory Analysis needs to run a control thread to support process attachment.In the Settings tab of the Memory Analysis editor, the dropdown panels for adjusting configuration fields (Memory Errors, Memory Tracing, and Memory Snapshots) don't work. Even when the process is running, if you click the arrow to expand a panel, the arrow changes but no controls appear. (Ref# J1258690)
Workaround: Adjust the Memory Analysis settings through the launch configuration before starting the session. If you need to see the effects of different settings, run multiple sessions.
The first time you right-click an error listing in Memory Problems and choose Show Backtrace, if you then double-click a stack trace entry in Memory Backtrace, the IDE doesn't open the source code to the matching line. This problem is seen if you do these actions for the first time since starting the IDE (even if Memory Backtrace is open but not in focus within its display area) or since explicitly closing the view. (Ref# J443141)
If you click the Memory Backtrace tab to switch focus to that view, the double-click navigation feature works the first time you select an error in Memory Problems (and Memory Backtrace is updated with the stack traces).
Workaround: Double-click the error in the Memory Problems view to open the related source code.
C/C++ development
If you attempt to import a project from a previous QNX SDP version's workspace to a QNX SDP 7.1 workspace, you will be unable to build it due to there being no common build variants between the two versions. (Ref# J2887824)
Workaround: Add one or more variants by right-clicking the project and navigating to Configure > Add Variant, or navigate to Project > Properties on the menu bar and add variants through the QNX C/C++ Project Properties.
Special keys such as 'Enter', 'Backspace', or any 'Ctrl+' combinations cease to work after creating a new project. (Ref# J2887741)
Workaround: Switch focus from the editor, and return to the project.
- If you start a new IDE session with a new workspace, go to the C/C++ Projects perspective, add a target navigator, and then add
a valid target, the target is shown as available and its name is as expected, but you don't get the expansion button to display
the list of processes on the target.
(Ref# J572145)
Workaround: Click in another view, or switch to another perspective. When you return to the target navigator, the expansion button appears.
- If the makefile for a regular C++ make project uses implicit rules such as the following:
all : cc2 cc2 : cc2.o cc2.o : cc2.cpp
then the link stage doesn't work properly. (Ref# 62006)
Workaround: Use an explicit rule for linking:
cc2 : cc2.o $(CXX) -o cc2 cc2.o -lang-c++
- The IDE sometimes ignores an explicit build request for a project, such as those invoked by using the Build Project
action in the C/C++ Project view's right-click menu, if the project uses an externally built library.
(Ref# 20966)
Workaround: Use an explicit target in the make command.
- If you import a non-IDE project that uses managed recursive makefiles, the IDE incorrectly modifies the makefiles. The project
won't compile and you'll see errors about variables not being resolved.
(Ref# J1685684)
Workaround: Modify common.mk to include .qnx_internal.mk after all variable assignments. For example:
INSTALLDIR=$(firstword $(INSTALLDIR_$(OS)) usr/bin) LIBS += EGL GLESv2 screen m include $(MKFILES_ROOT)/qmacros.mk ifndef QNX_INTERNAL QNX_INTERNAL=$(PROJECT_ROOT)/.qnx_internal.mk endif include $(QNX_INTERNAL) include $(MKFILES_ROOT)/qtargets.mk
This issue does not apply to projects that use managed recursive makefiles but are created in the IDE.
Debugging
- A vague error message of No Inferior. is sometimes seen in the Console or
Debugger Console views when launching a program in Debug or Attach mode.
The debugging session seems unaffected.
(Ref# J2562144)
Workaround: Ignore this error message.
The parent process unexpectedly terminates when you select the same launch configuration to debug a child process. This happens if you follow the
Debugging a child process
instructions in the IDE User's Guide. In this setup, it's recommended to put a breakpoint in the parent right after the fork() call and put a line in the child, right after this call, to send a SIGSTOP signal to itself. But after the parent and the new child have stopped, if you select the Attach launch mode and the same launch configuration that you used to debug the parent, then select the child in the Select Process window and click OK, the parent process terminates. This prevents you from debugging the parent and child concurrently. (Ref# J2575687)Workaround: Select a different launch configuration for debugging the child. If necessary, copy the parent's launch configuration and rename it. The parent won't terminate when you attach another instance of the debugger to the child using the other configuration.
Watchpoints aren't supported for ARM. Although the IDE lets you create a watchpoint, it won't work correctly and could cause instability with your debugging session. (Ref# 12136, 259564, J463656)
The Modules view might not show the most recent state of loaded libraries during debugging. (Ref# J393844)
Workaround: To force it to update to the latest state, refresh the view by using
.The Modules view doesn't show information for the executable being debugged. (Ref# 259524, J393842)
Disconnecting from an executable while it's being debugged causes it to terminate. (Ref# 259773, J393846)
Workaround: Select
. Under Termination, clear the checkbox labeled Terminate GDB when last process exits.
QNX Virtual Machine targets
- If you delete a QNX VM from the Project Explorer view, the IDE deletes the files in the
output and local directories of the VM's project, even if you leave
Delete project contents on disk unchecked.
(Ref# J2809875)
Workaround: Delete the project from the Target Navigator view. The IDE uses a different dialog and the setting for deleting project contents works.
Unsupported C++17 features
- Fold expressions:
https://bugs.eclipse.org/bugs/show_bug.cgi?id=508653 - Class Template Argument Deduction:
https://bugs.eclipse.org/bugs/show_bug.cgi?id=520722 and https://bugs.eclipse.org/bugs/show_bug.cgi?id=541239 - [[nodiscard]] and [[maybe_unused]] attributes:
https://bugs.eclipse.org/bugs/show_bug.cgi?id=534420
Unsupported C11 features
- Syntax error at noreturn/_Noreturn:
https://bugs.eclipse.org/bugs/show_bug.cgi?id=386402 - Support for type-generic expressions:
https://bugs.eclipse.org/bugs/show_bug.cgi?id=445296 - Support for gcc's __auto_type:
https://bugs.eclipse.org/bugs/show_bug.cgi?id=468180 - _Static_assert() in file scope incorrectly flagged as syntax error:
https://bugs.eclipse.org/bugs/show_bug.cgi?id=475089
Valgrind
- When running Valgrind (either through the Check launch option or through the Launch Configuration editor),
the Valgrind session can fail and find no problems, or if it does find problems (e.g., the program crashes), it can't find
the symbols for the stack trace. In both cases, the following message appears in the Valgrind log:
--2756610-- WARNING: Serious error when reading debug info --2756610-- When reading debug info from /proc/boot/ldqnx-64.so.2: --2756610-- Can't make sense of .plt section mapping --2756610-- WARNING: Serious error when reading debug info --2756610-- When reading debug info from /proc/boot/libc.so.5: --2756610-- Can't make sense of .plt section mapping
(Ref# J2874004)Workaround:
- Edit the launch configuration you're using to launch the Valgrind session, by clicking the gear icon in the launch bar or selecting the configuration via the menu option.
- On the Upload tab, deselect the Strip debug information before uploading checkbox.
- On the same tab, add libc.so.5 to the list of files for upload, and deselect the strip option for this library. For any other libraries for which you want Valgrind to have symbols, you need to add them to the list and select this option as well.
- On the Check tab (or in the Valgrind section of the Tools tab if you accessed the launch configuration via the menu option), go to the Symbols sub-tab and deselect Start symbol server.
- Apply your changes by clicking OK or Apply.
Starting the IDE
To start the IDE:
- on Windows, choose from the Start menu, or use the desktop icon
- on macOS, click the icon labeled QNX Momentics IDE from the launchpad
- on Linux, run IDE_base_dir/qde,
where IDE_base_dir is where you installed the IDE package
This path is probably different from that for QNX SDP 7.0. In QNX SDP 7.0, the default path is ~/qnx/qnxmomentics/qde, but in SDP 7.1, it's ~/qnxmomenticside/qde.
Getting started with the documentation
The IDE's help system contains an extensive set of HTML documentation.
To access the help system, start the IDE, then go to
. The left-side navigation in the help window contains links to the various HTML booksets that accompany the Eclipse platform and your QNX SDP installation. Documentation about the IDE itself is provided in the QNX Momentics IDE User's Guide.Technical support
For information about technical support for any QNX product, see Overview in the Developers or Support area on our website (www.qnx.com). You'll find a wide range of support options, including community forums.