When using the "Alt-Enter" shortcut with a breakpoint selected, the
properties dialog that is created is missing some fields. This seems to
be caused by the fact that the dialog, when summoned in this way, is
created using a wrong context: an ICLineBreakpoint instead of the
expected CBreakpointContext. That context is then used to fetch
properties from the store, which fails.
This is a naive fix that attempts to work around this by creating a
proper context from the breakpoint.
Change-Id: I2b7c86965d09898dd1cd7eeb3c3f704bb2995e20
- Adding default methods can now be ignored
- Adding fields is now an error but we probably want to ignore this
because it is quite restrictive
Change-Id: Ie57c69f54c64e4913d1498b02e86d00c93f8101a
Signed-off-by: Marc-Andre Laperle <marc-andre.laperle@ericsson.com>
... if they are closed and reopened whilst pinned.
This was because IPartListener2 was being removed before #partClosed()
was called.
Change-Id: I16de016387131b775237b5d61639bb32107231fe
Signed-off-by: Bruno Medeiros <bruno.do.medeiros@gmail.com>
The value returned by IBreakpointAction#getTypeName() must match the
value provided in the plugin.xml file for that same action. The two
names are compared in ActionDialog.createDialogArea() to know if the
proper action has been found. This is a fragile technique, that should
eventually be improved. For now, we just fix the current problem.
Change-Id: I70fd8b90fc680d3a5d55a95bdd5193d382b6c6f2
This commit also enables a richer set of enablement checks when
contributing ConsolePageParticipants to the Debugger Console view.
Change-Id: I34aa010fd9cfa91f24781e2bef5ba41b9525eab0
To perform actions on the GdbFullCliConsole, it is important to provide
access to the terminal widget. This patch adds the new method
GdbFullCliConsolePage#getTerminalViewControl() to give access to the
ITerminalViewControl.
Also, to be consistent with the platform's ConsoleView, this patch also
adds the same groups in the toolbar. Namely
IConsoleConstants.LAUNCH_GROUP and IConsoleConstants.OUTPUT_GROUP.
Extenders can use these groups to add their buttons to the Debugger
Console view.
Change-Id: I217ce54ada63796de776c6b4cb6b925c3feb7eea
This commit borrows code from ConsoleView and ConsoleManager to allow
adding page participants to GdbFullCliConsole.
Change-Id: I4b99600bc4fba3bfecb9a4822f94e2be7d3aa601
Signed-off-by: Stephen Flynn <stephen.flynn@dell.com>
When a new launch is triggered and a new GDB console created, it was
shown automatically. However, if there was a current debug session
where the selection was a stack frame, our sticky policy
(DefaultDsfSelectionPolicy) prevents the new session from being
selected, so the new GDB console shown didn't match the selection in the
DV.
With this patch, when a new GDB console is created, we don't show it
automatically, but let other logic figure out if it should be shown or
not.
Change-Id: If826677a6fb0f925f6b397a13f61fc75fc892748
This adds a new service, GDBFocusSynchronizer, that helps keep the
internal GDB selection and the Debug View selection synchronized.
Change-Id: I021b3f65d61e82f6971bdb9232369b6fdf58ea5b
The DebuggerConsoleView may be interfering with other views while
bringing it to the top. This is not desirable as many users may not need
to access the features of the GDB CLI.
With this change the view will be shown but not automatically brought up
to the top, so users can find it and select it as needed.
Change-Id: I6a26f3a39d43732659d1db4e1aeb77f3c9e399d9
Signed-off-by: Alvaro Sanchez-Leon <alvsan09@gmail.com>
IDebuggerConsoleManager.showConsoleView() was mimicked on
IConsoleManager.showConsoleView() which allows to specify which console
in the view should now be shown.
This makes sense for the generic platform Console view where extenders
could choose to display any kind of console when an event happens (e.g.,
a build console when the build is started). However, in our Debugger
Console case, it complicates things unnecessarily. In our case, we want
to be able to open the view, but the console to show is handled by other
logic such as a synchronizer service.
And if there is a need to change which console should be shown within
the Debugger Console view, then IDebuggerConsoleView.display() should be
used. I think having it in IConsoleManager.showConsoleView() is a
shortcut that is not very useful in our case.
Change-Id: Id66ea5c953e8a7ab603cfc23789a814c1ad821d2
According to the javadoc of
IDebuggerConsoleManager.showConsoleView(IDebuggerConsole), the specified
console should be made visible when this method is called. Our
implementation was not doing that.
The PageSwitcher used in DebuggerConsoleView is making use of that call
and was not working properly. One can verify this by using the
"Next Page" key binding to change console pages. It works in the
platform console but did not in the Debugger Console.
This patch fixes it.
Change-Id: I0caa94c85e5c9dbbd94d80081c7b4691c17d9582
Unify launching for projects that use the new Core Build system.
Starts with CMake projects. We'll do Qt projects next.
Change-Id: I14af8e99decd54cc6548095b3ad3e054c550aea2
Making this change reduces richness of such a console with respect to
menus, toolbar, etc. However, I think the consistency is more
important. Besides, this old gdb console is so poor, I don't expect it
was used much.
Change-Id: I28870192dd51c673f35d6147d5196bc771ebfa55
Splitting out the GDB console into its own Debugger Console view.
The goal of this patch is to allow the user to easily keep the full GDB
console in focus, without having to pin it, as the pin requirement was
not very user-friendly. Furthermore, the user can also use the GDB
console while looking at the output of the program being debugged,
which couldn't not be done without a dedicated gdb console view.
This patch also resolves two issues we had with re-using the platform
console view, which were:
- pin didn't work
- clone didn't work
With this new Debugger console view, there is no pin and no clone.
Change-Id: Ia19132704a2f6618f35ffe47ebb4b8f0028dc9ab
Change-Id: I68361b490a1ba84f0530db37a2da7558c1b762c7
Also-by: Jonah Graham <jonah@kichwacoders.com>
Signed-off-by: Stefan Sprenger <stefan@sprenger.software>
Signed-off-by: Jonah Graham <jonah@kichwacoders.com>
ChangeLog is an archaic format for identifying what has changed in a
project. Fortunately more powerful version control systems are capable
of generating this information and displaying information such as this
paragraph in order to determine what has changed in a project and when.
Change-Id: Ia71a05fa51869c1adb193d94f71c28b3b36beb37
Signed-off-by: Alex Blewitt <alex.blewitt@gmail.com>
When using a `StringBuilder` or `StringBuffer` to create a string message,
using implicit string concatenation inside an `.append()` call will
create a nested StringBuilder for the purposes of creating the arguments,
which will subsequently be converted to a String and then passed to
the outer StringBuilder.
Skip the creation of the intermediate object and String by simply
replacing such calls with `buffer.append(a).append(b)`.
Where values are compile time String constants, leave as is so
that the javac compiler can perform compile-time String concatenation.
Ensure that NEWLINE isn't appended in such a way since it is not
a compile time constant `System.getProperty("line.separator")`
Change-Id: I4126aefb2272f06b08332e004d7ea76b6f02cdba
Signed-off-by: Alex Blewitt <alex.blewitt@gmail.com>
There are many opportunities for replacing `StringBuffer` with
`StringBuilder` provided that the type isn't visible from the
public API and is used only in internal methods. Replace these
where appropriate.
Change-Id: Ic2f50c5b6f3c3a4eae301bb3b40fb6faed235f79
Signed-off-by: Alex Blewitt <alex.blewitt@gmail.com>
In many cases a String's empty status is tested with `.equals("")`.
However, Java 1.6 added `.isEmpty()` which can be more efficient since
it compares the internal length parameter only for testing. Replace
code using the `.isEmpty()` variant instead.
Some tests for `"".equals(expr)` can be replaced with `expr.isEmpty()`
where it is already known that the `expr` is not null; however,
these have to be reviewed on a case-by-case basis.
Change-Id: I3c6af4d8b7638e757435914ac76cb3a67899a5fd
Signed-off-by: Alex Blewitt <alex.blewitt@gmail.com>
Using `new Integer` and other wrapper types such as `new Character` results in
potential extra heap utilisation as the values are not cached. The built-in
`Integer.valueOf` will perform caching on numbers in the range -128..127 (at
least) using a flyweight pattern. In addition, parsing `int` values can be done
with `Integer.parseInt` which avoids object construction.
Adjust tests such as `"true".equals(expr)` to `Boolean.parseBoolean(expr)`.
Change-Id: I0408a5c69afc4ca6ede71acaf6cc4abd67538006
Signed-off-by: Alex Blewitt <alex.blewitt@gmail.com>
MappingSourceContainerBrowser has long since replaced
with NewMappingSourceContainerBrowser.
PathMappingDialog has long since replaced
with MappingSourceContainerDialog.
Change-Id: I67bd6640d5e75608c9b3d616285914987ff38f98
Signed-off-by: Jonah Graham <jonah@kichwacoders.com>
Most changes are cosmetics (name of local variables, javadoc, etc).
The note-worthy ones are:
1- Change terminology in IChangeReverseMethodHandler to be a little clearer.
This causes changes in multiple files, but it was all automated.
2- Remove ReverseDebugMethod.INVALID which was used as an error code
and not a ReverseDebugMethod value.
3- In GdbReverseToggleCommand, provide a different error message
if there is a failure to set ProcessTrace vs BranchTrace and tell user what to do.
4- Reworked GdbReverseToggleCommand#getReverseDebugMethod in attempt
to make the code easier to understand. No actual change in functionality.
Change-Id: Ibdc14faff1220e6a20319644b49e641c2101e762
This patch solves Bug 488661 by moving last trace method to
GdbReverseToggleCommand. Since it is instantiated on a per session
basis.
Change-Id: Idafa196c7af36373ca08d5fc7de63024fe824c2b
Signed-off-by: raddepal <ravitheja.addepally@intel.com>
Preserve the user supplied backend path as a string so that it matches
what GDB (backend) later reports as a file name to resolve.
Condensed history:
Traditionally in source mapping container, the backend path was stored
as an IPath and that was used to compare against the debug information
being returned by GDB. This worked well when the platform compiled for
matched the platform run on, but when there was Windows/Linux together
that did not work. So as part of Bug 393791 a workaround was done to try
and use hand crafted MapEntrySourceContainer.createPath() instead of
Path constructor to preserve some of the differences. This solution had
its limitations too as UNC paths still could not be represented, See
open Bug 386675.
Change-Id: I4c8f62114a2c6019dc9d07ce446ac424be8b230c
Signed-off-by: Jonah Graham <jonah@kichwacoders.com>
Add support for gdb's "set substitute-path from to" by adding a new
service called GDBSourceLookup that uses GDB to perform the path
mapping.
The new GDBSourceLookup service uses the new GdbSourceLookupDirector to
get the set of paths that need mapping using GDB's "set
substitute-path" and the director resolves compilation path differently
so as to leave the GDB backend to handle the local path to compile path
resolution.
The MappingSourceContainer has been enhanced to allow a per mapping
container override of the new behaviour. This is a fallback as the
default behaviour when using GDB is to use "set substitute-path".
The MappingSourceContainerDialog exposes the new option in
MappingSourceContainer as a checkbox at the bottom of the path mapping
dialog in a backend agnostic way.
The new code is tested in methods called "sourceSubstitute*" and
mirror the same tests for the now non-backend handled version
which are "sourceMapping*". Note that
doMappingAndLaunch/doSubstituteAndLaunch have been updated to explicitly
check or uncheck the setIsMappingWithBackendEnabled setting
Change-Id: I122d7c597cd461d8e38c4f82522ccfdf9e51a5ba
Signed-off-by: Jonah Graham <jonah@kichwacoders.com>
This is generic support for debugger commands though mi console bridge,
should be not gdb specific (have a simple gdb implementation though)
We add new breakpoint action called "Debugger Command"
Interface allows to enter arbitrary string(s)
This is interpreted by debugger as it see fit
For gdb implementation these are cli commands
Change-Id: I20ca0b8b094c724e1cf8b0691f4f6cab84a3737d
This is the first change to remove CDI from CDT. The CDI model
implementation is removed along with everything that directly
depends upon the implementation.
This commit does not include refactoring or moving classes. The few
insertions are the minimum necessary.
Change-Id: I80274e1a0d77bc7bb00a2afe4babc00c4f7613ae
Signed-off-by: Jonah Graham <jonah@kichwacoders.com>
I got some user feedback about some terminology they didn't quite
understand and this patch tries to address the issues by:
- Simplifying the name of the reverse debugging options.
- Simplifying the preference page.
The patch aslo removes un-used strings in plugin.properties.
Change-Id: I1e4487eeda23f81d391ef11ddbe7dd6feba401ec