TCF 1.4 New & Noteworthy
TCF API and Protocol
All API Additions are marked with "@since 1.4" in the TCF Protocol Java Interfaces.
- IBreakpoints Service: Property LineOffset added for more control over breakpoint relocation (see below, and bug 469842).
- IDiagnostics Service: echoINT() and DoneEchoINT() added for improved test coverage.
- IExpressions Service: VAL_BIT_STRIDE added for improved Ada debugging (see bug 492193).
- IMemoryMap Service: PROP_KERNEL_MODULE added to support Kernel module debugging.
- IProcesses Service: getSignalMask(), DoneGetSignalMask and setSignalMask() added, to support handling signals > 31 in the debugger (see bug 490874).
- IRunControl Service: RegAccessTypes flags rd-stop and wr-stop added
- IRunControl Service: Resume command parameter StepIntoHidden added.
- ISysMonitor Service: Properties Exe and Exetype added (see bug 470179)
The TCF Services Docs have been updated in some cases, but not all; if in doubt, the Java interfaces linked from above should be consulted as the API references. Documentation Bugs have been opened to get the services docs back in sync. Community contributions would be appreciated on this documentation effort.
The TCF Python Binding is mostly on par with the Java binding and actively being tested, maintained and improved. If in doubt regarding protocol API, the Java interfaces as linked from above should be consulted.
TCF Agent and C Value-Add
- Support for ARM Thumb and aarch64 has been strongly improved.
- Support for Ada constructs has been strongly improved (primarily support for additional Dwarf tags)
- More graceful handling of SIGINT and SIGTERM when debugging.
- Dwarf reader test coverage was increased significantly.
- Lots of bug fixes stability improvements, especially in expression evaluation, disassemblers and C++ support.
TCF C/C++ Debugger
Breakpoint Relocation Limit
- A new Preference Option, Apply relocation limit to new line breakpoints has been added on the Preferences > Run/Debug > Breakpoints > page. This helps keeping control when breakpoints are moved or duplicated due to preprocessing, code changes after the breakpoint was defined, compiler optimizations and inlining.
Relocated breakpoints are visualized by a ball (the original breakpoint) plus a separate checkmark on each planted location. Only the original breakpoint can be used for changing its properties; when hovering over a planted location, the name of the original breakpoint is shown.
By default, there is no limit on breakpoint relocations. Restricing relocations allows to maintain more control over what the debugger can do to a breakpoint, thus avoiding user's surprise due to execution halted at unexpected locations. The debugger will visualize breakpoints with an error decorator when it can not be planted due to restricted relocation:
Restricting relocations makes sense when breakpoints get duplicated due to compiler optimizations, and when stopping the program at unintended locations would cause problems. See Bug 469842 for more details.
Disabling the Variable Hover
A new Preference Option, Allow inspection of a variable by hovering over it even when application is running, has been added on the Preferences > Run/Debug > Target Communication page.
- Variable hovers are convenient to inspect static variables even while an application is running; but doing so may also temporarily stop the application under test as a side-effect and may thus lead to unexpected behavior. Turning off hovers makes application run-time behavior more deterministic. See also the respective discussion on the tcf-dev mailing list.
Build Project Only on Launch
- The TCF Launch Configuration now supports building only specific projects/configurations on Launch. New API ITCFLaunchProjectBuilder and ITCFLaunchContext#getBuildConfigIDs() was added to support that. See bug 485132 for details.
Improved Memory View
- Improved Memory View: memory monitor base address can be dynamic expression, for example, a local variable name. The debugger re-computes the address when necessary, so memory monitor tracks location of the variable as it changes during application execution or across re-launch of the debug session.
- Updated to support CDT 9.0 -- TCF 1.4 test automation actively validates against Eclipse 3.8.1 up to 4.6 (and related CDT).
- The File System browser can now better deal with special characters in file and directory names, and its performance has been strongly improved.
- The C/C++ GDB (via TCF/TE) Remote Launcher now supports changing the remote user ID, and reliably running a script before execution.
Bug Fixes, Robustness and Statistics
62 bugs and enhancement requests have been implemented for the TCF 1.4 release.