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/NewIn90"

< CDT
(API modifications)
(API modifications)
Line 158: Line 158:
 
# The class ToolChainSelectionPage was removed. It was being used by a wizard that was never used and that was removed.
 
# The class ToolChainSelectionPage was removed. It was being used by a wizard that was never used and that was removed.
  
 +
 +
'''org.eclipse.cdt.launch'''
 +
 +
# The class '''LocalCDILaunchDelegate''' has been removed as part of the CDI cleanup.  For a Run launch, the class '''LocalRunLaunchDelegate''' should be used instead.  For a Debug launch, the DSF-GDB launch delegate should be used.
  
 
'''org.eclipse.cdt.ui'''
 
'''org.eclipse.cdt.ui'''

Revision as of 15:38, 18 March 2016

General

  • Is is now possible to convert an existing C project to a C++ project (adds C++ nature). To do this, the existing wizard 'Convert to a C/C++ project' can now be used on C projects whereas before it could only be used on non-CDT projects.

Editor

  • When code completion is invoked in a function call expression, appropriate substitutions are suggested for each of the function parameters. link

Function call.png

  • In C++ files if "Type not found" error is detected, there is a new quick fix now to create a class based on that type, which opens "New C/C++ Class Wizard".

Picture: TBD

Makefile Editor

  • Makefile Editor now provides a *single* key Ctrl+/ to toggle comments rather than have Ctrl+/ to comment and Ctrl+\ to uncomment. This is consistent with CDT and Java editors. See Bug-485028

Parser

Build

  • The "Symbols" settings category (gnu.c.compiler.category.symbols) under "GCC C compiler" has been removed and its content has been merged with the Preprocessor (gnu.c.compiler.category.preprocessor) category. link

Debug

Gdbserver options

  • For automatic remote debugging sessions, CDT now supports specifying extra options that will be passed to gdbserver when starting it. This way, users could activate debug messages ("--debug"), benefit of wrapper option ("--wrapper") that gdbserver supports or use the other available command-line options of gdbserver.

Gdbserver-settings-tab.PNG

Removal of support for the old Apple GDB

Apple used to have their own version of GDB which was released with Xcode. Apple no longer releases their own GDB version, and that since 2013. As of CDT 9.0, the support for the obsolete Apple GDB has been removed. As an alternative, the GDB from the FSF (Free Software Foundation) can be used. Some instructions on how to do this are available on the CDT FAQ page.

OS Resources View

Attach to selected processes

OS Resources view displays different information about the resources of the operating system, such as list of all processes running on the target or files opened by processes on target.

Now it is possible to attach to processes associated with selected resources directly from OS Resources view without resorting to "Connect to a process" button from Debug View.

OS Resources Attach.JPG

This feature requires non-stop mode support to be activated.

This feature was completed through Bug 486521.

Copy to clipboard

OS Resources View lists a lot of text information. Now it is possible to copy selected lines to clipboard to save for later comparison.

Connect button removed from Debug toolbar

In an effort to reduce clutter, the Connect button was removed from the Debug toolbar. The action is still available from the Debug view context-menu as shown below. Furthermore, connecting to a process can now be done using the OS Resources view as described in this section.

CDT Removed Connect Button.png

This feature was completed through Bug 487121

"Go to Address" platform action added to the Traditional Rendering context menu

Some of the other memory renderings already had this action, and it seemed that the traditional rendering could use it too.

CDTGoToAddressActionTraditionalRender.png

This feature was completed through Bug 488115


Connecting to process(es) - errors are now being propagated to the user

When connecting (attaching) to one or more processes, if one or more failed, the failure would be silent. With this enhancement in place, any errors will be collected and presented to the user, in a single dialog. For example here, errors are being reported for 3 failed connections:

ConnectToProcess-ErrorsPropagetedToUser.png

This feature was completed through Bug 487128

Bugs Fixed in this Release

See Bugzilla report Bugs Fixed in CDT 9.0

API modifications

With CDT 9.0, some public API are being modified. Several deprecated public methods, constants, interfaces and classes were changed to become internal APIs. These deprecated APIs are intended for removal in subsequent CDT releases.

Below is the list of changes that are not backwards-compatible that extenders could trip on.


org.eclipse.cdt.core

  1. The deprecated methods ICPPTemplateInstance.getArguments() and ICPPClassTemplatePartialSpecialization.getArguments() were removed. ICPPTemplateInstance.getTemplateArguments() and ICPPClassTemplatePartialSpecialization.getTemplateArguments() should be used instead.
  2. The deprecated method ICPPSpecialization.getArgumentMap() was removed. ICPPSpecialization.getTemplateParameterMap() should be used instead.
  3. The deprecated method ICPPTemplateScope.getTemplateDefinition() was removed. ICPPTemplateScope.getTemplateDeclaration() should be used instead.
  4. The deprecated method INodeFactory.newTranslationUnit() was removed. INodeFactory.newTranslationUnit(IScanner) should be used instead.
  5. The deprecated method IASTFunctionCallExpression.setParameterExpression(IASTExpression expression) was removed. IASTFunctionCallExpression.setArguments(IASTInitializerClause[]) should be used instead.
  6. The deprecated method IASTFunctionCallExpression.getParameterExpression() was removed. IASTFunctionCallExpression.getArguments() should be used instead.
  7. The deprecated constant IASTFunctionCallExpression.PARAMETERS was removed. IASTFunctionCallExpression.ARGUMENT should be used instead.
  8. The deprecated interface IASTBuiltinSymbolProvider was removed. IBuiltinBindingsProvider should be used instead.
  9. The deprecated methods ASTVisitor.visit(IASTComment) and ASTVisitor.leave(IASTComment) were removed. IASTTranslationUnit.getComments() should be used instead.
  10. The deprecated method ICPPNodeFactory.newSimpleTypeConstructorExpression(int, IASTExpression) was removed. ICPPNodeFactory.newSimpleTypeConstructorExpression(ICPPASTDeclSpecifier, IASTInitializer) should be used instead.
  11. The deprecated method ICPPNodeFactory.newSimpleDeclSpecifierGPP() was removed. ICPPNodeFactory.newSimpleDeclSpecifier() should be used instead.
  12. The deprecated method ICPPNodeFactory.newPointerToMemberGPP(IASTName) was removed. ICPPNodeFactory.newPointerToMember(IASTName) should be used instead.
  13. The deprecated method ICPPNodeFactory.newPointerGPP() was removed. INodeFactory.newPointer() should be used instead.
  14. The deprecated method ICPPNodeFactory.newExplicitTemplateInstantiationGPP(IASTDeclaration) was removed. ICPPNodeFactory.newExplicitTemplateInstantiation(IASTDeclaration) should be used instead.
  15. The deprecated method ICPPNodeFactory.newConstructorChainInitializer(IASTName, IASTExpression) was removed. ICPPNodeFactory.newConstructorChainInitializer(IASTName, IASTInitializer) should be used instead.
  16. The deprecated method ICPPBase.getBaseClassSpecifierName() was removed. A base class may be specified without the use of a name.
  17. The deprecated constant IASTBinaryExpression.op_last was removed. It was never safe to use.
  18. The deprecated method ICPPASTQualifiedName.getNames() was removed. ICPPASTQualifiedName.getQualifier() and ICPPASTQualifiedName.getLastName() should be used instead.


org.eclipse.cdt.codan.core

https://git.eclipse.org/r/#/c/63810/

  1. Method IChecker.enabledInContext(IResource resource) was removed. Just remove the implementation since the method is not called.
  2. Method IProblemLocationFactory.createProblemLocation(IFile file, int startChar, int endChar) was removed. If you implement this interface, remove @Override annotation, if you use this method, replace with createProblemLocation(file, startChar, endChar, -1) (or appropriate line number, note: passing -1 is OK since it will recalculate the line from positions)
  3. Constructor CodanProblemLocation(IResource, int, int) was removed, use CodanProblemLocation(IResource file, int startChar, int endChar, int line) instead.


org.eclipse.cdt.dsf.gdb

  1. The constructor GdbDebugServicesFactory.GdbDebugServicesFactory(String) has been replaced by GdbDebugServicesFactory.GdbDebugServicesFactory(String, ILaunchConfiguration)
  2. The class GdbDebugServicesFactoryNS has been removed and its logic was merged into class GdbDebugServicesFactory
  3. The protected method GdbLaunchDelegate.cleanupLaunch() has been removed. It has been replaced with GdbLaunchDelegate.cleanupLaunch(ILaunch). Although the replaced method was not deprecated, it was used in an incorrect fashion and we felt it was justified to modify it.
  4. The deprecated protected methods GDBBackend.getGDBCommandLine() and GDBBackend.launchGDBProcess(String) were removed. GDBBackend.getGDBCommandLineArray() and GDBBackend.launchGDBProcess(String[]) should be used instead.
  5. The deprecated protected method GdbLaunchDelegate.newServiceFactory(String) was removed. It was replaced with GdbLaunchDelegate.newServiceFactory(ILaunchConfiguration, String)
  6. The constructor MIThreadGroupExitedEvent(IProcessDMContext, int, String) was removed. MIThreadGroupExitedEvent(IProcessDMContext, int, MIResult[]) should be used instead.
  7. The constructor MITargetAttach(ICommandControlDMContext, String) was removed. MITargetAttach(IMIContainerDMContext, String) or MITargetAttach(IMIContainerDMContext, String, boolean) should be used instead.
  8. Based on the previous change, the method CommandFactory.createMITargetAttach(ICommandControlDMContext, String) was removed. CommandFactory.createMITargetAttach(IMIContainerDMContext, String) or CommandFactory.createMITargetAttach(IMIContainerDMContext, String, boolean) should be used instead.
  9. The constructors MIFileExecAndSymbols(ICommandControlDMContext) and MIFileExecAndSymbols(ICommandControlDMContext, String) where removed. MIFileExecAndSymbols(IMIContainerDMContext) and MIFileExecAndSymbols(IMIContainerDMContext, String) should be used instead.
  10. In GDBControl_7_0, the classes InitializationShutdownStep, CommandMonitoringStep, CommandProcessorsStep, RegisterStep were removed; their counterparts, defined in GDBControl, should be used instead.
  11. Based on the previous change, the class GDBControl_7_0.ListFeaturesStep now extends GDBControl.InitializationShutdownStep instead of the removed GDBControl_7_0.InitializationShutdownStep.
  12. MIVariableManager.MIVariableObject.setExpressionData(String,String,int) was removed. The method MIVariableManager.MIVariableObject.setExpressionData(ExpressionInfo,String,int,boolean) should be used instead.
  13. GdbLaunchDelegate.newServiceFactory(String) was removed. It has been replaced with GdbLaunchDelegate.newServiceFactory(ILaunchConfiguration, String)
  14. The methods MIDataListRegisterValues.MIDataListRegisterValues(IMIExecutionDMContext, int) and MIDataListRegisterValues.MIDataListRegisterValues(IMIExecutionDMContext, int, int[]) were removed. Callers should instead use the methods of the same name but passing in an IFrameDMContext instead of an IMIExecutionDMContext.
  15. Following the above change, the methods CommandFactory.MIDataListRegisterValues(IMIExecutionDMContext, int) and CommandFactory.MIDataListRegisterValues(IMIExecutionDMContext, int, int[]) have also been removed, and their corresponding methods using IFrameDMContext should be used instead.
  16. The method GDBRunControl_7_0_NS.eventDispatched(ITraceRecordSelectedChangedDMEvent) was removed. GDBRunControl_7_2_NS.eventDispatched(ITraceRecordSelectedChangedDMEvent) should be used instead.
  17. Support for the obsolete Apple GDB was removed
    • The following macos packages were removed:
      • org.eclipse.cdt.dsf.gdb.service.macos,
      • org.eclipse.cdt.dsf.mi.service.command.commands.macos,
      • org.eclipse.cdt.dsf.mi.service.command.output.macos
      • org.eclipse.cdt.debug.gdbjtag.core.dsf.gdb.service.macos
    • The following classes, contained in the above packages are now removed:
      • MacOSCommandFactory.java
      • MacOSGDBProcesses.java
      • MacOSGDBRunControl.java
      • MacOSGdbDebugServicesFactory.java
      • MacOSMIEnvironmentCD.java
      • MacOSMIVarUpdate.java
      • MacOSMIVarUpdateInfo.java
      • MacOSGdbJtagDebugServicesFactory.java
    • The constant LaunchUtils.MACOS_GDB_MARKER was removed.


org.eclipse.cdt.testsrunner

  1. The class CdiRunTestsLaunchDelegate was renamed RunTestsLaunchDelegate, as part of the CDI cleanup.


org.eclipse.cdt.debug.gdbjtag.core

  1. The constructor GdbJtagDebugServicesFactory.GdbJtagDebugServicesFactory(String) has been replaced by GdbJtagDebugServicesFactory.GdbJtagDebugServicesFactory(String, ILaunchConfiguration)

org.eclipse.cdt.managedbuilder.ui

  1. The class ToolChainSelectionPage was removed. It was being used by a wizard that was never used and that was removed.


org.eclipse.cdt.launch

  1. The class LocalCDILaunchDelegate has been removed as part of the CDI cleanup. For a Run launch, the class LocalRunLaunchDelegate should be used instead. For a Debug launch, the DSF-GDB launch delegate should be used.

org.eclipse.cdt.ui

  1. The classes NewCDTProjectWizard, ProjectTypePage, TemplateSelectionPage were removed. The wizard and its pages were never used and were not fully functional.
  2. The extension point projectTypePages was removed. It was being used by a wizard that was never used and that was removed.

Plugin-removal

  1. The p2/ directory was completely removed from the CDT git repository. It included the following plugins:
    • org.eclipse.cdt.p2 was removed
    • org.eclipse.cdt.p2-feature was removed
    • org.eclipse.cdt.p2.generator was removed
  2. The old org.eclipse.cdt.releng was removed. It was the old way of doing CDT releases.

Back to the top