The exception thrown checkbox now tries to set/clear breakpoints for
gcc2/4's respective exception throwing functions. Some tweaking still
needs to be done in order that these aren't visible in the breakpoints
list like normal user set breakpoints.
Since hrev45725 we no longer resize fixed sized menu fields to their preferred
height in the constructor so as to be backwards compatible with the behavior on
BeOS R5. As a consequence though, the menu fields in Mail are now a bit too
tall so this commit tweaks the menu fields to be just a bit shorter matching
the height of the text controls.
That commit switched to a single string column for representing
breakpoint locations, but neglected to update the case of a breakpoint
in a non-debug function to actually format the address as a string
appropriately, leading to those simply showing no data since then.
Since some time now, we construct minimal dwarf image debug infos
for release images if they contain frame unwind information, in order
to allow using that to unwind the stack in as many cases as possible.
As such, it's entirely possible that such an image may be asked for
statement information regarding a function that isn't in fact compiled
with debugging. As such, we need to simply fall back to disassembly
rather than failing entirely. Fixes setting breakpoints in such
functions (i.e. anything in a release version of libstdc++).
When a filter is active, only expand parent nodes if either a) there is
only one matching parent, or 2) the match actually hit a function
contained in it. This allows the case where the intent of the filter is
to find a particular set of files or subdirectories to be handled more
efficiently.
ImageFunctionsView's filtering field now allows shell-style glob matches
rather than just simple direct string matches. Implements remaining
part of #7955.
Store the filter match index on the SourcePathComponentNode so we can
retrieve it directly when drawing instead of having to recompute the
position of the match every time.
- ImageFunctionsView now contains a text input allowing one to specify a
filter for its contained functions.
- When in filtered mode, the previous flattened view is used rather than
the hierarchical tree.
- The matching portion of the string is highlighted. However, currently
only simple string matches are supported.
If the debugger interface isn't currently connected, don't attempt to
actually install the breakpoint, and simply consider the operation a
success. This allows setting new breakpoints after e.g. the team has
exited.
Resolves remaining part of #9774.
Need to add more height to the menu fields because we
no longer resize them automatically for fixed size mode
(for BeOS compat) and the text was shorter in BeOS.
- TeamDebugger's listener interface now exports a
TeamDebuggerRestartRequested hook. The latter is used to request
starting a new debugger instance with the same arguments/settings as the
team it represented. Implemented for the graphical debugger.
- When a team terminates, the resulting dialog now allows the user to
choose to quit, restart, or simply do nothing. The latter option still
needs some work though, as e.g. setting additional breakpoints currently
fails since the corresponding debugger interface is no longer around.
Implements the main part of #9774.
- Collectively the previous set of changes get us minimally parsing
some of the new DWARF4 output from gcc 4.7 as well as some of the
draft DWARF5 extensions, which allows us to handle such executables
a bit more gracefully. Not all of the new information is made use of
as yet though. Should resolve #9799.
- Add tag, attribute and form definitions from DWARF4, as well as some
from DWARF5 draft proposals that gcc4.7 is now emitting.
- Add corresponding attribute getter/setters and class definitions.
- Add appropriate attribute class definitions.
- Update tag name and attribute name retrieval accordingly for the
above.
- Implement barebones DIECallSite/DIECallSiteParameter.
* Switch bash, debugger, less, telnet[d] and top apps to use termcap
functionality provided by ncurses lib instead of GNU libtermcap.so;
* NetBSD version of tput utility replaced with ncurses' one. Fixes #9606;
* terminfo database is provided as mandatory package installed during
building target system;
* Remove libtermcap module. The termcap database source and
corresponding build rules are not removed to provide backward compatibility -
until all optional packages will be rebuild on upcoming system version
using terminfo. Note that gcc2 builds may require to provide termcap a bit
longer in the sake of binary compatibility with R5 era apps.
- VariablesView now detects if a container's range is fixed or not,
and uses that to adjust both the prompt it displays and whether or not
the parsed ranges are bounds checked.
- ArrayValueNode now returns the currently user-set range rather than
the dimension constraints, since those might not always be accurate.
Add an IsContainerRangeFixed() hook which specifies whether or not
the container in question can only display elements within a fixed
lower/upper bound, i.e. B{Object}List.
- Introduce class BreakpointProxy which acts as a container for
either a breakpoint or a watchpoint. BreakpointsTableModel now stores
a single list of these rather than separate Breakpoint/Watchpoint lists.
- Switch BreakpointListView to allow multiple selection mode, and
consequently change selection/listener interfaces to use a list of
BreakpointProxy objects. Adjust implementors accordingly.
- Rework breakpoint list columns to better mesh with a unified display
of breakpoint and watchpoint information.
- Add an input filter to handle removing breakpoints when the delete
key is pressed.
Detect the case where we have a pointer to an array type, as seen
when typecasting a pointer to an array, and present the set visible
range option for these as well.
Adds a context menu command allowing the user to specify that the active
thread should be set to execute the specified statement next, by
updating its instruction pointer. Implements second part of #9709.
Note that care needs to be taken with this feature for now, as it
doesn't yet sanity check the requested address. Setting the target
to e.g. a statement in an entirely different function is likely to have
unpredictable/unstable effects on the debugged program.
- Add SetInstructionPointer() to allow an outside updates.
- Add Clone() to request a duplicate of the current state object.
- Add UpdateDebugState() to take a debug cpu state structure matching
the current architecture and update its registers with the values from
the cpu state object.
- As we parse the image's function list, we now track the last source
file we encountered. If it's the first time we encounter the current
file, we parse its source path components up front and then simply walk
the parsed list in order to add the function to its appropriate place in
the model, rather than the previous recursive approach. This allows us
to reuse the parsed component list for subsequent functions in the same
source file rather than having to reparse the path on every iteration.
- Refactor GetFunctionPath() to make use of the new
_GetSourcePathComponents() parsing function.
Should further improve the time needed to change the active image.
- For various reasons this one can be error prone, since it relies on
the model being able to provide the correct row count, which won't be
the case if the subclass calls it after having already removed all its
nodes.
- Optimize Table's RowsRemoved() similarly to TreeTable's for the remove
all rows case.
- Get rid of the functions array as we no longer really needed it except
to sift duplicates. The latter function is now done simply by keeping a
set of already seen function addresses, and skipping entries which fall
in said category.
- Use NotifyNodesCleared()/NotifyTableModelReset() as appropriate.
- Remove now-unused sorting functions.
Combined, these changes significantly reduce the overhead of switching
the active image, which was produced observable lag when either choosing
another image in the Images list, or when stepping into/out of a
function resulted in an image change.
- Add NotifyNodesCleared() hook to table model as a shortcut for
removing all rows.
- TreeTable::_RemoveChildRows() now recognizes the special case of the
above and optimizes it by calling BColumnListView::Clear() rather than
removing each row individually.
- Add TableModelReset()/NotifyTableModelReset(). This notification is
used to tell the underlying table that a full rebuild is needed due to
the model changing completely.