Skip to main content

Notice: this Wiki will be going read only early in 2024 and edits will no longer be possible. Please see: https://gitlab.eclipse.org/eclipsefdn/helpdesk/-/wikis/Wiki-shutdown-plan for the plan.

Jump to: navigation, search

Difference between revisions of "CDT/User/NewIn81"

< CDT
(Codan => "New Codan checkers" was added)
(Show the actual variable type based on RTTI)
 
(51 intermediate revisions by 5 users not shown)
Line 1: Line 1:
 +
== Editor  ==
 +
 +
=== Pin the Call Hierarchy View  ===
 +
 +
The Call Hierarchy View can now be pinned which enables the user to open multiple Call Hierarchy views at the same time.
 +
 +
[[Image:Pin view call hierarchy.png]]
 +
 +
This feature was completed through [http://bugs.eclipse.org/342498 Bug 342498]
 +
 +
<br>
 +
 +
=== Filtering in Outline Views ===
 +
 +
There are a few additional filtering options added to Project Explorer and Outline View:
 +
 +
[[Image:anonymous.png]]
 +
 +
<br>
 +
 +
=== Mouse Hover for 'auto' Keyword ===
 +
 +
Mouse hover for '''auto''' keyword shows deduced type:
 +
 +
[[Image:Auto_hover.png]]
 +
 +
<br>
 +
 +
== Refactoring ==
 +
 +
* Code added or changed during refactoring is formatted according to user preferences.
 +
* New code style preferences for refactoring:
 +
 +
[[Image:Code_style.png]]
 +
 +
<br>
 +
 +
== Indexing ==
 +
 +
* Support for multiple variants of the same header file in the index ([http://bugs.eclipse.org/197989 Bug 197989]).
 +
* The ''C/C++ > Indexer > Index unused headers'' global preference is turned on by default ([http://bugs.eclipse.org/377992 Bug 377992]).
 +
* New command: ''Index > Re-resolve Unresolved Includes''
 +
 +
<br>
 +
 +
== Code Analysis  ==
 +
 +
=== External-tool-based Checkers  ===
 +
 +
The main motivation for integrating Codan with external tools is to enjoy all the code checks from mature tools without leaving Eclipse. With the new infrastructure:
 +
 +
#External tools can be configured using Codan’s preference page
 +
#External tools are invoked automatically when a C/C++ file is saved
 +
#The output of these tools can be displayed as editor markers
 +
 +
The new infrastructure includes a sample checker that invokes [http://cppcheck.sourceforge.net/ Cppcheck].
 +
 +
[[Image:Cppcheck-config-1.png]]
 +
 +
A more detailed configuration dialog can be found by pressing the “Customize Selected…” button:
 +
 +
[[Image:Cppcheck-config-2.png]]
 +
 +
Users&nbsp;can specify the path of the Cppcheck executable and the arguments to pass to Cppcheck.
 +
 +
A demo of this checker can be found [http://www.youtube.com/watch?feature=player_embedded&v=_OKpQ-W09MU here].
 +
 +
The new infrastructure makes it very easy to write your own external-tool-based checker. In the simplest case, you will need to:
 +
 +
*Extend the abstract class AbstractExternalToolBasedChecker.
 +
*Provide the name of your tool (e.g. "Cppcheck".)
 +
*Provide default values for the path of the executable and arguments to pass to the executable.
 +
*Register a IErrorParser in the extension point "org.eclipse.cdt.core.ErrorParser" with context "codan". This parser parses the output of the external tool, line by line. It’s up to you to decide what to do with the output (e.g. create error markers.)
 +
 +
Please take a look at the source code of CppcheckChecker for details.
 +
 +
In the case of tools that are complex to set up, the new infrastructure is extremely flexible and configurable. It allows you to pretty much to configure every single aspect of the checker, from the files that the tool can check to the way to feed arguments to the tool.
 +
 +
=== New Codan checkers  ===
 +
 +
* Class members should be properly initialized ([http://bugs.eclipse.org/339795 Bug 339795]). Example:
 +
    struct Demo {
 +
        Demo() {}  // Warning: Member 'field' was not initialized in this constructor
 +
   
 +
        int field;
 +
    };
 +
 +
<br>
 +
 +
== Build ==
 +
 +
=== Scanner Discovery  ===
 +
Scanner Discovery has been reworked in this release. The main purpose of Scanner Discovery was always to supply Include Paths and Macros for indexer and build. Now these are supplied by Language Settings Providers. See more at [http://wiki.eclipse.org/CDT/ScannerDiscovery61 Scanner Discovery Wiki]
 +
 +
[[Image:sd90Entries.png]]
 +
 +
[[Image:sd90Providers.png]]
 +
 +
<br>
 +
 +
=== Mac OSX Frameworks ===
 +
The new scanner discovery makes it possible to discover and use with indexer Mac OSX Frameworks folders, see [https://bugs.eclipse.org/bugs/show_bug.cgi?id=69529 bug 69529]
 +
 +
[[Image:Frameworks.png]]
 +
 +
<br>
 +
 +
=== Console ===
 +
Build console marks more prominently start and end of build and reports elapsed time:
 +
 +
[[Image:Console81.png]]
 +
 +
<br>
 +
 +
=== Parallel Build ===
 +
Parallel Build was remodelled, see [https://bugs.eclipse.org/bugs/show_bug.cgi?id=259768 bug 259768]:
 +
 +
[[Image:ParallelBuild.png]]
 +
 +
<br>
 +
 +
=== Managed Build ===
 +
A few additional options to select from added to managed build, [https://bugs.eclipse.org/bugs/show_bug.cgi?id=365461 bug 365461].
 +
 +
[[Image:ExtraWarnings.png]]
 +
 +
<br>
 +
 
== Debug  ==
 
== Debug  ==
  
Line 13: Line 141:
 
Note that the Multicore Visualizer will only work using a Linux target; it will not work debugging on a Windows or Mac target. This is a current limitation of GDB which does not provide information about cores, for those targets (at writing, GDB is at version 7.4).  
 
Note that the Multicore Visualizer will only work using a Linux target; it will not work debugging on a Windows or Mac target. This is a current limitation of GDB which does not provide information about cores, for those targets (at writing, GDB is at version 7.4).  
  
This feature was completed on February 10th, 2012. For details see [http://bugs.eclipse.org/335027 Bug 335027]  
+
This feature was completed through [http://bugs.eclipse.org/335027 Bug 335027]  
  
 
The Multicore Visualizer is an optional feature of the CDT and must be installed manually. The feature is called "C/C++ Multicore Visualizer". Installing it will install both the Multicore Visualizer and the Visualizer Framework. If you only want to install the Visualizer Framework (to build your own visualizer), you can install that feature by itself; it is called "CDT Visualizer Framework".  Once the features are installed, you can access the Multicore Visualizer (or any other visualizer) by opening the view called "Visualizer".
 
The Multicore Visualizer is an optional feature of the CDT and must be installed manually. The feature is called "C/C++ Multicore Visualizer". Installing it will install both the Multicore Visualizer and the Visualizer Framework. If you only want to install the Visualizer Framework (to build your own visualizer), you can install that feature by itself; it is called "CDT Visualizer Framework".  Once the features are installed, you can access the Multicore Visualizer (or any other visualizer) by opening the view called "Visualizer".
Line 23: Line 151:
 
[[Image:LargeArray.png]]  
 
[[Image:LargeArray.png]]  
  
This feature was completed on January 26th, 2012 as part of [http://bugs.eclipse.org/365541 Bug 365541]  
+
This feature was completed through [http://bugs.eclipse.org/365541 Bug 365541]  
  
 
=== Edit Breakpoint on Create  ===
 
=== Edit Breakpoint on Create  ===
Line 88: Line 216:
 
[[Image:CharsetDebug.png]]  
 
[[Image:CharsetDebug.png]]  
  
Note that this feature requires GDB version 7.0 or later. This feature was completed on March 7th, 2012 as part of [http://bugs.eclipse.org/307311 Bug 307311], [http://bugs.eclipse.org/367456 Bug 367456] and [http://bugs.eclipse.org/370462 Bug 370462].  
+
Note that this feature requires GDB version 7.0 or later. This feature was completed through [http://bugs.eclipse.org/307311 Bug 307311], [http://bugs.eclipse.org/367456 Bug 367456] and [http://bugs.eclipse.org/370462 Bug 370462].  
  
 
=== Timeout support for GDB commands in DSF/GDB  ===
 
=== Timeout support for GDB commands in DSF/GDB  ===
  
Timeouts for GDB commands are now supported in DSF/GDB. The feature is optional and disabled by default. The timeout values are configurable. When the feature is enabled, custom values can be assigned to some commands, all other commands use the default value. This feature was completed on April 17th, 2012 as part of [https://bugs.eclipse.org/bugs/show_bug.cgi?id=361934 Bug 361934].  
+
Timeouts for GDB commands are now supported in DSF/GDB. The feature is optional and disabled by default. The timeout values are configurable. When the feature is enabled, custom values can be assigned to some commands, all other commands use the default value. This feature was completed through [https://bugs.eclipse.org/bugs/show_bug.cgi?id=361934 Bug 361934].  
  
 
[[Image:TimeoutPreferences.png]]
 
[[Image:TimeoutPreferences.png]]
Line 120: Line 248:
 
# Thread 5 is selected but running, so it will be ignored.
 
# Thread 5 is selected but running, so it will be ignored.
  
This feature was completed April 25th, 2012 as part of [http://bugs.eclipse.org/330974 Bug 330974]
+
This feature was completed through [http://bugs.eclipse.org/330974 Bug 330974]
  
 
=== Show only suspended threads in Debug view ===
 
=== Show only suspended threads in Debug view ===
Line 136: Line 264:
 
[[Image:CDT_Debug_HidingPref.png]]
 
[[Image:CDT_Debug_HidingPref.png]]
  
This feature was completed May 4th, 2012 as part of [http://bugs.eclipse.org/375585 Bug 375585]  
+
This feature was completed through [http://bugs.eclipse.org/375585 Bug 375585]  
  
 
=== Multi-select attach dialog  ===
 
=== Multi-select attach dialog  ===
Line 144: Line 272:
 
[[Image:Multiselect.png]]  
 
[[Image:Multiselect.png]]  
  
This feature was completed June 30th, 2011 as part of [http://bugs.eclipse.org/293679 Bug 293679]  
+
This feature was completed through [http://bugs.eclipse.org/293679 Bug 293679]  
  
 
=== Default Postmortem file location  ===
 
=== Default Postmortem file location  ===
Line 156: Line 284:
 
[[Image:CorePath.png]]  
 
[[Image:CorePath.png]]  
  
This feature was completed on February 17th, 2012 as part of [http://bugs.eclipse.org/362039 Bug 362039]  
+
This feature was completed through [http://bugs.eclipse.org/362039 Bug 362039]  
  
 
=== Support for Fast Tracepoints  ===
 
=== Support for Fast Tracepoints  ===
Line 170: Line 298:
 
[[Image:FastTracepointSelection.png]]  
 
[[Image:FastTracepointSelection.png]]  
  
This feature was completed July 20th, 2011 as part of [http://bugs.eclipse.org/346320 Bug 346320]  
+
This feature was completed through [http://bugs.eclipse.org/346320 Bug 346320]  
  
 
=== Enhancements to Tracepoints  ===
 
=== Enhancements to Tracepoints  ===
Line 182: Line 310:
 
**On 32-bit x86-architectures, fast tracepoints can now be placed at locations with 4-byte instructions, when they were previously limited to locations with instructions of 5 bytes or longer.  
 
**On 32-bit x86-architectures, fast tracepoints can now be placed at locations with 4-byte instructions, when they were previously limited to locations with instructions of 5 bytes or longer.  
 
*Tracepoint collecting of Strings  
 
*Tracepoint collecting of Strings  
**The tracepoint Collect action now has an option to request to collect character pointers as strings. It tells GDB to effectively dereference pointer-to-character types and collect the bytes of memory up to a zero byte. An optional integer limit sets a bound on the number of bytes that will be collected.  This feature was completed on April 20th, 2012. For details see [http://bugs.eclipse.org/373707 Bug 373707]  
+
**The tracepoint Collect action now has an option to request to collect character pointers as strings. It tells GDB to effectively dereference pointer-to-character types and collect the bytes of memory up to a zero byte. An optional integer limit sets a bound on the number of bytes that will be collected.  This feature was completed through [http://bugs.eclipse.org/373707 Bug 373707]  
  
  
Line 189: Line 317:
 
=== Show the actual variable type based on RTTI ===
 
=== Show the actual variable type based on RTTI ===
  
With GDB 7.5 or higher CDT could show the actual variable type (not the declared one) in Variables and Expressions Views. Consider the following example:
+
With GDB 7.5.1 or higher CDT could show the actual variable type (not the declared one) in Variables and Expressions Views. Consider the following example:
     struct Interface {
+
     struct SuperInterface {
         virtual ~Interface() {}  // enable RTTI for Interface class
+
         virtual ~SuperInterface() {}  // enable RTTI for Interface class
 
     };
 
     };
 
      
 
      
     struct Implementation : public Interface {
+
     struct TheImplementation : public SuperInterface {
         Implementation(int _v1, float _v2)
+
         TheImplementation(int _v1, float _v2)
 
             : someField(_v1), anotherField(_v2) {}
 
             : someField(_v1), anotherField(_v2) {}
 
      
 
      
Line 204: Line 332:
 
      
 
      
 
     int main() {
 
     int main() {
         Interface* i = new Implementation(42, 4.2);
+
         SuperInterface* i = new TheImplementation(42, 4.2);
 
         return 0;    // [Launch debug until here]
 
         return 0;    // [Launch debug until here]
 
     }
 
     }
Line 212: Line 340:
 
[[Image:CDT_Debug_VariableTypeBasedOnRtti.png]]
 
[[Image:CDT_Debug_VariableTypeBasedOnRtti.png]]
  
This feature is enabled by default and will work if you have the proper GDB version (7.5 or higher), however it could be turned off in preferences:
+
This feature is enabled by default and will work if you have the proper GDB version (7.5.1 or higher) and RTTI generation enabled (enabled by default in gcc), however it could be turned off in preferences:
  
 
[[Image:CDT_Debug_VariableTypeBasedOnRttiPref.png]]
 
[[Image:CDT_Debug_VariableTypeBasedOnRttiPref.png]]
  
This feature was completed on May 5th, 2012 as part of [http://bugs.eclipse.org/376901 Bug 376901] and [http://bugs.eclipse.org/377536 Bug 377536].
+
This feature was completed through [http://bugs.eclipse.org/376901 Bug 376901] and [http://bugs.eclipse.org/377536 Bug 377536].  Note that a bug was found in GDB 7.5 which could affect the display of other variables or registers.  GDB 7.5.1 or higher should be used with this feature.
  
=== Support for octal number format in CDI ===
+
=== Build variables support in "C/C++ Application" field of launch configuration ===
  
CDI now also supports to use the octal number format to display the contents of variables, expressions and registers. You can select the octal number format within the Debug preferences. This feature was completed on March 7th, 2012 as part of [http://bugs.eclipse.org/370462 Bug 370462].
+
[[Image:CDT_Debug_VarsInAppplicationField.png]]
  
== Indexing ==
+
There are also a few new CDT-specific build variables:
 +
* config_name - the name of the active configuration for the project specified as an argument;
 +
* config_description - the description of the active configuration for the project specified as an argument;
  
* Support for multiple variants of the same header file in the index ([http://bugs.eclipse.org/197989 Bug 197989]).
+
This feature was completed through [http://bugs.eclipse.org/180256 Bug 180256] and [http://bugs.eclipse.org/375814 Bug 375814].
* The "C/C++ --> Indexer --> Index unused headers" global preference is turned on by default ([http://bugs.eclipse.org/377992 Bug 377992]).
+
  
== Editor ==
+
=== Support for octal number format in CDI ===
  
=== Pin the Call Hierarchy View  ===
+
CDI now also supports to use the octal number format to display the contents of variables, expressions and registers. You can select the octal number format within the Debug preferences. This feature was completed through [http://bugs.eclipse.org/370462 Bug 370462].
 
+
The Call Hierarchy View can now be pinned which enables the user to open multiple Call Hierarchy views at the same time.  
+
 
+
[[Image:Pin view call hierarchy.png]]
+
 
+
This feature was completed November 12th, 2011 as part of [http://bugs.eclipse.org/342498 Bug 342498]  
+
 
+
<br>
+
 
+
== Codan  ==
+
 
+
=== External-tool-based Checkers  ===
+
 
+
The main motivation for integrating Codan with external tools is to enjoy all the code checks from mature tools without leaving Eclipse. With the new infrastructure:
+
 
+
#External tools can be configured using Codan’s preference page
+
#External tools are invoked automatically when a C/C++ file is saved
+
#The output of these tools can be displayed as editor markers
+
 
+
The new infrastructure includes a checker that invokes [http://cppcheck.sourceforge.net/ Cppcheck]. This checker is disabled by default but it can be easily enabled and configured in the Codan preference page.
+
 
+
[[Image:Cppcheck-config-1.png]]
+
 
+
A more detailed configuration dialog can be found by pressing the “Customize Selected…” button:
+
 
+
[[Image:Cppcheck-config-2.png]]
+
 
+
Users&nbsp;can specify the path of the Cppcheck executable, the arguments to pass and whether Cppcheck’s output should be displayed in the console.
+
 
+
A demo of this checker can be found [http://www.youtube.com/watch?feature=player_embedded&v=_OKpQ-W09MU here].
+
 
+
The new infrastructure makes it very easy to write your own external-tool-based checker. In the simplest case, you will need to:
+
 
+
*Extend the abstract class AbstractCxxExternalToolBasedChecker.
+
*Provide the name of your tool (e.g. "Cppcheck".)
+
*Provide default values for the path of the executable, arguments to pass and whether the output of the tool should be displayed in the console.
+
*Provide one or more implementations of AbstractOutputParser. They will parse the output of the external tool, line by line. It’s up to you to decide what to do with the output (e.g. create error markers.)
+
 
+
In the case of tools that are complex to set up, the new infrastructure is extremely flexible and configurable. It allows you to pretty much to configure every single aspect of the checker, from the files that the tool can check to the way to feed arguments to the tool.
+
  
 
<br>
 
<br>
 
=== New Codan checkers  ===
 
 
* Class members should be properly initialized. Example:
 
    struct Demo {
 
        Demo() {}  // Warning: Member 'field' was not initialized in this constructor
 
   
 
        int field;
 
    };
 
  
 
== C/C++ Unit Testing Support  ==
 
== C/C++ Unit Testing Support  ==
Line 298: Line 379:
 
*tests hierarchy filters (show only failed tests);
 
*tests hierarchy filters (show only failed tests);
 
*running & rerunning only selected tests (not a whole test module);
 
*running & rerunning only selected tests (not a whole test module);
*test Messages filters (by severity);
+
*start a debug session for the whole test module or only the selected tests;
 +
*test messages filters (by severity);
 
*test runs history;
 
*test runs history;
 
*the list of provided tests runners may be easily extended writing a new Tests Runner Plugin.
 
*the list of provided tests runners may be easily extended writing a new Tests Runner Plugin.
  
The known problems and limitation can be found in the [http://wiki.eclipse.org/CDT/User/FAQ#C.2FC.2B.2B_Unit_Testing_Support corresponding section of CDT FAQ].
+
The HOWTO, known problems and limitation can be found in the [http://wiki.eclipse.org/CDT/User/FAQ#C.2FC.2B.2B_Unit_Testing_Support corresponding section of CDT FAQ].
 +
 
 +
This feature was completed through [http://bugs.eclipse.org/210366 Bug 210366].
 +
 
 +
 
 +
== Bugs Fixed in this Release  ==
  
This feature was completed April 18th, 2012 as part of [http://bugs.eclipse.org/210366 Bug 210366].
+
[https://bugs.eclipse.org/bugs/buglist.cgi?query_format=advanced;bug_status=RESOLVED;bug_status=VERIFIED;bug_status=CLOSED;resolution=FIXED;target_milestone=8.0.1;target_milestone=8.0.2;target_milestone=8.0.3;target_milestone=8.1;product=CDT;classification=Tools Fixed in CDT 8.1]

Latest revision as of 10:26, 8 January 2015

Editor

Pin the Call Hierarchy View

The Call Hierarchy View can now be pinned which enables the user to open multiple Call Hierarchy views at the same time.

Pin view call hierarchy.png

This feature was completed through Bug 342498


Filtering in Outline Views

There are a few additional filtering options added to Project Explorer and Outline View:

Anonymous.png


Mouse Hover for 'auto' Keyword

Mouse hover for auto keyword shows deduced type:

Auto hover.png


Refactoring

  • Code added or changed during refactoring is formatted according to user preferences.
  • New code style preferences for refactoring:

Code style.png


Indexing

  • Support for multiple variants of the same header file in the index (Bug 197989).
  • The C/C++ > Indexer > Index unused headers global preference is turned on by default (Bug 377992).
  • New command: Index > Re-resolve Unresolved Includes


Code Analysis

External-tool-based Checkers

The main motivation for integrating Codan with external tools is to enjoy all the code checks from mature tools without leaving Eclipse. With the new infrastructure:

  1. External tools can be configured using Codan’s preference page
  2. External tools are invoked automatically when a C/C++ file is saved
  3. The output of these tools can be displayed as editor markers

The new infrastructure includes a sample checker that invokes Cppcheck.

Cppcheck-config-1.png

A more detailed configuration dialog can be found by pressing the “Customize Selected…” button:

Cppcheck-config-2.png

Users can specify the path of the Cppcheck executable and the arguments to pass to Cppcheck.

A demo of this checker can be found here.

The new infrastructure makes it very easy to write your own external-tool-based checker. In the simplest case, you will need to:

  • Extend the abstract class AbstractExternalToolBasedChecker.
  • Provide the name of your tool (e.g. "Cppcheck".)
  • Provide default values for the path of the executable and arguments to pass to the executable.
  • Register a IErrorParser in the extension point "org.eclipse.cdt.core.ErrorParser" with context "codan". This parser parses the output of the external tool, line by line. It’s up to you to decide what to do with the output (e.g. create error markers.)

Please take a look at the source code of CppcheckChecker for details.

In the case of tools that are complex to set up, the new infrastructure is extremely flexible and configurable. It allows you to pretty much to configure every single aspect of the checker, from the files that the tool can check to the way to feed arguments to the tool.

New Codan checkers

  • Class members should be properly initialized (Bug 339795). Example:
   struct Demo {
       Demo() {}   // Warning: Member 'field' was not initialized in this constructor 
   	
       int field;
   };


Build

Scanner Discovery

Scanner Discovery has been reworked in this release. The main purpose of Scanner Discovery was always to supply Include Paths and Macros for indexer and build. Now these are supplied by Language Settings Providers. See more at Scanner Discovery Wiki

Sd90Entries.png

Sd90Providers.png


Mac OSX Frameworks

The new scanner discovery makes it possible to discover and use with indexer Mac OSX Frameworks folders, see bug 69529

Frameworks.png


Console

Build console marks more prominently start and end of build and reports elapsed time:

Console81.png


Parallel Build

Parallel Build was remodelled, see bug 259768:

ParallelBuild.png


Managed Build

A few additional options to select from added to managed build, bug 365461.

ExtraWarnings.png


Debug

Multicore Visualizer View

CDT now optionally includes a Multicore Visualizer View. This view displays a graphical representation of the state of the current application. It allows one to click- and drag-select groups of processes/threads, and apply debugging commands to them directly from the visualizer. Selections made in the Visualizer View are reflected automatically in the Debug View, and vice versa. The Multicore Visualizer View is designed to scale to large numbers of cpus and cores-per-cpu on both current and future multicore hardware.

The Multicore Visualizer View is meant to serve as a high-level visual overview of the current application, and can be used in tandem with the Debug View, which provides more in-depth detail.

The Multicore Visualizer View is just one example of a visualizer based on the underlying Visualizer Framework plugin. This provides a pluggable, extensible platform for developing visual development tools of this kind.

VisualizerSnapshot.png

Note that the Multicore Visualizer will only work using a Linux target; it will not work debugging on a Windows or Mac target. This is a current limitation of GDB which does not provide information about cores, for those targets (at writing, GDB is at version 7.4).

This feature was completed through Bug 335027

The Multicore Visualizer is an optional feature of the CDT and must be installed manually. The feature is called "C/C++ Multicore Visualizer". Installing it will install both the Multicore Visualizer and the Visualizer Framework. If you only want to install the Visualizer Framework (to build your own visualizer), you can install that feature by itself; it is called "CDT Visualizer Framework". Once the features are installed, you can access the Multicore Visualizer (or any other visualizer) by opening the view called "Visualizer".

Partitioning of large arrays

CDT now displays large arrays as collections of partitions.

LargeArray.png

This feature was completed through Bug 365541

Edit Breakpoint on Create

It is no longer necessary to first create a CDT breakpoint, then edit its properties. Properties such as enabled, ignore count, condition, temporary, can be set while creating the breakpoint.

There are several methods to open the properties dialog before creating the breakpoint:

  • Add Breakpoint action.
    1. In the editor or the disassembly view, bring up the popup menu on the gutter.
    2. Select the Add Breakpoint... menu item.
    3. This brings up the breakpoint properties dialog for a line breakpoint pre-filled with the breakpoints location.
  • Control-Double Click
    1. Hold the Control key while double-clicking on the editor gutter.
    2. This brings up the breakpoint properties dialog for a line breakpoint pre-filled with the breakpoints location.
  • Control key with Toggle Method Breakpoint
    1. Open the editor's Outline view.
    2. Right-click on a method to bring up the popup menu.
    3. Hold the control key while selecting the Toggle Method Breakpoint action.
    4. This brings up the function breakpoint dialog pre-filled with the method name.
  • Add Watchpoint (C/C++)
    1. In the Breakpoints view, open the view menu.
    2. Select the Add Watchpoint (C/C++)... action.
    3. This brings up the watchpoint properties dialog.
    4. User must enter the watchpoint expression.
  • Add Function Breakpoint (C/C++)
    1. In the Breakpoints view, open the view menu.
    2. Select the Add Function Breakpoint (C/C++)... action.
    3. This brings up the function breakpoint properties dialog.
    4. User must enter the function expression.


Cdt n and n 8 1-add breakpoint dialog.png

Image: The breakpoint properties dialog for a line breakpoint about to be created.

Breakpoint Toggle Short-Cuts

The Toggle Breakpoint action in the editor and disassembly view menu now supports new behaviors when used with modifier keys:

  • Hold the Shift key while double-clicking on an existing breakpoint in order to enable or disable the breakpoint.
  • Hold the Control key while double-clicking on an existing breakpoint in order to bring up the breakpoint properties dialog to edit the existing breakpoint.
  • Hold the Control key while double-clicking on a location with no breakpoints, in order to bring up the breakpoint properties dialog to create a new breakpoint.


Cdt n and n 8 1-editor gutter menu.png

Image:The editor gutter popup menu with the hints for the new accelerators.

Function Breakpoint Manual Entry

There is a new option for creating a function breakpoint:

  1. Open the Breakpoints view menu.
  2. Select Add Function Breakpoint C/C++.
  3. Fill in the function name or expression and select OK to create breakpoint.

Advanced character encoding support

CDT now supports the handling of different character encodings for strings and wide character strings while debugging. This includes full support for Unicode encodings and many other popular encodings as well. You can select the character and wide character encoding within the Debug preferences.

DebugPreferences.png

CDT will then correctly display strings according to the selected encoding while debugging.

CharsetDebug.png

Note that this feature requires GDB version 7.0 or later. This feature was completed through Bug 307311, Bug 367456 and Bug 370462.

Timeout support for GDB commands in DSF/GDB

Timeouts for GDB commands are now supported in DSF/GDB. The feature is optional and disabled by default. The timeout values are configurable. When the feature is enabled, custom values can be assigned to some commands, all other commands use the default value. This feature was completed through Bug 361934.

TimeoutPreferences.png

TimeoutAdvanced.png

Multi-select Resume/Suspend operations

CDT now allows to perform a Resume or Suspend operation on multiple selections of the same debug session. Because such a concept only adds value in a Non-Stop debug session, it is only supported in such a session (see Non-Stop Debugging). The behavior of a multi-selection Resume/Suspend is as follows:

  • Any selected stack frames implies a selection of their corresponding thread.
  • If one or more threads are selected (not processes) and the resume/suspend operation is triggered, each selected thread on which the operation is currently valid will be resumed/suspended.
  • If one or more processes are selected (not threads) and the resume/suspend operation is triggered, each selected process will be resumed/suspended. Resuming/suspending a process implies resuming/suspending each one of its threads on which the operation is currently valid.
  • If both thread(s) and process(es) are selected, and the resume/suspend operation is triggered, each selected process will be resumed/suspended, and each selected thread which is not part of any selected process will be resumed/suspended. The idea is that if a process is being resumed/suspended, each of its threads will be automatically resumed/suspended, and therefore, should not be resumed/suspended a second time because it is also selected.

As hinted above, CDT takes a permissive approach to multi-select resume/suspend. This means that if a multi-selection includes both stopped and running threads, a resume operation is still allowed, and only the suspended threads will be resumed; similarly, on such a multi-selection, a suspend operation is allowed, and only the running threads will be suspended.

Example

MultiSelectRunControl.png

In the above screenshot if the user were to press the Resume button with the current multi-selection the following would happen:

  1. The Consumer process node is selected, therefore the entire process will be resumed. This means that the suspended threads 7 and 9 will be resumed, while threads 6, 8 and 10 will be ignored, as they are already running.
  2. Note that the fact that threads 9 and 10 are selected is ignored, as those threads are part of the selected Consumer process, which will be resumed.
  3. Stack frames doWork() and work() are selected and belong to thread 4, which becomes implicitly selected in their place. Thread 4 will therefore be resumed.
  4. Thread 2 is selected and suspended, and will be resumed.
  5. Thread 5 is selected but running, so it will be ignored.

This feature was completed through Bug 330974

Show only suspended threads in Debug view

CDT now has an global preference that allows to only show the suspended threads within the Debug view. When dealing with a large number of threads, a user is typically interested by the threads that are being inspected (suspended ones) and does not care about the running ones. Using this preference, all running threads will not be shown in the Debug view. Note that when a thread is stepping it will remain visible, although it is technically running. The process element of the Debug view will show how many threads are currently being filtered from view.

The below example shows the exact same debugging session. The first screenshot only shows suspended threads, while the second shows all threads.

CDT Debug WithHiding.png

CDT Debug NoHiding.png

Below shows how to access the preference, which is disabled by default.

CDT Debug HidingPref.png

This feature was completed through Bug 375585

Multi-select attach dialog

CDT now allows selecting more than one process to attach to in a single user operation. The bottom pane is used to see which processes have been selected. If multi-process debugging is not supported with your debug session (needs GDB >= 7.2 and NonStop enabled), only the first process will be attached to.

Multiselect.png

This feature was completed through Bug 293679

Default Postmortem file location

CDT now allows the user to specify a default directory for the location of core files for a postmortem launch when the prompt is triggered. Since a postmortem launch can easily be re-used for different core files of the same binary, this feature helps reduce the amount of navigation needed to select a core file. Note that specifying the actual core file is still supported, as well as leaving the entire field blank, which will also trigger the prompt, but use the default directory for its starting location.

Note that this 'core file' field supports the use of variables such as ${workspace_loc}.

This feature applies to both core files and trace files.

CorePath.png

This feature was completed through Bug 362039

Support for Fast Tracepoints

CDT now allows the user of fast tracepoints, as supported by GDB. Fast tracepoints use an instruction jump instead of a trap for efficiency. Fast tracepoint need a minimum of space to be inserted in the program and therefore, may fail to be set at certain locations. For fast tracepoints to work, a special library called the in-process agent (IPA), must be loaded in the inferior process. This library is built and distributed as an integral part of gdbserver. Please see the GDB documentation for more details.

The user can select between three tracepoint modes in the launch:

  1. Fast: Only use fast tracepoints. No tracepoint will be planted if a fast tracepoint cannot be used.
  2. Normal: Only use normal tracepoints.
  3. Automatic: Attempt to use fast tracepoints. If a fast tracepoint cannot be used, automatically use a normal tracepoint.

FastTracepointSelection.png

This feature was completed through Bug 346320

Enhancements to Tracepoints

With the use of GDB 7.4, some new features are available within Eclipse.

  • Live enable/disable of C/C++ Tracepoints
    • Tracepoints can now be enabled and disabled at any time after a trace experiment has been started, and will immediately take effect within the ongoing experiment.
    • Note: Although GDB 7.4 seems to allow a tracepoint to be created during a trace experiment and will add it to the ongoing experiment, this behavior seems to have some issues. One of which is that deleting a tracepoint during an experiment will not remove that tracepoint from the ongoing experiment. Until this is fixed in GDB, it is recommended that the user stick to enable/disable operations during a tracing experiment.
  • Smaller Fast tracepoints
    • On 32-bit x86-architectures, fast tracepoints can now be placed at locations with 4-byte instructions, when they were previously limited to locations with instructions of 5 bytes or longer.
  • Tracepoint collecting of Strings
    • The tracepoint Collect action now has an option to request to collect character pointers as strings. It tells GDB to effectively dereference pointer-to-character types and collect the bytes of memory up to a zero byte. An optional integer limit sets a bound on the number of bytes that will be collected. This feature was completed through Bug 373707


CollectString.png

Show the actual variable type based on RTTI

With GDB 7.5.1 or higher CDT could show the actual variable type (not the declared one) in Variables and Expressions Views. Consider the following example:

   struct SuperInterface {
       virtual ~SuperInterface() {}  // enable RTTI for Interface class
   };
   
   struct TheImplementation : public SuperInterface {
       TheImplementation(int _v1, float _v2)
           : someField(_v1), anotherField(_v2) {}
   
       int someField;
       float anotherField;
   };
   
   
   int main() {
       SuperInterface* i = new TheImplementation(42, 4.2);
       return 0;     // [Launch debug until here]
   }

Launch the debugging session and run until return statement:

CDT Debug VariableTypeBasedOnRtti.png

This feature is enabled by default and will work if you have the proper GDB version (7.5.1 or higher) and RTTI generation enabled (enabled by default in gcc), however it could be turned off in preferences:

CDT Debug VariableTypeBasedOnRttiPref.png

This feature was completed through Bug 376901 and Bug 377536. Note that a bug was found in GDB 7.5 which could affect the display of other variables or registers. GDB 7.5.1 or higher should be used with this feature.

Build variables support in "C/C++ Application" field of launch configuration

CDT Debug VarsInAppplicationField.png

There are also a few new CDT-specific build variables:

  • config_name - the name of the active configuration for the project specified as an argument;
  • config_description - the description of the active configuration for the project specified as an argument;

This feature was completed through Bug 180256 and Bug 375814.

Support for octal number format in CDI

CDI now also supports to use the octal number format to display the contents of variables, expressions and registers. You can select the octal number format within the Debug preferences. This feature was completed through Bug 370462.


C/C++ Unit Testing Support

CUnitTest-View.png

CUnitTest-Launch.png

Supported features:

  • tests running with support of the following frameworks:
  • tests hierarchy browsing;
  • test messages viewing, filtering by test or test suite; source lookup is also supported;
  • testing statistics (total/failed/aborted tests count, red/green bar);
  • testing time measurement;
  • tests hierarchy filters (show only failed tests);
  • running & rerunning only selected tests (not a whole test module);
  • start a debug session for the whole test module or only the selected tests;
  • test messages filters (by severity);
  • test runs history;
  • the list of provided tests runners may be easily extended writing a new Tests Runner Plugin.

The HOWTO, known problems and limitation can be found in the corresponding section of CDT FAQ.

This feature was completed through Bug 210366.


Bugs Fixed in this Release

Fixed in CDT 8.1

Back to the top