The project is still mandatory for two reasons:
1- platform does not allow an empty project
2- Source lookup was not able to find the code with an empty project; since the platform did not allow for an empty project anyway, I did not investigate the
source lookup issue.
Cleanup of MICommands that had --thread/--stack implemented directly in the class.
MIStackNS is no longer needed, and its only
remaining difference (checking if the thread is suspended) has been merged into
MIStack.
Basically, the cache of this service is used for container-level commands; therefore it should only be made unavailable/available on Container events. In all-stop we issue container events, but not in non-stop. So, everything works.
Furthermore, I only clear the cache when threads start and exit.
Adds a GDBMultiProcesses service which uses the new GDB -list-thread-group commands. Also adds some support for =thread-group-created/exited events.
Since the public GDB is not ready yet, I have commented out the instantiation of this new service, for now.
More use of IProcesses. In the weekly meeting, we had agreed that the RunControl service would make use of IProcesses to list executionContext. To do this, it is the IProcesses service that will now create the MIExecutionDMC, which is newly declared in MIProcesses. Doing this I was able to get rid of IMIRunControl, and I introduced IMIProcesses.
Also, we agreed that all RunControl use of IProcesses should be kept out of MIRunControl and put only in GDBRunControl. This is because other backends using MI will probably need a more sophisticated Process service. I still have to move the use of IProcesses out of MIRunControlNS
I also cleaned up the RunControl and GDBProcesses unit tests.
I also started spreading the use of a String as a ThreadId, while keeping things backwards compatible.
when using GDB6.6, if the solib-search-path is used, the launch will fail because the -gdb-set sysroot command will fail. The concept of sysroot seems to have been introduced with GDB 6.7
Let's comment it out since it was used only as a safeguard.
The public GDB now supports non-stop for linux.
This patch fixes the version number we were using and allows the user to click the non-stop checkbox in the launch.
When non-stop mode is requested by the user, the FinalLaunchSequence now issues:
maint set linux-async 1
set breakpoint always-inserted 1
-gdb-set non-stop on
Ultimately, with the official GDB release, only the last command should be needed.
This patch adds more usage of the IProcesses service. I believe the patch is
backwards compatible with our 1.0 release (not with the latest HEAD). The
patch does the following:
1- cleanup context hierarchy to become:
MIControlDMContext
|
MIProcessDMC (IProcess)
MIExecutionGroupDMC __/ |
(IContainer) |
| MIThreadDMC (IThread)
MIExecutionDMC _____/
(IExecution)
Notice how I put MIControlDMContext at the top.
The create*DMC methods have been updated accordingly.
The constructors of the MI*DMC classes have been updated accordingly.
2- Deprecated GDBRunControl.getThreadData() and GDBRunControl.getProcessData()
and have GdbThreadFilterEditor and ThreadVMNode use IProcesses instead.
3- because of (2) I was able to remove IGDBRunControl and GDBRunControlNS
completely.
4- Made MIProcesses.getExecutionData() fetch the thread data using
CLIInfoThreads as is done (but deprecated) in GDBRunControl.getThreadData()
5- Added a cache and event listeners to MIProcesses to cache CLIInfoThreads.
6- Update MIRunControlEventProcessor and CLIEventProcessor to use
MIControlDMContext as their top context instead of IContainerDMContext