mirror of
https://github.com/eclipse-cdt/cdt
synced 2025-04-29 19:45:01 +02:00
2151 lines
78 KiB
Text
2151 lines
78 KiB
Text
2003-12-22 Mikhail Khodjaiants
|
|
Fix for bug 49282 terminate the gdb session if the termination of the inferior fails.
|
|
|
|
* src/org/eclipse/cdt/debug/mi/core/cdi/model/Target.java
|
|
|
|
2003-12-22 Mikhail Khodjaiants
|
|
Fix for Bug 49278 do not retry the "info threads" command if the first attempt fails.
|
|
Throw an exception from the "getCThreads" method when it fails.
|
|
|
|
* src/org/eclipse/cdt/debug/mi/core/cdi/model/Target.java
|
|
|
|
2003-12-18 Alain Magloire
|
|
|
|
PR 49148
|
|
Set environment variable value to give the program.
|
|
Arguments are VAR VALUE where VAR is variable name and VALUE is value.
|
|
VALUES of environment variables are uninterpreted strings.
|
|
This does not affect the program until the next "run" command.
|
|
|
|
So pass the string raw.
|
|
|
|
* src/org/eclipse/cdt/debug/mi/core/command/MIGDBSetEnvironment.java
|
|
* src/org/eclipse/cdt/debug/mi/core/cdi/RuntimeOptions.java
|
|
* src/org/eclipse/cdt/debug/mi/core/CommandFactory.java
|
|
|
|
2003-12-17 Mikhail Khodjaiants
|
|
|
|
Fix for bug 49061: Different values are used as default for the "Load shared library symbols automatically" option.
|
|
|
|
* src/org/eclipse/cdt/debug/mi/core/GDBDebugger.java
|
|
* src/org/eclipse/cdt/debug/mi/core/GDBServerDebugger.java
|
|
* src/org/eclipse/cdt/debug/mi/core/IMILaunchConfigurationConstants.java
|
|
* src/org/eclipse/cdt/debug/mi/core/CygwinGDBDebugger.java
|
|
|
|
2003-12-16 Mikhail Khodjaiants
|
|
|
|
Show the gdb arguments when tracing.
|
|
|
|
* src/org/eclipse/cdt/debug/mi/core/MIPlugin.java
|
|
|
|
2003-12-16 Mikhail Khodjaiants
|
|
|
|
Fix for PR 48870: Terminate gdb if attach to process fails.
|
|
|
|
* src/org/eclipse/cdt/debug/mi/core/MIPlugin.java
|
|
|
|
2003-12-09 Alain Magloire
|
|
|
|
Do not try to interrupt if the target was suspended.
|
|
|
|
* src/org/eclipse/cdt/debug/mi/core/MIInferior.java
|
|
|
|
2003-12-08 Alain Magloire
|
|
|
|
Target.terminate() did not pass the exception up.
|
|
Added new method MIInferior.terminate().
|
|
|
|
* src/org/eclipse/cdt/debug/mi/core/MIInferior.java
|
|
* src/org/eclipse/cdt/debug/mi/core/cdi/model/Target.java
|
|
|
|
2003-12-02 Alain Magloire
|
|
|
|
Retry the stack-info-depth when it fails the first time
|
|
and decrement the count. GDB can cope up the second try
|
|
and probably mark the thread invalid.
|
|
Patch base on Ashish Karkare patch:
|
|
|
|
* src/org/eclipse/cdt/debug/mi/core/cdi/model/Thread.java
|
|
|
|
2003-11-26 Mikhail Khodjaiants
|
|
Cleanup.
|
|
|
|
* src/org/eclipse/cdt/debug/mi/core/cdi/model/Variable.java
|
|
* src/org/eclipse/cdt/debug/mi/core/GDBTypeParser.java
|
|
|
|
2003-11-26 Mikhail Khodjaiants
|
|
Cleanup.
|
|
|
|
* src/org/eclipse/cdt/debug/mi/core/GDBDebugger.java
|
|
* src/org/eclipse/cdt/debug/mi/core/GDBServerDebugger.java
|
|
* src/org/eclipse/cdt/debug/mi/core/CygwinGDBDebugger.java
|
|
* src/org/eclipse/cdt/debug/mi/core/cdi/BreakpointManager.java
|
|
* src/org/eclipse/cdt/debug/mi/core/cdi/event/ResumedEvent.java
|
|
* src/org/eclipse/cdt/debug/mi/core/cdi/model/Target.java
|
|
* src/org/eclipse/cdt/debug/mi/core/command/MIBreakAfter.java
|
|
* src/org/eclipse/cdt/debug/mi/core/event/MIFunctionFinishedEvent.java
|
|
* src/org/eclipse/cdt/debug/mi/core/event/MIInferiorSignalExitEvent.java
|
|
* src/org/eclipse/cdt/debug/mi/core/event/MISignalEvent.java
|
|
* src/org/eclipse/cdt/debug/mi/core/event/MIWatchpointTriggerEvent.java
|
|
* src/org/eclipse/cdt/debug/mi/core/output/MIGDBShowDirectoriesInfo.java
|
|
* src/org/eclipse/cdt/debug/mi/core/output/MIGDBShowSolibSearchPathInfo.java
|
|
* src/org/eclipse/cdt/debug/mi/core/output/MIList.java
|
|
|
|
2003-11-25 Alain Magloire
|
|
|
|
Process the suspend event even if there is not threads
|
|
or stack associated with the target.
|
|
|
|
* src/org/eclipse/cdt/debug/mi/core/cdi/EventManager.java
|
|
|
|
2003-11-22 Alain Magloire
|
|
|
|
In MISession constructor if the initialization fails shutdown
|
|
the Tx/RX/Event threads.
|
|
In MIPlugin if the initialization fails shutdown the pty console.
|
|
Ditto for GDBDebugger/GDBServerDebugger/CygwinGDBDebugger.
|
|
|
|
* src/org/eclipse/cdt/debug/mi/core/MIPlugin.java
|
|
* src/org/eclipse/cdt/debug/mi/core/MISession.java
|
|
* src/org/eclipse/cdt/debug/mi/core/GDBDebugger.java
|
|
* src/org/eclipse/cdt/debug/mi/core/GDBServerDebugger.java
|
|
* src/org/eclipse/cdt/debug/mi/core/CygwinGDBDebugger.java
|
|
|
|
2003-11-21 Alain Magloire
|
|
|
|
The wrong MIPlugin.createCSession() method was used.
|
|
Problem noted by Ashish.
|
|
|
|
* src/org/eclipse/cdt/debug/mi/core/GDBServerDebugger.java
|
|
|
|
2003-11-21 Mikhail Khodjaiants
|
|
|
|
* src/org/eclipse/cdt/debug/mi/core/output/MIFrame.java
|
|
Fix for PR 46592: Debug View shows Functions as func(type param,...)().
|
|
Return an empty string instead of "??" if the function name is not available.
|
|
|
|
2003-11-20 Alain Magloire
|
|
|
|
Fix NPE: 46313. Setting breakpoint when the target was running
|
|
was throwing NPE.
|
|
|
|
* src/org/eclipse/cdt/debug/mi/core/cdi/BreakpointManager.java
|
|
* src/org/eclipse/cdt/debug/mi/core/cdit/EventManager.java
|
|
|
|
2003-11-19 Mikhail Khodjaiants
|
|
|
|
Fix for PR 45533: MIException while creating MISession can leave an orphan gdb process.
|
|
* src/org/eclipse/cdt/debug/mi/core/MIPlugin.java: removed the 'getAdjustedTimeout' method.
|
|
|
|
2003-11-19 Mikhail Khodjaiants
|
|
|
|
Fix for PR 45533: MIException while creating MISession can leave an orphan gdb process.
|
|
* src/org/eclipse/cdt/debug/mi/core/MIPlugin.java: initialization of preferences by default values.
|
|
* src/org/eclipse/cdt/debug/mi/core/MISession.java: removed the duplicate constant for the default
|
|
launch timeout value.
|
|
|
|
2003-11-13 Mikhail Khodjaiants
|
|
|
|
* src/org/eclipse/cdt/debug/mi/core/output/MIFrame.java
|
|
Fix for PR 46592: Debug View shows Functions as func(type param,...)().
|
|
In some situations gdb returns the function names that include parameter types.
|
|
To make the presentation consistent truncate the parameters.
|
|
|
|
2003-11-06 Alain Magloire
|
|
|
|
* src/org/eclipse/cdt/debug/mi/core/cdi/EventManager.java:
|
|
Small fix for the defferred breakpoint support.
|
|
|
|
2003-11-06 Alain Magloire
|
|
|
|
Patch from Ashish Karkare:
|
|
A CDT 1.2 patch that enables setting of
|
|
serial line speed in the launch configuration when debugging remote targets.
|
|
|
|
* src/org/eclipse/cdt/debug/mi/core/IGDBServerMILaunchConfigurationConstants.java
|
|
New attribute definition DEV_SPEED.
|
|
|
|
* src/org/eclipse/cdt/debug/mi/core/GDBServerDebugger.java
|
|
Extracts serial speed value and passes it to createCSession().
|
|
|
|
|
|
2003-10-29 Alain Magloire
|
|
|
|
Deal with PR 45533
|
|
|
|
Make a preferenc for Timeout and use it when launching
|
|
the ICDebugger session, when way wait for for gdb
|
|
to say "ready" by returning the prompt.
|
|
|
|
* src/org/eclipse/cdt/debug/mi/core/MISession.java
|
|
* src/org/eclipse/cdt/debug/mi/core/MIPlugin.java
|
|
* src/org/eclipse/cdt/debug/mi/core/IMIConstants.java
|
|
|
|
2003-10-17 Alain Magloire
|
|
|
|
Put the framework to deal with deferred breakpoint.
|
|
|
|
* src/org/eclipse/cdt/debug/mi/core/cdi/event/ResumeEvent.java
|
|
Deal with MIRunningEvent.RETURN.
|
|
* src/org/eclipse/cdt/debug/mi/core/cdi/model/Breakpoint.java
|
|
Check if MIBreakpoint is null first.
|
|
* src/org/eclipse/cdt/debug/mi/core/cdi/model/Watchpoint.java
|
|
Check if MIWathchpoint is null first.
|
|
* src/org/eclipse/cdt/debug/mi/core/cdi/BreakpointManager.java
|
|
Implement Deferred Breakpoint
|
|
* src/org/eclipse/cdt/debug/mi/core/cdi/SharedLibraryManager.java
|
|
Implement Deferred Breakpoint
|
|
* src/org/eclipse/cdt/debug/mi/core/GDBDebugger.java
|
|
Enable deferredBreakpoint.
|
|
* src/org/eclipse/cdt/debug/mi/core/CygwinDebugger.java
|
|
Enable deferredBreakpoint.
|
|
|
|
|
|
2003-10-07 Mikhail Khodjaiants
|
|
|
|
All methods of 'IRuntimeOptions' should throw CDI exceptions in case of failure.
|
|
* src/org/eclipse/cdt/debug/mi/core/cdi/RuntimeOptions.java
|
|
|
|
2003-09-30 Alain Magloire
|
|
|
|
ICDIVariableObject.equals();
|
|
|
|
* src/org/eclipse/cdt/debug/mi/core/cdi/model/VariableObject.java
|
|
|
|
2003-09-29 Mikhail Khodjaiants
|
|
Added the initialization of the shared libraries' attributes to CygwinGDBDebugger.
|
|
|
|
* src/org/eclipse/cdt/debug/mi/core/CygwinGDBDebugger.java
|
|
|
|
2003-09-26 Alain Magloire
|
|
|
|
Second part of PR 43496.
|
|
On the startup of GDB, we have to wait for "(gdb)" prompt
|
|
to make sure that gdb is ready to accept command.
|
|
|
|
* src/org/eclipse/cdt/debug/mi/core/MIPlugin.java
|
|
|
|
2003-09-25 Alain Magloire
|
|
|
|
Fix for PR 43496.
|
|
In the event of an error we should Process.destroy()
|
|
after creating the Process.
|
|
|
|
* src/org/eclipse/cdt/debug/mi/core/MIPlugin.java
|
|
|
|
2003-09-11 Mikhail Khodjaiants
|
|
Moving the shared library search paths block to mi UI.
|
|
* IMILaunchConfigurationConstants.java: added the 'ATTR_DEBUGGER_SOLIB_PATH' attribute.
|
|
|
|
2003-09-11 Alain Magloire
|
|
|
|
Fix to info shared parsing.
|
|
|
|
* src/org/eclipse/cdt/debug/mi/core/output/MIInfoSharedLibary.java
|
|
|
|
2003-09-09 Mikhail Khodjaiants
|
|
Regrouping the launch configuration constants.
|
|
* IMILaunchConfigurationConstants.java
|
|
|
|
2003-09-09 Mikhail Khodjaiants
|
|
Added the 'stop-on-solib-events' option.
|
|
Changed the initialization of the shared library search path.
|
|
Changed the messages of the thrown exceptions.
|
|
* GDBDebugger.java
|
|
|
|
2003-09-09 Mikhail Khodjaiants
|
|
|
|
CoreFileConfiguration supports shared libraries.
|
|
|
|
* src/org/eclipse/cdt/debug/mi/core/cdi/CoreFileConfiguration.java
|
|
|
|
2003-08-30 Alain Magloire
|
|
|
|
Unnecessary synchronization making deadlocks. Should revisit this code.
|
|
|
|
* src/org/eclipse/cdt/debug/mi/core/MIInferior.java
|
|
|
|
2003-08-29 Mikhail Khodjaiants
|
|
|
|
Added new command - 'set stop-on-solib-events'.
|
|
|
|
* src/org/eclipse/cdt/debug/mi/core/command/MIGDBSetStopOnSolibEvents.java
|
|
* src/org/eclipse/cdt/debug/mi/core/command/CommandFactory.java
|
|
|
|
Implementation of the new methods added to the 'ICDISharedLibraryManager' interface.
|
|
|
|
* src/org/eclipse/cdt/debug/mi/core/cdi/SharedLibraryManager.java
|
|
|
|
2003-08-26 Alain Magloire
|
|
|
|
This is still a hack: "info shared" the real solution
|
|
is to implement in GDB/MI the corresponding command.
|
|
So now we do weird parsing, that varies from platform
|
|
to platform. For example Cygwin output of "info shared"
|
|
is totally different from the GNU/Linux one etc ...
|
|
We the best we can to cope ... but things will break.
|
|
|
|
* src/org/eclipse.cdt/debug/mi/core/output/MIInfoSharedLibraryInfo.java
|
|
|
|
2003-08-26 Alain Magloire
|
|
|
|
Using the wrong method for toString() and we were returning
|
|
a overly verbose string.
|
|
|
|
* src/org/eclipse/cdt/debug/mi/core/GDBTypeParser.java
|
|
|
|
2003-08-25 Alain Magloire
|
|
|
|
Small fix, get the datatype for the GDBTypeParser.
|
|
|
|
* src/org/eclipse/cdt/debug/mi/core/cdi/SourceManager.java
|
|
|
|
2003-08-22 Alain Magloire
|
|
|
|
For casting array we use the "@" format, hide it in
|
|
the name. But show it the qualifiedName() since the
|
|
expression is use to evaluate.
|
|
|
|
* src/org/eclipse/cdt/debug/mi/core/cdi/model/Variable.java
|
|
* src/org/eclipse/cdt/debug/mi/core/cdi/model/VariableObject.java
|
|
* src/org/eclipse/cdt/debug/mi/core/cdi/VariableManager.java
|
|
|
|
2003-08-21 Alain Magloire
|
|
|
|
GDB varobj for the arrays children name only returns
|
|
the index. We need to construct the entire name:
|
|
char buffer[2]
|
|
GDB return "0", "1" for the children names.
|
|
We will return
|
|
"buffer[0]", "buffer[1]"
|
|
|
|
* src/org/eclipse/cdt/debug/mi/core/cdi/Variable.java
|
|
|
|
2003-08-20 Alain Magloire
|
|
|
|
GDB/MI altough define an interface that all commands should
|
|
follow .. they do not. For example, we should be able
|
|
to separate options from agument with a "--" string not
|
|
all commands. The latest is -break-condition.
|
|
So we override the MICommand.toString() to do specific
|
|
parsing for specific commands.
|
|
|
|
* src/org/eclipse/cdt/debug/mi/core/command/MICommand.java
|
|
break the toString() method.
|
|
* src/org/eclipse/cdt/debug/mi/core/command/MIBreakCondition.java
|
|
|
|
2003-08-19 Alain Magloire
|
|
|
|
Fix to the GDBTypeParser to deal with gdb
|
|
awkwardness
|
|
* src/org/eclipse/cdt/debug/mi/core/GDBTypeParser.java
|
|
|
|
2003-08-19 Alain Magloire
|
|
|
|
GDB, uses false category for C++ class/struct.
|
|
Fix to return the correct name.
|
|
|
|
* src/org/eclipse/cdt/debug/mi/core/cdi/model/Variable.java
|
|
|
|
2003-08-18 Alain Magloire
|
|
|
|
Patch from Chris Songer, excerpt from the email.
|
|
Using the phrase "To ensure consistency between a register name and its
|
|
number, the output list may include empty register names," the MI protocol
|
|
appears to allow gdb to return a "sparse" array of registers by giving a 0
|
|
length name in response to the -data-list-register-names-command. CDT 1.0.1
|
|
does not handle this especially well and subsequently exposes a bug in GDB
|
|
5.1.3 and crashes it if the debugger has more than 3 register names of 0
|
|
length.
|
|
|
|
example:
|
|
|
|
8-data-list-register-names
|
|
(gdb)
|
|
8^done,register-names=["ar0","ar1",... ,"","","","","","","ur0",\
|
|
"ur1","ur2","ur3","ur4","ur5","ur6","ur7","","" ..]
|
|
|
|
|
|
* src/org/eclipse/cdt/debug/mi/core/output/MIDataListRegisterNamesInfo.java:
|
|
New method getNumRealNames().
|
|
* src/org/eclipse/cdt/debug/mi/core/cdi/RegisterManager.java:
|
|
Check if the register name is not empty.
|
|
|
|
2003-08-18 Alain Magloire
|
|
|
|
From the manual:
|
|
By default GDB will automatically keep track of objects as they are
|
|
loaded and unloaded by the dynamic linker. By using the command `set
|
|
stop-on-solib-events 1' you can arrange for GDB to stop the inferior
|
|
when shared library events occur, thus allowing you to set breakpoints
|
|
in shared libraries which are explicitly loaded by the inferior.
|
|
|
|
* src/org/eclipse/cdt/debug/mi/core/event/MISharedLibEvent.java:
|
|
New file, StoppedEvent du to shared lib events.
|
|
* src/org/eclipse/cdt/debug/mi/core/cdi/event/SuspendedEvent.java:
|
|
Catch MISharedLibEvent.
|
|
* src/org/eclipse/cdt/debug/mi/core/cdi/SharedLibraryevent.java:
|
|
New file implements ICDISharedLibaryEvent.
|
|
* src/org/eclipse/cdt/debug/mi/core/RxThread.java:
|
|
Hack to catch suspend/stop on shared library.
|
|
|
|
2003-08-11 Mikhail Khodjaiants
|
|
* src/org/eclipse/cdt/debug/mi/core/cdi/model/type/ArrayValue.java:
|
|
* src/org/eclipse/cdt/debug/mi/core/cdi/VariableManager.java:
|
|
Removed the 'type' parameter from the 'getVariableObjectAsArray' method.
|
|
|
|
2003-08-11 Mikhail Khodjaiants
|
|
* src/org/eclipse/cdt/debug/mi/core/cdi/model/type/ArrayValue.java:
|
|
The 'type' argument of the 'getVariableObjectAsArray' method shouldn't be null.
|
|
|
|
2003-08-11 Mikhail Khodjaiants
|
|
* src/org/eclipse/cdt/debug/mi/core/cdi/variableManager.java
|
|
Mistype in the 'CheckType' method.
|
|
|
|
2003-08-07 Alain Magloire
|
|
|
|
* src/org/eclipse/cdt/debug/mi/core/cdi/variableManager.java
|
|
getVariableObjectAsArray() ignore the type argument it does
|
|
not work with gdb.
|
|
|
|
* src/org/eclipse/cdt/debug/mi/core/cdi/model/VariableObject.java
|
|
Added hasChildren() method.
|
|
|
|
2003-08-07 Alain Magloire
|
|
|
|
* src/org/eclipse/cdt/debug/mi/core/cdi/VariableManager.java:
|
|
Update the interface to reflect ICDIVariableManager.
|
|
|
|
2003-08-06 Mikhail Khodjaiants
|
|
* src/org/eclipse/cdt/debug/mi/core/cdi/model/type/ArrayValue.java:
|
|
Removed the unused local variable 'children' from the 'getVariables' method.
|
|
|
|
2003-08-07 Alain Magloire
|
|
|
|
PR 38964.
|
|
|
|
* src/org/eclipse/cdt/debug/mi/core/MIInferior.java:
|
|
The method interrupted was synchronized and so was the
|
|
setSuspended(). Now do a notify when the status change.
|
|
Throw an exception if the interrupt() failed.
|
|
* src/org/eclipse/cdt/debug/mi/core/cdi/model/Target.java:
|
|
Do not check for running.
|
|
|
|
2003-08-06 Alain Magloire
|
|
|
|
Dealing with casting: Casting a field of a structure did not
|
|
work properly for example:
|
|
struct foo { int bar; } foobar;
|
|
To cast the field bar, we need to construct the full qualified
|
|
name "foobar.bar".
|
|
Unfortunately for C++ things are hectic in the GDB/MI world
|
|
the childre of structure are not the fields. So we try to
|
|
deal with it too.
|
|
|
|
* src/org/eclipse/cdt/debug/mi/core/cdi/model/Variable.java:
|
|
New constructor, new method getLanguage() to deal with
|
|
different type of languages ex: C vs C++.
|
|
* src/org/eclipse/cdt/debug/mi/core/cdi/model/VariableObject.java:
|
|
Clean up and added a bunch of set/getXXX() methods instead of
|
|
accessing directly the fields.
|
|
* src/og/eclipse/cdt/debug/mi/core/cdi/VariableManager.java:
|
|
Clean the methods use for casting and format the indentation.
|
|
* src/org/eclipse/cdt/debug/mi/core/command/MIVarInfoExpression.java:
|
|
Added parsing method.
|
|
|
|
2003-08-06 Alain Magloire
|
|
|
|
* src/org/eclipse/cdt/debug/mi/core/cdi/model/VariableObject.java:
|
|
Implement isEditable method.
|
|
|
|
2003-08-06 Mikhail Khodjaiants
|
|
* src/org/eclipse/cdt/debug/mi/core/cdi/model/Variable.java:
|
|
Fix for 'isEditable'.
|
|
* src/org/eclipse/cdt/debug/mi/core/cdi/model/VariableObject.java:
|
|
Use correct expression in 'sizeof'.
|
|
|
|
2003-08-06 Alain Magloire
|
|
|
|
First framework to deal with breaking the arrays in ranges.
|
|
|
|
* src/org/eclipse/cdt/debug/mi/core/cdi/model/Argument.java:
|
|
Remove unused getArgumentObject().
|
|
* src/org/eclipse/cdt/debug/mi/core/cdi/model/Register.java:
|
|
Remove unuse getRegisterObject().
|
|
* src/org/eclipse/cdt/debug/mi/core/cdi/model/Variable.java:
|
|
Move methods to VariableObject to comply with the interface.
|
|
* src/org/eclipse/cdt/debug/mi/core/cdi/model/VariableObject.java:
|
|
Implement new methods of ICDIVariableObject.java
|
|
Save the castin information.
|
|
* src/org/eclipse/cdt/debug/mi/core/cdi/model/type/ArrayValue.java:
|
|
New method getVariables(int, int).
|
|
* src/org/eclipse/cdt/debug/mi/core/cdi/VariableManager.java:
|
|
New method encodeVariable(), to get the encode specific string
|
|
for gdb casting of arrays.
|
|
|
|
2003-07-28 Mikhail Khodjaiants
|
|
|
|
Minimize the number of the "evaluate expression" requests when changing the value of the floating point types.
|
|
|
|
* src/org/eclipse/cdt/debug/mi/core/cdi/model/type/FloatingPointValue.java
|
|
|
|
2003-07-17 Alain Magloire
|
|
|
|
Catch the use of cli command "detach" and fire the appropriate events.
|
|
|
|
* src/org/eclipse/cdt/debug/mi/core/CLIProcessor.java
|
|
|
|
2003-07-16 Alain Magloire
|
|
|
|
Provide FunctionValue, PointerValue and ArrayValue.
|
|
For ArrayValue apply the patch from Chris Songer, excerpt from
|
|
his email:
|
|
Given GDB performance, we saw CDT start to time out on large array
|
|
requests. The following patch corrects this by scaling the time out with
|
|
the number of children being retrieved. I have not looked at the head on
|
|
this so your mileage may vary. On 1.0.1 with this and the MIParser change
|
|
you can open 16k arrays.
|
|
|
|
* src/org/eclipse/cdt/debug/mi/core/cdi/model/type/AggregateValue.java
|
|
* src/org/eclipse/cdt/debug/mi/core/cdi/model/type/DerivedValue.java
|
|
* src/org/eclipse/cdt/debug/mi/core/cdi/model/type/PointerValue.java
|
|
* src/org/eclipse/cdt/debug/mi/core/cdi/model/type/ReferenceValueValue.java
|
|
* src/org/eclipse/cdt/debug/mi/core/cdi/model/type/ArrayValue.java
|
|
* src/org/eclipse/cdt/debug/mi/core/cdi/model/type/StructValue.java
|
|
* src/org/eclipse/cdt/debug/mi/core/cdi/model/Value.java
|
|
* src/org/eclipse/cdt/debug/mi/core/cdi/model/Variable.java
|
|
|
|
2003-07-10 Alain Magloire
|
|
|
|
In the case of not having a PTY to unmixed inferior output from gdb commands
|
|
do the only sane thing and when a response comes in that is not a valid
|
|
MI format consider it as inferior output.
|
|
|
|
* src/org/eclipse/cdt/debug/mi/core/output/MIParser.java:
|
|
Put non valid lines in the TargetStream.
|
|
* src/org/eclipse/cdt/debug/mi/core/MIInferior.java:
|
|
Pass output straight to the target.
|
|
* src/org/eclipse/cdt/debug/mi/core/TxThread.java:
|
|
Remove unused code.
|
|
* src/org/eclipse/cdt/debug/mi/core/command/Command.java:
|
|
Try to remove duplicate errors when throwing the MIException.
|
|
|
|
2003-07-08 Alain Magloire
|
|
|
|
Unfortunately GDB/MI does not make the errors available via the advertise
|
|
way explain in the documentation, for example:
|
|
27-var-create - * this->aaa
|
|
&"There is no member or method named aaa.\n"
|
|
&"Type Hello has no component named aaa.\n"
|
|
27^error,msg="."
|
|
|
|
According to the doc, the error should be available in the msg field:
|
|
27^error,msg="There is no member or method named aaaa"
|
|
|
|
Since this will not be fix in GDB/MI anytime soon, we cope with it by
|
|
grabing the logstream error and make it available in
|
|
|
|
CDIException.getDetailedMesssage().
|
|
|
|
* src/org/eclipse/cdt/debug/mi/core/command/*.java: All the commands
|
|
changed to grab also the logstream messages if any for the exception.
|
|
|
|
2003-06-25 Alain Magloire
|
|
|
|
Patch from Chris Songer, excerpt from its email:
|
|
The MIParser is O(N^2) time in the length of a line returned from GDB.
|
|
While not an issue for OOB messages, this can be quite an issue for array
|
|
retrieval from the target and other potentially long messages. It's N^2
|
|
because it relies on StringBuffer.deleteCharAt( 0 ) and
|
|
StringBuffer.delete( 0, X ). These operations appear to do a copy of the
|
|
remaining data in the Sun Java library rather than bumping some index.
|
|
|
|
The following diffs are code that we are using on 1.0.1 to correct this
|
|
issue. It's relatively new, so there may be some bugs but has certainly
|
|
performed just fine in our initial regressions. Because of that I'm not
|
|
sending it in as a patch, more an FYI really. The basic change is exactly
|
|
what you'd expect: these diffs make MIParser use a new type of string
|
|
buffer that's quite efficient at deleting from the head of the array.
|
|
|
|
* src/org/eclipse/cdt/debug/mi/core/output/MIParser.java
|
|
|
|
2003-06-18 Alain Magloire
|
|
|
|
* src/org/eclipse/cdt/debug/mi/core/cdi/event/ChangedEvent.java:
|
|
Check if the variable was a register.
|
|
* src/org/eclipse/cdt/debug/mi/core/cdi/event/CreatedEvent.java:
|
|
Cleanup.
|
|
* src/org/eclipse/cdt/debug/mi/core/cdi/model/Register.java:
|
|
Removing of method {get,set}Value() and new method getChildren().
|
|
* src/org/eclipse/cdt/debug/mi/core/cdi/model/Variable.java
|
|
(setValue): calls update on the appropriate manager.
|
|
* src/org/eclipse/cdt/debug/mi/core/cdi/model/RegisterValue.java:
|
|
Remove file, unused.
|
|
* src/org/eclipse/cdt/debug/mi/core/cdi/VariableManager.java:
|
|
(getVariableObjectAsType): check for register.
|
|
(getVariableObjectAsArray): check for register.
|
|
* src/org/eclipse/cdt/debug/mi/core/cdi/RegisterManager.java:
|
|
(getRegister): reimplemented.
|
|
|
|
2003-06-18 Mikhail Khodjaiants
|
|
Removed unused local variable.
|
|
* src/org/eclipse/cdt/debug/mi/core/cdi/RegisterManager.java
|
|
|
|
2003-06-17 Alain Magloire
|
|
|
|
PR 38934
|
|
* src/org/eclipse/cdt/debug/mi/core/cdi/RegisterManager.java (update):
|
|
We have to call "-var-update" to update the register values in gdb.
|
|
|
|
2003-06-05 Mikhail Khodjaiants
|
|
gdb/mi support of infinite values of the floating point types.
|
|
* DoubleValue.java
|
|
* FloatingPointValue.java
|
|
* FloatValue.java
|
|
|
|
2003-06-05 Mikhail Khodjaiants
|
|
Removed the redundant methods from the 'ICDIFloatingPointValue' interface.
|
|
* src/org/eclipse/cdt/debug/mi/core/cdi/model/type/FloatingPointValue.java
|
|
|
|
2003-06-04 Mikhail Khodjaiants
|
|
Correction in the parsing of reference value.
|
|
* src/org/eclipse/cdt/debug/mi/core/cdi/model/type/ReferenceValue.java
|
|
|
|
2003-06-04 Mikhail Khodjaiants
|
|
Added some missing types and methods for the type parsing.
|
|
* src/org/eclipse/cdt/debug/mi/core/cdi/model/Variable.java
|
|
* src/org/eclipse/cdt/debug/mi/core/cdi/model/type/ArrayType.java
|
|
* src/org/eclipse/cdt/debug/mi/core/cdi/model/type/DoubleValue.java
|
|
* src/org/eclipse/cdt/debug/mi/core/cdi/model/type/FloatingPointValue.java
|
|
* src/org/eclipse/cdt/debug/mi/core/cdi/model/type/FloatValue.java
|
|
* src/org/eclipse/cdt/debug/mi/core/cdi/model/type/PointerValue.java: new
|
|
* src/org/eclipse/cdt/debug/mi/core/cdi/model/type/ReferenceValue.java: new
|
|
|
|
2003-06-03 Alain Magloire
|
|
|
|
* src/org/eclipse/cdt/debug/mi/core/GDBTypeParser.java:
|
|
Bug fix gdb returns fix like "char [200]" no variables.
|
|
|
|
2003-06-03 Alain Magloire
|
|
|
|
* src/org/eclipse/cdt/debug/mi/core/cdi/SourceManager.java
|
|
(getType): save the head of the type for the return value.
|
|
|
|
2003-06-02 Alain Magloire
|
|
|
|
Enable the new type parsing with the class GDBTypeParser.
|
|
This class takes the output of GDB/MI
|
|
(gdb) whatis
|
|
or
|
|
(gdb) ptype
|
|
And parse it.
|
|
|
|
* src/org/eclipse/cdt/debug/mi/core/cdi/model/type/ArrayType.java
|
|
* src/org/eclipse/cdt/debug/mi/core/cdi/model/type/DerivedType.java
|
|
* src/org/eclipse/cdt/debug/mi/core/cdi/model/type/PointerType.java
|
|
* src/org/eclipse/cdt/debug/mi/core/cdi/model/type/FunctionType.java
|
|
* src/org/eclipse/cdt/debug/mi/core/cdi/SourceManager.java
|
|
* src/org/eclipse/cdt/debug/mi/core/GDBTypeParser.java
|
|
|
|
2003-05-25 Alain Magloire
|
|
|
|
Do extra parsing.
|
|
* src/org/eclipse/cdt/debug/mi/core/model/type/ArrayType.java
|
|
* src/org/eclipse/cdt/debug/mi/core/model/type/DerivedType.java
|
|
* src/org/eclipse/cdt/debug/mi/core/model/type/PointerType.java
|
|
* src/org/eclipse/cdt/debug/mi/core/model/type/FunctionType.java
|
|
* src/org/eclipse/cdt/debug/mi/core/model/Variable.java
|
|
|
|
2003-05-24 Alain Magloire
|
|
|
|
* src/org/eclipse/cdt/debug/mi/core/cdi/StackFrame.java
|
|
When execption reset the variable to null and rethrow the exception.
|
|
|
|
2003-05-24 Alain Magloire
|
|
|
|
Continuing the implementation of types.
|
|
ICDIType is ICDIObject.
|
|
* src/org/eclispe/cdt/mi/core/cdi/model/type/Type.java:
|
|
Extends CObject
|
|
|
|
2003-05-23 Alain Magloire
|
|
|
|
Draft implementation of org.eclipse.cdt.debug.core.cdi.model.type/*
|
|
|
|
2003-05-06 Alain Magloire
|
|
|
|
* src/org/eclipse/cdt/debug/mi/core/cdi/model/Thread.java (suspend):
|
|
Suspend the program before selecting the thread.
|
|
|
|
2003-05-01 Mikhail Khodjaiants
|
|
Implementations of the new "terminateSessionOnExit" method of ICDIConfiguration.
|
|
* Configuration.java
|
|
* CoreFileConfiguration.java
|
|
|
|
2003-04-30 Alain Magloire
|
|
|
|
* src/org/eclipse/cdt/debug/mi/core/MIPlugin.java:
|
|
Call MIInferior.update() if attaching session.
|
|
|
|
2003-04-30 Alain Magloire
|
|
|
|
* src/org/eclipse/cdt/debug/mi/core/cdi/Configuration.java (supportsTerminate):
|
|
Returns true.
|
|
|
|
2003-04-25 Alain Magloire
|
|
|
|
* src/org/eclipse/cdt/debug/mi/core/EventManager.java (update):
|
|
Remove the call to MIInferior.update(), wrong place.
|
|
* src/org/eclipse/cdt/debug/mi/core/EventThread.java (run):
|
|
Call MIInferior.update() when suspended.
|
|
* src/org/eclipse/cdt/debug/mi/core/MIInferior.java (update):
|
|
Do not do the call to "info program" for type "attached" sessions.
|
|
* src/org/eclipse/cdt/debug/mi/core/MISession.java (terminate):
|
|
When terminate() is call disable posting commands to the queue etc...
|
|
|
|
2003-04-25 Mikhail Khodjaiants
|
|
|
|
Fix for bug 36909.
|
|
* MIFrame.java:
|
|
gdb returns "??" as a function name if symbols are not available.
|
|
Set the function name in this case to "";
|
|
|
|
2003-04-24 Alain Magloire
|
|
|
|
* src/org/eclipse/cdt/debug/mi/core/command/CommandFactory.java (createMIInfoProgram):
|
|
New method.
|
|
* src/org/eclipse/cdt/debug/mi/core/command/MIInfoProgram.java:
|
|
New file, "info program".
|
|
* src/org/eclipse/cdt/debug/mi/core/output/MIInfoProgramInfo.java:
|
|
New file, parsing of "info Program".
|
|
* src/org/eclipse/cdt/debug/mi/core/output/EventManager.java (processSuspend):
|
|
Call MIInferio.update();
|
|
* src/org/eclipse/cdt/debug/mi/core/MIInferior.java (update):
|
|
New method to retrieve the pid.
|
|
(interrupt): Try doing Spawner.raise(pid, INT) as a fallback.
|
|
* src/org/eclipse/cdt/debug/mi/core/cdi/Configuration.java (supportSuspend):
|
|
Bug fix.
|
|
|
|
2003-04-23 Alain Magloire
|
|
|
|
* src/org/eclipse/cdt/debug/mi/core/cdi/SignalManager.java (update):
|
|
Move the creation of the list after the call to "info signals".
|
|
The call may fail.
|
|
|
|
2003-04-21 Alain Magloire
|
|
|
|
* src/org/eclipse/cdt/debug/mi/core/cdi/Target.java (suspend):
|
|
Remove the delay of 10 secs.
|
|
* src/org/eclipse/cdt/debug/mi/core/MIInferior.java (interrupt):
|
|
Do a delay of 10 secs to allow time for the inferior to stop.
|
|
* src/org/eclipse/cdt/debug/mi/core/MISession.java (terminate) :
|
|
Clear the EventQueue, if we restart.
|
|
* src/org/eclipse/cdt/debug/mi/core/Queue (isEmpty):
|
|
New method.
|
|
|
|
2003-04-21 Alain Magloire
|
|
|
|
* src/org/eclipse/cdt/debug/mi/core/GDBDebugger.java:
|
|
* src/org/eclipse/cdt/debug/mi/core/GDBServerDebugger.java:
|
|
Ignore exception when doing "set auto-solib-path on".
|
|
|
|
2003-04-17 Alain Magloire
|
|
|
|
* src/org/eclipse/cdt/debug/mi/core/cdi/model/Target.java:
|
|
setCurrentThread(), calls VariableManager.update();
|
|
* src/org/eclipse/cdt/debug/micore/cdt/model/Thread.java:
|
|
setCurrentStackFrame() calls VariableManager.update();
|
|
|
|
2003-04-07 Mikhail Khodjaiants
|
|
Changed the messages of CDI exceptions.
|
|
* MISession.java
|
|
* Target.java
|
|
|
|
2003-04-04 Alain Magloire
|
|
|
|
Code from Monta Vista to add a Session via GDBServer.
|
|
|
|
* src/org/eclipse/cdt/debug/mi/core/MIPlugin.java:
|
|
* src/org/eclipse/cdt/debug/mi/core/GDBServerDebugger.java:
|
|
* src/org/eclipse/cdt/debug/mi/core/IGDBServerMILaunchConfigurationConstants.java:
|
|
* plugin.xml
|
|
|
|
2003-04-04 Alain Magloire
|
|
|
|
* src/org/eclipse/cdt/debug/mi/core/cdt/VariableManager.java:
|
|
Check for null in update().
|
|
|
|
2003-04-03 Alain Magloire
|
|
|
|
* src/org/eclipse/cdt/debug/mi/core/cdt/VariableManager.java:
|
|
update(), put a limit on the number of stack we check for variables.
|
|
|
|
2003-04-03 Alain Magloire
|
|
|
|
* src/org/eclipse/cdt/debug/mi/core/cdt/model/Target.java:
|
|
* src/org/eclipse/cdt/debug/mi/core/cdt/model/Thread.java:
|
|
Before updating the register check if the manager is on autoupdate.
|
|
|
|
2003-04-02 Alain Magloire
|
|
|
|
* src/org/eclipse/cdt/debug/mi/core/cdt/model/Target.java:
|
|
suspend() sync for at least < 10 seconds to allow the gdb to
|
|
suspend via SIGINT the program.
|
|
|
|
2003-03-28 Mikhail Khodjaiants
|
|
Added time stamp to the trace messages.
|
|
* MIPlugin.java
|
|
|
|
2003-03-28 Mikhail Khodjaiants
|
|
Correction of the previous patch.
|
|
* MIAsm.java
|
|
|
|
2003-03-27 Mikhail Khodjaiants
|
|
Applied patch from Chris Songer: Assembly View Fixups
|
|
* Instruction.java
|
|
* MIAsm.java
|
|
|
|
2003-03-19 Alain Magloire
|
|
|
|
Some applications, like recursive code, have a very deep stackframes
|
|
bigger > 50. This can turn out to be a problem, as the VariableManager
|
|
will try to update all the variables and there can be a lot of local
|
|
variable in all those stackframes. We can not use:
|
|
"-var-update *"
|
|
either since on gdb-5.2.1, for reasons unknown to me this will make
|
|
gdb unstable/crash. So the approach is to only update variables
|
|
in the current stackframe.
|
|
The advantage we only update a small set of variables.
|
|
The downside if we have side effects i.e. pointers pass to
|
|
argument and modifying the pointer affect the callees memory.
|
|
But this is a small price to pay and usually C/C++ programmer
|
|
are interrested to see changes of variables in the current stack
|
|
not changes 20 stack before.
|
|
|
|
* src/org/eclipse/cdt/debug/mi/core/cdi/VariableManager.java:
|
|
Method update() only check the variable in the scope of the
|
|
current stackframe(the highest stack). This will include
|
|
any globals.
|
|
|
|
2003-03-19 Alain Magloire
|
|
|
|
Base on PR/patch from Chris Songer.
|
|
Assigning a value to a register may have side-effects
|
|
on other registers. When assigning, the action is now
|
|
to upate again the values. The same for the variables.
|
|
|
|
* src/org/eclipse/cdt/debug/mi/core/cdi/model/Variable.java:
|
|
* src/org/eclipse/cdt/debug/mi/core/cdi/model/Register.java:
|
|
Method setValue() calls manager.update() after the assignment.
|
|
|
|
2003-03-17 Alain Magloire
|
|
|
|
* src/org/eclipse/cdt/debug/mi/core/cdi/model/StackFrame.java:
|
|
getArguments() and getLocalVariable() are caching the results.
|
|
|
|
2003-03-16 Alain Magloire
|
|
|
|
GDB/MI does not keep the stack level, from what we expect. In gdb, the
|
|
highest stack is level 0 and lower stack as the highest level:
|
|
-stack-list-frames
|
|
^done,stack=[frame={level="0 ",addr="0x0804845b",func="main",file="hello.c",line="24"},
|
|
frame={level="1 ",addr="0x42017499",func="__libc_start_main",from="/lib/i686/libc.so.6"}]
|
|
|
|
-stack-list-frames
|
|
^done,stack=[frame={level="0 ",addr="0x08048556",func="main2",file="hello.c",line="58"},
|
|
frame={level="1 ",addr="0x08048501",func="main",file="hello.c",line="41"},
|
|
frame={level="2 ",addr="0x42017499",func="__libc_start_main",from="/lib/i686/libc.so.6"}]
|
|
|
|
This is of no use to us since the level is always "0". The level is necessary for example when
|
|
doing recursive calls to make a distinction between frames.
|
|
So in CDT this reverse the hidghest frame will have the highest number. In CDT:
|
|
stack=[frame={level="2 ",addr="0x0804845b",func="main",file="hello.c",line="24"},
|
|
frame={level="1 ",addr="0x42017499",func="__libc_start_main",from="/lib/i686/libc.so.6"}]
|
|
|
|
stack=[frame={level="3 ",addr="0x08048556",func="main2",file="hello.c",line="58"},
|
|
frame={level="2 ",addr="0x08048501",func="main",file="hello.c",line="41"},
|
|
frame={level="1 ",addr="0x42017499",func="__libc_start_main",from="/lib/i686/libc.so.6"}]
|
|
|
|
|
|
* src/org/eclipse/cdt/debug/mi/core/cdi/model/StackFrame.java:
|
|
Takes a new Argument in the constructor, the level.
|
|
* src/org/eclipse/cdt/debug/mi/core/cdi/model/Threawd.java:
|
|
Create the StackFrame with the constructor.
|
|
* src/org/eclipse/cdt/debug/mi/core/cdi/Location.java:
|
|
Fix equals().
|
|
* src/org/eclipse/cdt/debug/mi/core/cdi/VariableManager.java:
|
|
Use the right level when setting the frame.
|
|
|
|
2003-03-14 Alain Magloire
|
|
|
|
* src/org/eclipse/cdt/debug/mi/core/cdi/model/Argument.java:
|
|
New method getArgumentObject().
|
|
* src/org/eclipse/cdt/debug/mi/core/cdi/model/Register.java:
|
|
New method getRegisterObject().
|
|
* src/org/eclipse/cdt/debug/mi/core/cdi/VariableManager.java:
|
|
Checks for ICDIVariable and ICDIArgument since they are now ICDIVariableObject too.
|
|
* src/org/eclipse/cdt/debug/mi/core/cdi/RegisterManager.java:
|
|
Checks for ICDIRegister when creating since they are now ICDIRegisterObject too.
|
|
|
|
2003-03-13 Alain Magloire
|
|
|
|
Small bug fix
|
|
* src/org/eclipse/cdt/debug/mi/core/cdi/VariableManager.java
|
|
|
|
2003-03-13 Alain Magloire
|
|
|
|
* src/org/eclipse/cdt/debug/mi/core/cdi/VariableManager.java:
|
|
New method getLocalVariableObjects() implemented returns all the local.
|
|
* src/org/eclipse/cdt/debug/mi/core/cdi/model/StackFrame.java
|
|
getLocalVariables() use getLocalVariableObjects().
|
|
* src/org/eclipse/cdt/debug/mi/core/cdi/model/Variable.java:
|
|
getName() does not longer throw an Exception.
|
|
|
|
2003-03-11 Alain Magloire
|
|
|
|
* src/org/eclipse/cdt/debug/mi/core/cdi/VariableManager.java:
|
|
New methods getVariableObjectAsArray() getVariableObjectAsType().
|
|
|
|
2003-03-03 Alain Magloire
|
|
|
|
* src/org/eclipse/cdt/debug/mi/core/CommandQueue.java (print): Comment out.
|
|
* src/org/eclipse/cdt/debug/mi/core/Queue.java (print): Comment out.
|
|
|
|
2003-02-12 Mikhail Khodjaiants
|
|
The 'setAutoSolib' method is no longer in ICDISharedLibraryManager.
|
|
* GDBDebugger.java
|
|
|
|
2003-02-12 Alain Magloire
|
|
|
|
* src/org/eclipse/cdt/debug/mi/core/cdi/model/Target.java:
|
|
Removed getRegisterObjects(), getRegisters(), getSharedLibraries().
|
|
Those actions are done via the managers.
|
|
|
|
* src/org/eclipse/cdt/debug/mi/core/cdi/model/Variable.java (getChild):
|
|
Check the grand children also.
|
|
|
|
2003-02-12 Alain Magloire
|
|
|
|
* src/org/eclipse/cdt/debug/mi/core/cdi/SharedLibraryManager.java (isAutoLoadSymbols):
|
|
New method.
|
|
* src/org/eclipse/cdt/deb/mi/core/command/MIGDBShow.java (getMIGDBShowInfo):
|
|
New method.
|
|
|
|
2003-02-12 Alain Magloire
|
|
|
|
* src/org/eclipse/cdt/debug/mi/core/cdi/event/ChangedEvent.java (ChangedEvent):
|
|
Returns a Variable.
|
|
* src/org/eclipse/cdt/debug/mi/core/cdi/event/DestroyedEvent.java (DestroyedEvent):
|
|
Check if it was an expression also.
|
|
* src/org/eclipse/cdt/debug/mi/core/cdi/model/Value.java (getVariables):
|
|
Calls the parent's implementation.
|
|
* src/org/eclipse/cdt/debug/mi/core/cdi/model/Variable.java (getVariables):
|
|
New implementation.
|
|
* src/org/eclipse/cdt/debug/mi/core/cdi/EventManager.java (update):
|
|
Deal with new MIVarDeleteEvent.
|
|
* src/org/eclipse/cdt/debug/mi/core/cdi/ExpressionManager.java (addExpression):
|
|
Removed.
|
|
(removeExpression): New method.
|
|
* src/org/eclipse/cdt/debug/mi/core/event/MIVarChangedEvent.java (getScope):
|
|
removed.
|
|
* src/org/eclipse/cdt/debug/mi/core/event/MIVarDeletedEvent.java:
|
|
New file.
|
|
|
|
2003-02-09 Alain Magloire
|
|
|
|
in GDB/MI 5.3 and below, the -data-list-register-xxx can bring gdb down with
|
|
an assert(). The problem is that code like this
|
|
ui_out_list_begin();
|
|
for () {
|
|
if(error)
|
|
return ERROR;
|
|
}
|
|
ui_out_list_end();
|
|
The ui_out_list_end() is never call.
|
|
However gdb offers the varobj to deal cleanly with register but calling
|
|
"-var-update *" seems to make gdb misbehave and hang after a while.
|
|
So we use a mixed of -data-list-register-xxx calls and var-object to deal
|
|
with registers and do not call "-var-update *" but rather call it for
|
|
each time for individual objects to see the updates.
|
|
|
|
* src/org/eclipse/cdt/debug/mi/core/cdi/model/Register.java:
|
|
Reimplemented to use the var obj.
|
|
* src/org/eclipse/cdt/debug/mi/core/cdi/model/RegisterValue.java:
|
|
New file implement ICDIValue.
|
|
* src/org/eclipse/cdt/debug/mi/core/cdi/EventManagero.java (processSuspendedEvent):
|
|
Call each manager.update().
|
|
* src/org/eclipse/cdt/debug/mi/core/cdi/ExpressionManager.java (update):
|
|
Reimplemented.
|
|
* src/org/eclipse/cdt/debug/mi/core/cdi/RegisterManager.java (update):
|
|
Reimplemented
|
|
* src/org/eclipse/cdt/debug/mi/core/cdi/UpdateManager.java:
|
|
Removed.
|
|
* src/org/eclipse/cdt/debug/mi/core/cdi/IUpdateListener.java:
|
|
Removed.
|
|
* src/org/eclipse/cdt/debug/mi/core/CLIProcessor.java:
|
|
Catch the cli "run" command.
|
|
|
|
2003-02-06 Alain Magloire
|
|
|
|
* src/org/eclipse/cdt/debug/mi/core/cdi/VariableManager.java (getVariableArrayObject):
|
|
New Method to type cast in an array.
|
|
* src/org/eclipse/cdt/debug/mi/core/cdi/model/VariableObject.java (VariableObject):
|
|
New constructor.
|
|
* src/org/eclipse/cdt/debug/mi/core/cdi/SignalManger.java(getSignal):
|
|
Return an signal object even when the session is terminated.
|
|
|
|
2003-02-05 Alain Magloire
|
|
|
|
* src/org/eclipse/cdt/debug/mi/core/command/MISignal.java:
|
|
* src/org/eclipse/cdt/debug/mi/core/command/MIJump.java:
|
|
Return a fake ^running, since the MI semantic is not respected.
|
|
|
|
2003-02-04 Alain Magloire
|
|
|
|
* src/org/eclipse/cdt/debug/mi/core/CLICommand.java:
|
|
Catch cli command "jump"
|
|
|
|
2003-02-04 Alain Magloire
|
|
|
|
* src/org/eclipse/cdt/debug/mi/core/cdi/model/Target.java:
|
|
* src/org/eclipse/cdt/debug/mi/core/cdi/model/Thread.java:
|
|
New implementation for signal(), jump, and stepReturn(boolean).
|
|
* src/org/eclipse/cdt/debug/mi/core/cdi/model/Signal.java:
|
|
(signal): Calls Target.signal().
|
|
* src/org/eclipse/cdt/debug/mi/core/cdi/model/SignalManager.java:
|
|
(signal): Method removed.
|
|
* src/org/eclipse/cdt/debug/mi/core/command/MIJump.java:
|
|
New file.
|
|
* src/org/eclipse/cdt/debug/mi/core/command/CommandFactory.java:
|
|
New method creteMIJump().
|
|
|
|
2003-02-04 Alain Magloire
|
|
|
|
* src/org/eclipse/cdt/debug/mi/core/cdi/SignalManger.java:
|
|
Implement signal() method.
|
|
* src/org/eclipse/cdt/debug/mi/core/command/MISignal.java:
|
|
New file.
|
|
* src/org/eclipse/cdt/debug/mi/core/command/CommandFactory.java:
|
|
(createMISignal): new method.
|
|
|
|
2003-02-04 Alain Magloire
|
|
|
|
* src/org/eclipse/cdt/debug/mi/core/cdi/event/ExitedEvent.java:
|
|
Catch MIInferiorSignalExitEvent.
|
|
* src/org/eclipse/cdt/debug/mi/core/cdi/event/ExitedEvent.java:
|
|
Catch MIInferiorSignalExitEvent.
|
|
* src/org/eclipse/cdt/debug/mi/core/cdi/SignalExitInfo.java:
|
|
New File.
|
|
* src/org/eclipse/cdt/debug/mi/core/event/MIInferiorSignalExitEvent.java:
|
|
New File
|
|
* src/org/eclipse/cdt/debug/mi/core/event/CLIProcessir.java:
|
|
"signal" command is like continue.
|
|
* src/org/eclipse/cdt/debug/mi/core/event/RxThread.java:
|
|
Catch MIInferiorSignalExitEvent.
|
|
|
|
2003-02-04 Alain Magloire
|
|
|
|
Refactor MISignal in MISigHandle to not confus with
|
|
CLI command "signal SIGNAL".
|
|
|
|
* src/org/eclipse/cdt/debug/mi/core/cdi/model/Signal.java:
|
|
* src/org/eclipse/cdt/debug/mi/core/cdi/SignalManager.java:
|
|
* src/org/eclipse/cdt/debug/mi/core/output/MIInfoSignalsInfo.java:
|
|
* src/org/eclipse/cdt/debug/mi/core/output/MISigHandle.java:
|
|
|
|
2003-02-03 Alain Magloire
|
|
|
|
* src/org/eclipse/cdt/debug/mi/core/cdi/SharedLibraryManager.java:
|
|
(loadSymbols): set the read flag to true.
|
|
* src/org/eclipse/cdt/debug/mi/core/cdi/model/SharedLibrary.java:
|
|
(getMIShared): New method.
|
|
* src/org/eclipse/cdt/debug/mi/core/output/MIShared.java:
|
|
(setSymbolsRead): New method.
|
|
|
|
2003-02-01 Alain Magloire
|
|
|
|
* src/org/eclipse/cdt/debug/mi/core/cdi/event/ChangedEvent.java:
|
|
Support for ICDISignal event.
|
|
* src/org/eclipse/cdt/debug/mi/core/cdi/model/Signal.java (handle):
|
|
Implemented.
|
|
* src/org/eclipse/cdt/debug/mi/core/cdi/EventManager.java (update):
|
|
Support for ICDISignal event.
|
|
* src/org/eclipse/cdt/debug/mi/core/cdi/SignalManager.java (handle):
|
|
New method.
|
|
* src/org/eclipse/cdt/debug/mi/core/command/CommandFactory.java (createMIHandle):
|
|
New method
|
|
* src/org/eclipse/cdt/debug/mi/core/command/MIHandle.java:
|
|
New File.
|
|
* src/org/eclipse/cdt/debug/mi/core/CLICommand.java:
|
|
Check for "handle" and "signal" cli command.
|
|
|
|
2003-01-31 Alain Magloire
|
|
|
|
* src/org/eclipse/cdt/debug/mi/core/cdi/event/DestroyedEvent.java:
|
|
Use deleteSharedLibrary from the manager.
|
|
* src/org/eclipse/cdt/debug/mi/core/cdi/signal/Signal.java:
|
|
Construct a signal base on the MISignal response.
|
|
* src/org/eclipse/cdt/debug/mi/core/cdi/BreakpointManager.java
|
|
(suspendedInferior): Take ICDITarget as argument.
|
|
(resumeInferior): Take ICDITarget as argument.
|
|
* src/org/eclipse/cdt/debug/mi/core/cdi/SharedLibraryManager.java
|
|
(containsSharedLibrary): removed.
|
|
* src/org/eclipse/cdt/debug/mi/core/cdi/SignalManager.java
|
|
(update): implemented.
|
|
(getSignals): implemented.
|
|
* src/org/eclipse/cdt/debug/mi/core/cdi/SignalReceived.java:
|
|
Ask the manager for the signal.
|
|
* src/org/eclipse/cdt/debug/mi/core/event/MISignalEvent.java:
|
|
New file.
|
|
|
|
2003-01-29 Alain Magloire
|
|
|
|
* src/org/eclipse/cdt/debug/mi/core/cdi/SharedLibraryManager.java (getSharedLibraryPaths):
|
|
New method.
|
|
(setSharedLibraryPaths): New method.
|
|
(setAutoLoadSymbols): New methos set autosolib.
|
|
* src/org/eclipse/cdt/debug/mi/core/cdi/SourceManager.java (setAutoSolib):
|
|
Move to SharedLibraryManager.java
|
|
|
|
2003-01-28 Alain Magloire
|
|
|
|
* src/org/eclipse/cdt/debug/mi/core/command/MIInfoSignals.java:
|
|
* src/org/eclipse/cdt/debug/mi/core/output/MIInfoSignalsInfo.java:
|
|
* src/org/eclipse/cdt/debug/mi/core/output/MISignal.java:
|
|
New files.
|
|
|
|
2003-01-28 Alain Magloire
|
|
|
|
* src/org/eclipse/cdt/debug/mi/core/cdi/model/ArgumentObject.java:
|
|
Use ICDIStackFrame in the constructor.
|
|
* src/org/eclipse/cdt/debug/mi/core/cdi/model/RegisterObject.java:
|
|
Use ICDIStackFrame in the constructor.
|
|
* src/org/eclipse/cdt/debug/mi/core/cdi/model/VariableObject.java:
|
|
Use ICDIStackFrame in the constructor.
|
|
* src/org/eclipse/cdt/debug/mi/core/cdi/model/Value.java (getVariables):
|
|
No need to cast to StackFrame.
|
|
* src/org/eclipse/cdt/debug/mi/core/cdi/model/Thread.java (setCurrentFrame):
|
|
Implement new method, takes a boolean as the second method.
|
|
* src/org/eclipse/cdt/debug/mi/core/cdi/ExpressionManager.java:
|
|
No need to cast to StackFrame.
|
|
* src/org/eclipse/cdt/debug/mi/core/cdi/VariableManager.java:
|
|
No need to cast to StackFrame.
|
|
|
|
2003-01-28 Alain Magloire
|
|
|
|
* src/org/eclipse/cdt/debug/mi/core/cdi/model/Breakpoint.java (getCondition):
|
|
Condition was initialize with the wrong parameter.
|
|
(setMIBreakpoint): reset location and condition.
|
|
|
|
2003-01-28 Alain Magloire
|
|
|
|
* src/org/eclipse/cdt/debug/mi/core/cdi/model/Breakpoint.java (setMIBreakpoint):
|
|
New method.
|
|
* src/org/eclipse/cdt/debug/mi/core/cdi/BreakpointManager.java (update):
|
|
Reset the new MIBreakpoint on the Breakpoint object.
|
|
(containsBreakpoint): Removed.
|
|
(hasBreakpointChanged): Change arguments.
|
|
* src/org/eclipse/cdt/debug/mi/core/output/MIBreakpoint.java (parser):
|
|
Better check for watchpoints.
|
|
* src/org/eclipse/cdt/debug/mi/core/CLIProcessor.java (isChangeBreakpoint):
|
|
Check for "ignore" and "condition" cli commands.
|
|
|
|
2003-01-27 Alain Magloire
|
|
|
|
* src/org/eclipse/cdt/debug/mi/core/cdi/model/Register.java (getTypeName):
|
|
Use MIWhatis to get the type of the register.
|
|
(getVariables): Cache the answer.
|
|
* src/org/eclipse/cdt/debug/mi/core/cdi/SharedLibraryManager.java (loadSymbols):
|
|
Use MISharedLibrary.
|
|
* src/org/eclipse/cdt/debug/mi/core/command/CommandFactory.java (createMIWhatis):
|
|
New method.
|
|
(MIPType): New method.
|
|
* src/org/eclipse/cdt/debug/mi/core/command/MISharedLibrary.java:
|
|
New file.
|
|
|
|
|
|
2003-01-27 Alain Magloire
|
|
|
|
* src/org/eclipse/cdt/debug/mi/core/cdi/model/Target.java (getCThreads):
|
|
When attaching gdb(at least on some platform) does not show
|
|
the selected thread(info threads). Fallback on the first one.
|
|
|
|
2003-01-27 Alain Magloire
|
|
|
|
* src/org/eclipse/cdt/debug/mi/core/cdi/VariableManager.java (findVariable):
|
|
Bug fix, did not compare the stacks correctly.
|
|
|
|
2003-01-27 Alain Magloire
|
|
|
|
* src/org/eclipse/cdt/debug/mi/core/cdi/model/VariableObject.java:
|
|
* src/org/eclipse/cdt/debug/mi/core/cdi/model/ArgumentObject.java:
|
|
* src/org/eclipse/cdt/debug/mi/core/cdi/model/RegisterObject.java:
|
|
Move to model package.
|
|
|
|
2003-01-26 Alain Magloire
|
|
|
|
Major refactor of the code. Rewrote/Added Managers:
|
|
VariableManager
|
|
ExpressionManager
|
|
RegisterManager
|
|
UpdateManager.
|
|
|
|
Refactor of CSession to Session, CTarget to Target
|
|
and CThread to Thread.
|
|
* src/.../mi/core/cdi/event/ChangedEvent.java:
|
|
* src/.../mi/core/cdi/event/CreatedEvent.java:
|
|
* src/.../mi/core/cdi/event/DestroyedEvent.java:
|
|
* src/.../mi/core/cdi/event/DisconnectedEvent.java:
|
|
* src/.../mi/core/cdi/event/ExitedEvent.java:
|
|
* src/.../mi/core/cdi/event/MemoryChangedEvent.java:
|
|
* src/.../mi/core/cdi/event/ResumedEvent.java:
|
|
* src/.../mi/core/cdi/event/SuspendedEvent.java:
|
|
|
|
|
|
* src/.../mi/core/cdi/model/Argument.java:
|
|
* src/.../mi/core/cdi/model/Breakpoint.java:
|
|
* src/.../mi/core/cdi/model/Thread.java:
|
|
* src/.../mi/core/cdi/model/Target.java:
|
|
* src/.../mi/core/cdi/model/MemoryBlock.java:
|
|
* src/.../mi/core/cdi/model/MixedInstruction.java:
|
|
* src/.../mi/core/cdi/model/Instruction.java:
|
|
* src/.../mi/core/cdi/model/Signal.java:
|
|
* src/.../mi/core/cdi/model/SharedLibrary.java:
|
|
* src/.../mi/core/cdi/model/CObject.java:
|
|
* src/.../mi/core/cdi/model/Expression.java:
|
|
* src/.../mi/core/cdi/model/Variable.java:
|
|
* src/.../mi/core/cdi/model/Value.java:
|
|
* src/.../mi/core/cdi/model/Register.java:
|
|
* src/.../mi/core/cdi/model/StackFrame.java:
|
|
|
|
* src/.../mi/core/cdi/ArgumentObject.java:
|
|
* src/.../mi/core/cdi/VariableObject.java:
|
|
* src/.../mi/core/cdi/RegisterObject.java:
|
|
* src/.../mi/core/cdi/BreakpointHit.java:
|
|
* src/.../mi/core/cdi/BreakpointManager.java:
|
|
* src/.../mi/core/cdi/VariableManager.java:
|
|
* src/.../mi/core/cdi/ExpressionManager.java:
|
|
* src/.../mi/core/cdi/RegisterManaget.java:
|
|
* src/.../mi/core/cdi/SignalManager.java:
|
|
* src/.../mi/core/cdi/SharedLibraryManager.java:
|
|
* src/.../mi/core/cdi/EventManager.java:
|
|
* src/.../mi/core/cdi/MemoryManager.java:
|
|
* src/.../mi/core/cdi/ErrorInfo.java:
|
|
* src/.../mi/core/cdi/Session.java:
|
|
* src/.../mi/core/cdi/ExitInfo.java:
|
|
* src/.../mi/core/cdi/UpdateManager.java:
|
|
* src/.../mi/core/cdi/IUpdateListener.java:
|
|
* src/.../mi/core/cdi/SessionObject.java:
|
|
* src/.../mi/core/cdi/SignalReceived.java:
|
|
* src/.../mi/core/cdi/SourceManager.java:
|
|
* src/.../mi/core/cdi/RuntimeOptions.java:
|
|
* src/.../mi/core/cdi/WatchpointScope.java:
|
|
* src/.../mi/core/cdi/WatchpointTrigger.java:
|
|
* src/.../mi/core/cdi/EndSteppingRange.java:
|
|
|
|
* src/.../mi/core/MIPlugin.java:
|
|
* src/.../mi/core/CygwinGDBDebugger.java:
|
|
* src/.../mi/core/GDBDebugger.java:
|
|
|
|
|
|
|
|
2003-01-24 Alain Magloire
|
|
|
|
* src/.../mi/core/CLIProcessor.java (isEnableBreakpoint):
|
|
Check for "enable", "disable" cli commands.
|
|
|
|
2003-01-23 Alain Magloire
|
|
|
|
* src/.../mi/core/CLIProcessor.java (isDeletingBreakpoint):
|
|
Check for "d" it means delete breakpoints.
|
|
|
|
2003-01-20 Alain Magloire
|
|
|
|
* src/.../mi/core/cdi/Configuration.java (supporstSharedLibrary):
|
|
New method.
|
|
* src/.../mi/core/cdi/CoreFileConfiguration.java (supporstSharedLibrary):
|
|
New method.
|
|
* src/.../mi/core/cdi/SharedLibraryManager.java (update):
|
|
Checks if support for shared Libary before doin an update.
|
|
|
|
2003-01-20 Alain Magloire
|
|
|
|
* src/.../mi/core/cdi/SuspendedEvent.java: Use SignalReceived.
|
|
* src/.../mi/core/cdi/model/Signal.java: New file.
|
|
* src/.../mi/core/cdi/model/SignalManager.java: Use model/Signal.
|
|
* src/.../mi/core/cdi/SignalReceived.java: New file.
|
|
|
|
2003-01-20 Alain Magloire
|
|
|
|
The problem was that no check was done for the existence of
|
|
the program/executable nor the working directory etc ...
|
|
By asking the arguements to be File, the check is done by
|
|
the caller.
|
|
|
|
* src/.../mi/core/MIPlugin.java (createCSession): Change the
|
|
the arguments.
|
|
* src/.../mi/core/GDBDebugger.java (createCSession): Change the
|
|
|
|
2003-01-20 Alain Magloire
|
|
|
|
* src/.../mi/core/command/MIWhatis.java: New file.
|
|
* src/.../mi/core/command/MIPType.java: New file.
|
|
* src/.../mi/core/command/MISharedLibary.java: New file.
|
|
* src/.../mi/core/output/MIWhatisInfo.java: New file.
|
|
* src/.../mi/core/output/MIPTypeInfo.java: New file.
|
|
|
|
2003-01-18 Alain Magloire
|
|
|
|
* src/.../mi/core/cdi/event/DestroyedEvent.java (DestroyedEvent):
|
|
Remove the deleted shared library from the list.
|
|
* src/.../mi/core/cdi/SharedLibraryManager.java (getUnloadedLibrary):
|
|
Get a shared library slated for unload.
|
|
(removeFromUnloadedList): Remove the library form the list.
|
|
|
|
2003-01-17 Alain Magloire
|
|
|
|
* src/.../mi/core/output/MIInfoSharedLibraryInfo.java (parseWinShared):
|
|
Break the methods in parserUnixShared() and parseWinShared() to cope
|
|
with the different formats.
|
|
|
|
2003-01-17 Alain Magloire
|
|
|
|
* src/.../mi/core/cdi/SharedLibraryManager.java (loadSymbols):
|
|
New method takes and array of ICDISharedLibrary.
|
|
* src/.../mi/core/cdi/SharedLibrary.java (loadSymbols):
|
|
Call the share manager to load.
|
|
|
|
2003-01-17 Alain Magloire
|
|
|
|
* src/.../mi/core/cdi/SharedLibraryManager.java (loadSymbols):
|
|
Call "shared libraryname".
|
|
|
|
2003-01-17 Alain Magloire
|
|
|
|
The problem here is that we do not knw the state of
|
|
the session, for example "target remote server:port"
|
|
was issue, in this case the state is suspended.
|
|
We try to guess by posting a "info remote-process"
|
|
and set suspended when no error.
|
|
|
|
* src/.../mi/core/MIPlugin.java (createCSession):
|
|
Try "info remote-process" to guess the state.
|
|
Remove the "new-console" call to windows specific files.
|
|
* src/.../mi/core/CygwinGDBDebugger.java(createLaunchSession):
|
|
call "set new-console" for windows plaforms.
|
|
|
|
2003-01-16 Alain Magloire
|
|
|
|
* src/.../mi/core/cdi/SharedLibary.java (setMIShared):
|
|
New method.
|
|
* src/.../mi/core/cdi/SharedLibraryManager.java (update):
|
|
When changed reset the MIShared of the SharedLibrary.
|
|
|
|
2003-01-16 Alain Magloire
|
|
|
|
Process gdbinit configuration file.
|
|
|
|
* src/.../mi/core/MIPlugin.java (createCSession): Takes now two new
|
|
arguments for working directory and configuration file gdbinit.
|
|
* src/.../mi/core/GDBDebugger.java (createAttachSession):
|
|
(createCoreSession): pass the working directory and gdbinit file
|
|
(createLaunchSession): pass the working directory and gdbinit file
|
|
* src/.../mi/core/IMILaunchConfigurationConstants.java:
|
|
New constant ATTR_GDB_INIT.
|
|
|
|
2003-01-16 Alain Magloire
|
|
|
|
* src/.../mi/core/cdi/EventManager.java (processSuspended):
|
|
Also process the Shared lib by calling update on the manager.
|
|
|
|
* src/.../mi/core/cdi/CSession.java: Create a shared
|
|
library manager.
|
|
|
|
2003-01-16 Alain Magloire
|
|
|
|
* src/.../mi/core/event/MISharedLibCreatedEvent.java: New file.
|
|
* src/.../mi/core/event/MISharedLibChangedEvent.java: New file.
|
|
* src/.../mi/core/event/MISharedLibUndloadedEvent.java: New file.
|
|
|
|
* src/.../mi/core/cdi/event/CreatedEvent.java:
|
|
new constructors to deal with MISharedLibCreatedEvent.
|
|
* src/.../mi/core/cdi/event/ChangedEvent.java:
|
|
new constructors to deal with MISharedLibChangedEvent.
|
|
* src/.../mi/core/cdi/event/DestroyedEvent.java:
|
|
new constructors to deal with MISharedLibUnloadedEvent.
|
|
|
|
* src/.../mi/core/cdi/model/SharedLibrary.java: New file.
|
|
|
|
* src/.../mi/core/cdi/SharedLibraryManager.java: New file.
|
|
* src/.../mi/core/cdi/CSession.java (getSharedLibraryManager):
|
|
New method.
|
|
* src/.../mi/core/cdi/EventManager.java (update):
|
|
Deal with the new MISharedLibXXXEvents.
|
|
|
|
2003-01-15 Alain Magloire
|
|
|
|
* src/.../mi/core/command/CommandFactory.java (createMIInfoSharedLibrary):
|
|
New method.
|
|
* src/../mi/core/command/MIInfoSharedLibrary.java: New file.
|
|
* src/../mi/core/output/MIInfoSharedLibraryInfo.java: New File.
|
|
* src/../mi/core/output/MIShared.java: new File.
|
|
|
|
2003-01-13 Mikhail Khodjaiants
|
|
* CTarget.java: in the 'runUntil' method check if file name or function name length > 0, otherwise use address.
|
|
|
|
2003-01-10 Alain Magloire
|
|
|
|
* src/.../mi/core/cdi/BreakpointManager.java (update): fix subscript
|
|
(setCondition): Fire a ChangedEvent.
|
|
(enableBreakpoint): Fire a ChangedEvent.
|
|
(disableBreakpoint): Fire a ChangedEvent.
|
|
|
|
2003-01-10 Alain Magloire
|
|
|
|
* src/.../mi/core/cdi/model/CTarget.java (runUntil): Address breakpoint
|
|
needs a "*" prefix.
|
|
|
|
2003-01-09 Alain Magloire
|
|
|
|
* src/.../mi/core/cdi/BreakpointManager.java (hasBreakpointChanged):
|
|
Implemented.
|
|
|
|
2003-01-09 Alain Magloire
|
|
|
|
* src/.../mi/core/cdi/model/CTarget.java (setCurrentThread): takes
|
|
a new argument to decide if the events should be fired.
|
|
* src/.../mi/core/cdi/model/CThread.java (getStackFrameCount): use
|
|
the setCurrentThread() with events updates disable
|
|
(getStackFrames): Ditto.
|
|
(updateState): Wrong subscript in the loop.
|
|
|
|
2003-01-09 Alain Magloire
|
|
|
|
Generate CreatedEvent's for Variable, Argument, Expression, Memory, Thread
|
|
objects when they are created. This makes it consistent with the generated
|
|
DestroyedEvent's.
|
|
|
|
* src/.../mi/core/cdi/EventManager.java (update): Deal with
|
|
MI{Register,Memory,Thread,Var}CreatedEvent events.
|
|
* src/.../mi/core/cdi/model/Ctarget.java (updateState): Fire events
|
|
when threads are created or destroyed.
|
|
* src/.../mi/core/cdi/model/MemoryBlock.java: Move here.
|
|
* src/.../mi/core/cdi/model/Register.java (getID): rename getId() to getID().
|
|
* src/.../mi/core/cdi/event/CreatedEvent.java: New constructors
|
|
to deal with MI{Register,Memory,Thread,Var}CreatedEvent.
|
|
|
|
* src/.../mi/core/event/MIMemoryCreatedEvent.java: New file.
|
|
* src/.../mi/core/event/MIRegisterCreatedEvent.java: New file.
|
|
* src/.../mi/core/event/MIThreadCreatedEvent.java: New file.
|
|
* src/.../mi/core/event/MIVarCreatedEvent.java: New file.
|
|
* src/.../mi/core/event/MIBreakpointChangedEvent.java (MIBreakpointChangedEvent):
|
|
Reuse the constructor.
|
|
* src/.../mi/core/event/MIBreakpointCreatedEvent.java (MIBreakpointCreatedEvent):
|
|
Reuse the constructor.
|
|
* src/.../mi/core/event/MIBreakpointDeletedEvent.java (MIBreakpointDeletedEvent):
|
|
Reuse the constructor.
|
|
|
|
2003-01-08 Alain Magloire
|
|
|
|
Refactoring, split the org.eclipse.cdt.debug.mi.core.cdi in pacackages
|
|
org.eclipse.cdt.debug.mi.core.cdi
|
|
org.eclipse.cdt.debug.mi.core.cdi.event
|
|
org.eclipse.cdt.debug.mi.core.cdi.model
|
|
This help structure things up.
|
|
* src/.../mi/core/cdi/event: New files.
|
|
* src/.../mi/core/cdi/model: New files.
|
|
|
|
2003-01-08 Alain Magloire
|
|
|
|
* src/.../mi/core/cdi/EventManager.java (update): bug fix
|
|
was calling DestroyedEvent() incorrectly.
|
|
|
|
2003-01-08 Alain Magloire
|
|
|
|
CLIProcessor a new class to recognise the CLI(Command Line Interface)
|
|
of gdb example:
|
|
(gdb) next
|
|
(gdb) n
|
|
(gdb) b
|
|
(gdb) break
|
|
etc ..:
|
|
When the patterns are discover, the class will generate some events
|
|
to warn te UI that something change.
|
|
|
|
* src/.../mi/core/cdi/BreakpointManager.java (update):
|
|
Send a -break-list and generate events for any difference, in
|
|
the breakpoints that we know about.
|
|
(deleteBreakpoint): Take as argument the breakpoint number.
|
|
(getBreakpoints): Call update() to generate events if new breakpoints.
|
|
(getMIBreakpoints): return the MIBreakpoints.
|
|
* src/.../mi/core/cdi/ChangedEvent.java (ChangedEvent):
|
|
New constructor with MIBreakPointChangedEvent.
|
|
* src/.../mi/core/cdi/DestroyedEvent.java (DestroyedEvent):
|
|
New constructor with MIBreakPointDeletedEvent.
|
|
* src/.../mi/core/cdi/Created.java: New file.
|
|
* src/.../mi/core/cdi/EventManager.java (update):
|
|
Watch for the new MIBreakPoint*Events.
|
|
* src/.../mi/core/event/MIBreakPointCreatedEvent.java: New file.
|
|
* src/.../mi/core/event/MIBreakPointChangedEvent.java: New file.
|
|
* src/.../mi/core/event/MIBreakPointDeletedEvent.java: New file.
|
|
* src/.../mi/core/event/MICreatedEvent.java: New file.
|
|
* src/.../mi/core/event/MIDestroyedEvent.java: New file.
|
|
* src/.../mi/core/event/MIInferiorExitEvent.java: Extends MIDestroyedEvent
|
|
* src/.../mi/core/event/MIThreadExitEvent.java: Extends MIDestroyedEvent
|
|
* src/.../mi/core/event/MIGDBExitEvent.java: Extends MIDestroyedEvent
|
|
* src/.../mi/core/event/MIDetachedEvent.java: Extends MIDestroyedEvent
|
|
* src/.../mi/core/CLIProcessor.java: New file.
|
|
* src/.../mi/core/TxThread.java: New file.
|
|
|
|
2003-01-07 Alain Magloire
|
|
|
|
* src/.../mi/core/MIInferior.java (getOutputStream): Remove useless assignement.
|
|
* src/.../mi/core/MIPluging.java (debugLog): Not need to be static.
|
|
* src/.../mi/core/cdi/EventManager.java (update): Remove useless assignement.
|
|
|
|
2003-01-06 Alain Magloire
|
|
|
|
* build.properties: Patch from Judy Green.
|
|
|
|
2003-01-06 Alain Magloire
|
|
|
|
* src/.../mi/core/cdi/BreapoinManager.java (createLocation): new method
|
|
to create a breakoint with an address.
|
|
* src/.../mi/core/cdi/Location.java (Location): New constructor takes
|
|
an address as argument.
|
|
|
|
2003-01-03 Alain Magloire
|
|
|
|
The Class creating the CDISession part of the initialization would call
|
|
(gdb) set autosolib on
|
|
this works fine for Unix system, but on Windows it throws an error
|
|
failing the debugger. Windows(Cygwin, MingWin) does not need any
|
|
special initialization like solib-search-paths etc ..
|
|
|
|
* src/.../mi/core/cdi/SourceManager.java (setAutoSolib): Takes a boolean argument
|
|
to set the autosolib on or off.
|
|
* src/.../mi/core/CygwinGDBDebugger.java(initializeLibraries):
|
|
Empty method, cygwin does not need any special handling.
|
|
* src/.../mi/core/GDBDebugger.java (initializeLibraries):
|
|
Always call autosolib.
|
|
|
|
|
|
2003-01-02 Alain Magloire
|
|
|
|
Bug when using recursive:
|
|
int recursive(int x) {
|
|
if (x > 10)
|
|
recursive(++x);
|
|
return 0;
|
|
}
|
|
|
|
The Variable Manager is caching the MI/GDB var-obj for speed.
|
|
It is finding the object by looking at the name and the stack/thread,
|
|
for recursive calls, this is wrong and the code would be full in
|
|
thinking the variable "x"(see above) is the same object. To make the distinction
|
|
we use the depth "-stack-info-depth" that will be use also in the equality
|
|
to make sure we identify an object uniquely. In the recursive() case above
|
|
because the depth is different, a new "x" object will be created. The downside
|
|
is that on certain platform doing deep recursive/stackframe, we have noticed
|
|
that "-stack-info-depth" can be very long, test done for gdb/QNX with
|
|
a stack depth of 1000.
|
|
|
|
* src/.../mi/core/cdi/VariableManager.java (getElement):
|
|
Use the depth when doing equal().
|
|
(createElement): Save the depth of the stack part of the Element.
|
|
|
|
2003-01-02 Alain Magloire
|
|
|
|
GDB/MI uses some oob reasons that was not documented for the watchpoints
|
|
*stopped,reason="access-watchpoint-trigger"...
|
|
*stopped,reason="read-watchpoint-trigger",...
|
|
* src/.../mi/core/event/MIWatchpointTrigger.java (parse):
|
|
check for "hw-awpt" and "hw-rwpt".
|
|
* src/.../mi/core/RxThread.java (createEvents):
|
|
Check for "access-watchpoint-trigger", "read-watchpoint-trigger.
|
|
|
|
2002-12-17 Alain Magloire
|
|
|
|
* src/.../mi/core/cdi/Register.java (setFormat): bug fix
|
|
The format variable was not set.
|
|
|
|
2002-12-05 Alain Magloire
|
|
|
|
GDB/MI provides error messages in its log stream, one problem
|
|
is that it is not consistent, for example doing:
|
|
(gdb) info threads
|
|
& "info threads\n"
|
|
which is obviously not an error.
|
|
So we put the error stream output par of the exception so when
|
|
it is relevant it shows in the Exception.
|
|
MI2CDIException is the bridge class.
|
|
|
|
* src/.../mi/core/cdi/BreakpoinManager.java:
|
|
* src/.../mi/core/cdi/CSession.java:
|
|
* src/.../mi/core/cdi/CTarget.java:
|
|
* src/.../mi/core/cdi/CThread.java:
|
|
* src/.../mi/core/cdi/MemoryBlock.java:
|
|
* src/.../mi/core/cdi/MemoryManager.java:
|
|
* src/.../mi/core/cdi/Register.java:
|
|
* src/.../mi/core/cdi/RegisterManager.java:
|
|
* src/.../mi/core/cdi/SourceManager.java:
|
|
* src/.../mi/core/cdi/Value.java:
|
|
* src/.../mi/core/cdi/Variable.java:
|
|
* src/.../mi/core/cdi/VariableManager.java:
|
|
|
|
* src/.../mi/core/command/Command.java (getMIInfo):
|
|
When error get the log stream and put it in the MIException.
|
|
* src/.../mi/core/event/MIErrorEvent.java:
|
|
Get the log stream error also.
|
|
* src/.../mi/core/MIException.java (getLogMessage): New method
|
|
contains buffer output.
|
|
* src/.../mi/core/RxThread.java (processMIOutput): get the
|
|
oob arrays up so it can be use in MIErrorEvent.
|
|
|
|
2002-12-02 Alain Magloire
|
|
|
|
* src/.../mi/core/cdi/CTarget.java (updateState): If we
|
|
have the current thread id set it before, getCThread() if
|
|
it is implemented with "info threads" can override it but
|
|
"-stack-list-thread" does not give this information.
|
|
* src/.../mi/core/cdi/ErrorInfo.java: New file
|
|
* src/.../mi/core/cdi/EventManager.java (getReason): Return
|
|
an ErrorInfo also.
|
|
* src/.../mi/core/event/MIErroEvent.java: New file
|
|
* src/.../mi/core/RxThread.java (processMIOutput):
|
|
Generated MIErrorEvent for "^error".
|
|
|
|
2002-11-29 Alain Magloire
|
|
|
|
* src/.../mi/core/cdi/EventManager.java (processSuspended):
|
|
get the threadId.
|
|
|
|
2002-11-29 Alain Magloire
|
|
|
|
* src/.../mi/core/cdi/MemoryBlock.java (setValue):
|
|
Check if the change affects other block and fire MemoryChangedEvent
|
|
when necessary.
|
|
|
|
2002-11-29 Alain Magloire
|
|
|
|
* src/.../mi/core/event/MIBreakpointEvent.java:
|
|
* src/.../mi/core/event/MIFunctionFinishedEvent.java:
|
|
* src/.../mi/core/event/MILocationReachedEvent.java:
|
|
* src/.../mi/core/event/MISignalEvent.java:
|
|
* src/.../mi/core/event/MISteppingRangeEvent.java:
|
|
* src/.../mi/core/event/MIStoppedEvent.java:
|
|
* src/.../mi/core/event/MIWatchpointEvent.java:
|
|
* src/.../mi/core/event/MIWatchpointTriggerEvent.java:
|
|
* src/.../mi/core/RxThread.java:
|
|
Some events like the temporary events, do not have
|
|
any specific format but do provide a frame and a thread-id
|
|
move the code in MIStoppedEvent.
|
|
|
|
2002-11-28 Alain Magloire
|
|
|
|
* src/.../mi/core/cdi/MemoryBlock.java (setValue): Only get a byte.
|
|
|
|
2002-11-28 Alain Magloire
|
|
|
|
* src/.../mi/core/cdi/CTarget.java (runUntil): new method implemented.
|
|
* src/.../mi/core/cdi/CThread.java (runUntil): new method implemented.
|
|
|
|
2002-11-26 Doug Schaefer
|
|
|
|
* src/.../mi/core/CygwinGDBDebugger.java:
|
|
New Debugger that provides the Cygwin Command Factory to the MISession
|
|
* src/.../mi/core/command/CygwinCommandFactory.java:
|
|
New Command Factory for Cygwin specific implementations of the commands
|
|
* src/.../mi/core/command/CygwinMIEnvironmentDirectory.java:
|
|
New. Subclasses the MIEnvironmentDirectory command to convert the
|
|
paths using cygpath.
|
|
* plugin.xml:
|
|
Defines the new debugger extension.
|
|
|
|
2002-11-25 Alain Magloire
|
|
|
|
* src/.../mi/core/cdi/Watchpoint.java:
|
|
Check if it was access point also.
|
|
* src/.../mi/core/output/MIBreakInsertInfo.java (parse):
|
|
Check for "wpt" variable.
|
|
* src/.../mi/core/output/MIBreakpoint.java (IsWriteWatchpoint):
|
|
implemented.
|
|
|
|
2002-11-20 Mikhail Khodjaiants
|
|
Fix for bug 26595.
|
|
* src/.../mi/core/cdi/MemoryManager.java (compareBlocks):
|
|
If the start address of a memory block has changed fir 'changed' event
|
|
only for the corresponding bytes of the overlapping area of new and old blocks.
|
|
|
|
2002-11-19 Alain Magloire
|
|
|
|
* src/.../mi/core/cdi/MemoryManager.java (compareBlocks):
|
|
The startAddress() may have change for example if we were
|
|
watching "char *p;" and the address move "p++". Take this
|
|
into account now.
|
|
|
|
2002-11-18 Alain Magloire
|
|
|
|
* src/.../mi/core/cdi/StackFrame.java (getCurrentStackFrame):
|
|
if the currentFrame was not set only get the top level
|
|
frame for the current.
|
|
* src/.../mi/core/cdi/CTarget.java (updateStateId):
|
|
Set the currentThreads && currentThreadId.
|
|
|
|
2002-11-18 Alain Magloire
|
|
|
|
* src/.../mi/core/cdi/CThread.java (getStackFrameCount):
|
|
Set the new thread before getting the value and restore
|
|
after.
|
|
|
|
2002-11-14 Alain Magloire
|
|
|
|
This is needed in post-mortem, application doing a
|
|
very deep recursion and crashing the stack size, for example
|
|
on GNU/Linux it may reach 200000 levels deep. Trying to
|
|
bring in the UI a bactrace tree of 200000 nodes is useless.
|
|
The UI could check the count and do the appropriate action
|
|
by showing ranges etc ..
|
|
|
|
* src/.../mi/core/cdi/CThread.java (getStackFrame):
|
|
new method with a hi and low.
|
|
(getStackFrameCount): new method.
|
|
* src/.../mi/core/command/CommandFactory.java (createMIStackInfoDepth):
|
|
new method.
|
|
* src/.../mi/core/command/MIStackInfoDepth.java (getMIStackInfoDepthInfo):
|
|
new method.
|
|
|
|
2002-11-13 Dave Inglis
|
|
* plugin.xml
|
|
Added "native" cpu support.
|
|
|
|
2002-11-06 Alain Magloire
|
|
|
|
* src/.../mi/core/cdi/StackFrame.java (getLocals):
|
|
If an exception was thrown, the array may contain null
|
|
entries. Use a list and catch the exception.
|
|
|
|
2002-11-06 Alain Magloire
|
|
|
|
* src/.../mi/core/cdi/StackFrame.java (getArguments):
|
|
If an exception was thrown, the array may contain null
|
|
entries. Use and a List and catch the exception.
|
|
|
|
2002-11-05 Alain Magloire
|
|
|
|
* src/.../mi/core/cdi/Register.java (setValue): Fire a
|
|
MIRegisterChangedEvent when changing value.
|
|
Fix PR:25730
|
|
|
|
2002-11-01 Alain Magloire
|
|
|
|
The change in MISession(), will catch things like starting gdb-5.0
|
|
with argument "-i mi1", that level of mi is not supported.
|
|
|
|
* src/.../mi/core/cdi/MemoryBlock.java (refresh): When doing the refresh
|
|
check if other blocks wehre affected and update them.
|
|
* src/.../mi/core/cdi/MemoryManager.java (update): Return the array of
|
|
affected addresses.
|
|
* src/.../mi/core/MIPlugin.java (createCSession): Do not throw an
|
|
error when trying "set new-console", it does not work on Linux.
|
|
* src/.../mi/core/MISession.java (MISession): Check if the process
|
|
terminated early, maybe because of wron arguments etc .. and throw
|
|
the exception.
|
|
|
|
2002-11-1 David Inglis
|
|
* src/.../mi/core/MIPlugin.java
|
|
throw MIExceptions in createSession (not rethorwn IOExceptions)
|
|
|
|
2002-10-30 Alain Magloire
|
|
|
|
* src/.../core/cdi/MemoryBlock.java (setDirty): When need a
|
|
refresh setDirty() to true.
|
|
(isDirty): Return the flag value.
|
|
|
|
* src/.../core/cdi/MemoryManager.java (update): Check if
|
|
the MemoryBlock isDirty().
|
|
|
|
2002-10-30 Alain Magloire
|
|
|
|
* src/.../core/cdi/MemoryBlock.java (setValue): reuse refresh()
|
|
to update the memory and fire any MemoryChangedEvents.
|
|
|
|
2002-10-26 Alain Magloire
|
|
|
|
* src/.../core/cdi/MemoryBlock.java (setValue): Generate
|
|
a MemoryChangeEvent when the value is set, gdb/mi will not
|
|
do it.
|
|
|
|
2002-10-25 Alain Magloire
|
|
|
|
* src/.../core/cdi/CThread.java (getStackFrames): Save the
|
|
current thread before changing and restore when operation finish.
|
|
|
|
* src/.../core/cdi/MemoryBlock.java (refresh): Flush the old
|
|
data and get new memory.
|
|
(update): New method to compare individual blocks.
|
|
|
|
2002-10-25 Alain Magloire
|
|
|
|
Automatically suspend/resume gdb when setting a breakpoint.
|
|
The workflow when debuggin which gdb command prompt is to
|
|
hit CTRL-C set the breakpoint and continue. The UI debugger
|
|
should be smart enought to do this by itself. So if the
|
|
inferior is running, when setting a breakpoint the program
|
|
is suspended(target.suspend()), the suspend event is ignore
|
|
the breakpoint is set (--break-insert) and the target is resume.
|
|
To ignore a specific event, we use a (mis)behaviour of gdb that
|
|
associate the suspend(*stopped) with the last execution command.
|
|
(gdb)
|
|
111-exec-continue
|
|
111^running
|
|
(gdb)
|
|
222-exec-interrupt
|
|
222^done
|
|
(gdb)
|
|
111*stopped,signal-name="SIGINT",signal-meaning="Interrupt",
|
|
frame={addr="0x00010140",func="foo",args=[],file="try.c",line="13"}
|
|
(gdb)
|
|
In the case above event 111 is ignore.
|
|
|
|
* src/.../core/command/CLICommand.java (toString): Always put
|
|
the identifying token.
|
|
* src/.../core/command/Command.java (setToken): Removed.
|
|
(getUniqToken): New method returns a global uniq token.
|
|
(getToken): Returns a uniq token for the command.
|
|
* src/.../core/MIInferior.java (setTerminated): New argument token,
|
|
since now all MIEvent has the corresponding command token.
|
|
* src/.../core/MISession.java (cmdCount): Removed.
|
|
(postCommand): the command getToken() will return a uniq token.
|
|
* src/.../core/RxThread.java (processMIOOBRecord): MIEvent take
|
|
the corresponding command token as argument.
|
|
* src/.../core/TxThrea.java (token): Field removed, token are no
|
|
longer created in this tread.
|
|
* src/.../core/event/MIBreakpointEvent.java:
|
|
* src/.../core/event/MIBreakpointEvent.java:
|
|
* src/.../core/event/MIChangedEvent.java:
|
|
* src/.../core/event/MIDetachedEvent.java:
|
|
* src/.../core/event/MIEvent.java:
|
|
* src/.../core/event/MIFunctionFinishedEvent.java:
|
|
* src/.../core/event/MIGDBExitEvent.java:
|
|
* src/.../core/event/MIInferiorExitEvent.java:
|
|
* src/.../core/event/MILocationReachedEvent.java:
|
|
* src/.../core/event/MIMemoryChangedEvent.java:
|
|
* src/.../core/event/MIRegisterChangedEvent.java:
|
|
* src/.../core/event/MIRunningEvent.java:
|
|
* src/.../core/event/MISignalEvent.java:
|
|
* src/.../core/event/MISteppingRangeEvent.java:
|
|
* src/.../core/event/MIStoppedEvent.java:
|
|
* src/.../core/event/MIThreadExitEvent.java:
|
|
* src/.../core/event/MIVarChangedEvent.java:
|
|
* src/.../core/event/MIWatchpointScopeEvent.java:
|
|
* src/.../core/event/MIWatchpointTriggerEvent.java:
|
|
Calls super with getToken().
|
|
* src/.../core/cdi/BreakpointManager.java (allowProgramInterruption):
|
|
New method to allow suspending the program to set a breakpoint.
|
|
(suspendInferior): get the last token execution an ignore the suspend
|
|
event.
|
|
* src/.../core/cdi/CTarget.java (getLastExecutionToken): New method
|
|
returns the token of the last execution command.
|
|
* src/.../core/cdi/EventManager.java (enableEventToken): New method.
|
|
(enableEventTokens): New method.
|
|
(disableEventToken): New method.
|
|
(disableEventTokens): New method.
|
|
(update): Ignore token in the disable list.
|
|
* src/.../core/cdi/RegisterManager.java (update): MIEvent takes
|
|
a token.
|
|
* src/.../core/cdi/Variable.java (setValue): MIEvent takes a token.
|
|
* src/.../core/cdi/VariableManager.java (update): MIEvent takes a token.
|
|
|
|
2002-10-24 Alain Magloire
|
|
|
|
* src/.../core/RxThread.java (processMIOutput): Fire a
|
|
suspended event when seeing an error.
|
|
|
|
2002-10-24 Alain Magloire
|
|
|
|
* src/.../core/output/MIConst.java (isoC): Change to return
|
|
a string instead '\n' is platform dependent and has to be
|
|
translate to "\r\n" for SWT widgets to work correctly on windows.
|
|
|
|
2002-10-23 Alain Magloire
|
|
|
|
gdb/mi for program control command will fire a change state event:
|
|
-exec-run
|
|
^running
|
|
This allow the UI to change its state and wait for the suspended.
|
|
Providing a gdb prompt adds some problems, since there is no state
|
|
change, i.e.(^running) after command like, next/step/...:
|
|
next
|
|
&"next\n"
|
|
...
|
|
So to palliate, the txthread do some query when the commands are
|
|
CLI commands trying to discover the type and fire any appropriate
|
|
events on behalf on gdb.
|
|
|
|
* src/.../core/RxThread.java (createEvent): Adjust the parser to
|
|
not rely on the oob "*stopped", since for CLI command it is not
|
|
in the result-class. So the suspended state will be base of
|
|
the "reason" only.
|
|
* src/.../core/TxThread.java (processCLICommand): new method,
|
|
get the command and try to recognize if it is a program control
|
|
command like: next, step, etc ..
|
|
* src/.../core/command/CLICommand.java (getOperation): New method,
|
|
returns the command string.
|
|
|
|
2002-10-22 Alain Magloire
|
|
|
|
Change the framework to support access to gdb prompt.
|
|
Trying to reuse as much as possible Eclipse framework.
|
|
The session/gdb process is available via CDI.
|
|
|
|
* src/.../core/GDBStreamsProxy.java: Removed.
|
|
* src/.../core/GDBProcess.java: Removed.
|
|
* src/.../core/GDBStreamMonitor.java: Removed.
|
|
* src/.../core/SessionProcess.java: New file.
|
|
* src/.../core/MISession.java (getMISessionProcess):
|
|
New method, returns a "fake" Process that wraps the input/outpu
|
|
stream of gdb.
|
|
(getGDBProcess): was getMIProcess(), renamed.
|
|
* src/.../core/cdi/CSession.java (getSessionProcess): New method
|
|
return gdb process.
|
|
|
|
2002-10-22 Alain Magloire
|
|
|
|
* src/.../core/GDBStreamsProxy.java (write):
|
|
Replace the OutputStream with a Write class.
|
|
And clear the buffer on flush().
|
|
|
|
2002-10-21 Alain Magloire
|
|
|
|
* src/.../core/GDBProcess.java (getExitValue): Catch
|
|
IllegalThreadStateException.
|
|
(getAttribute): Only create Properties, when call.
|
|
(setAttribute): Only create Properties, when call.
|
|
(getAdapter): Implemented.
|
|
(canTerminate): true only of the process is alive.
|
|
(GDBProcess): Takes one more argument the name.
|
|
* src/.../core/GDBStreamMonitor.java (fireStreamAppend): New method.
|
|
Use a synchronized LinkedList for the listeners.
|
|
(read): new Method.
|
|
(startMonitoring): New method, start a thread in the background
|
|
to monitor the input.
|
|
* src/.../core/GDBStreamsProxy.java (getErrorStream): Start the monitor thread.
|
|
(getOutputStream): Start the monitor thread.
|
|
|
|
2002-10-21 Alain Magloire
|
|
|
|
Framework for having a gdb console. The idea is to reuse
|
|
the eclipse console and save a lot of work. We "adapt"
|
|
the gdb Process to what eclipse debug LaunchView wants(IProcess).
|
|
So when this fake "gdb process" is selected we can grab the
|
|
input/output of the console and redirect everything to raw gdb.
|
|
|
|
* src/.../core/GDBProcess.java: New file, it implements Eclipse
|
|
debug class IProcess.
|
|
* src/.../core/GDBStreamMonitor: New file, it implements Eclipse
|
|
debug class IStreamMonitor.
|
|
* src/.../core/GDBStreamsProxy: New file, it implements Eclipse
|
|
debug class IStreamsProxy.
|
|
* src/../core/MISession.java (getMIConsoleStream): New method
|
|
to return the mi console stream output that we get from gdb/mi.
|
|
(getMILogStream): New method, to return the mi log stream output
|
|
that we get from gdb/mi.
|
|
(terminate): close the fake MI Console and Log streams.
|
|
* src/../core/RxThread.java (processMIOOBRecord): Redirect the
|
|
console and the log stream to a buffer pipe.
|
|
|
|
2002-10-21 Alain Magloire
|
|
|
|
* src/.../core/cdi/EventManager.java (update): Only
|
|
fire the event for MemoryChangedEvent if the block was
|
|
not frozen.
|
|
|
|
2002-10-20 Alain Magloire
|
|
|
|
Eclipse provides plugins a way to trace by having an .options file,
|
|
this mechanism is use to print out the mi exchange between gdb
|
|
and the plugin. To enable this in the debug launch one must enable
|
|
"tracing" and set for the "org.eclipse.debug.mi.core/debug" to true.
|
|
But one problem, the console will simply blow taking down eclipse,
|
|
for big MI line response, say 4k length, for example asking the children
|
|
of "char buffer[4096]", -var-list-children varxx.
|
|
This seem only to happen in Eclipse-gtk or Eclipse-motif
|
|
on GNU/Linux, so it will be break in smaller chunks to give a chance to
|
|
the console.
|
|
|
|
* .options: Set debug to true.
|
|
* src/.../core/MIPlugin.java (debugLog): Break the log line in small chuncks of 100.
|
|
* src/.../core/MISession.java (postCommand): Print the gdb/mi command.
|
|
* src/.../core/RxThread.java (run): Print gdb/mi responses.
|
|
|
|
2002-10-20 Alain Magloire
|
|
|
|
-data-write-register-values is not in the texinfo manual but implemented in
|
|
gdb-5.2.1/gdb/mi/mim-main.c:
|
|
Write given values into registers. The registers and values are
|
|
given as pairs. The corresponding MI command is
|
|
-data-write-register-values <format> [<regnum1> <value1>...<regnumN> <valueN>]
|
|
|
|
* src/.../core/command/MIDataWriteRegisterValues.java: New file.
|
|
* src/.../core/command/CommandFactory.java (createMIDataWriteMemory): New method.
|
|
* src/.../core/cdi/Register.java (setValue): Implemented.
|
|
|
|
2002-10-20 Alain Magloire
|
|
|
|
Althought -data-write-memory is not documented in the texinfo manual
|
|
it is implemented and well documented in the code(gdb-5.2.1/gdb/mi/mi-main.c).
|
|
"mi_cmd_data_write_memory: Usage: [-o COLUMN_OFFSET] ADDR FORMAT WORD-SIZE VALUE.");
|
|
|
|
* src/.../core/command/MIDataWriteMemory.java: New file
|
|
* src/.../core/command/CommandFactory.java (createMIDataWriteMemory): New method.
|
|
* src/.../core/cdi/MemoryBlock.java (setValue): Implemented.
|
|
|
|
2002-10-20 Alain Magloire
|
|
|
|
* src/.../core/cdi/CTarget.java (getMemoryBlock): Remove
|
|
we use the MemoryManager instead.
|
|
(EvaluateExpressionToValue): Removed not use.
|
|
* src/.../core/cdi/SourceManager.java (setFile): Removed not use.
|
|
(getFile): Removed not use.
|
|
(reset): Removed not use.
|
|
|
|
2002-10-19 Alain Magloire
|
|
|
|
The responsability to generate Events for modify memory blocks is push
|
|
on the CDI implementation. The way we do this is every time consuming,
|
|
when the inferior is suspended(see EventManager.processSuspendedEvent()),
|
|
MemoryManager.update() is called, the method will go through the list of MemoryBlocks
|
|
that are not MemoryBlocks.setFrozen() and fetch the new memories, the data is compare
|
|
and MemoryChangedEvents are fired for blocks with changed values.
|
|
Gdb/mi var objects does not seem to provide any support for Memory ranges.
|
|
|
|
* src/.../core/cdi/MemoryChangedEvent.java: New File implements ICDIMemoryChangedEvent.
|
|
* src/.../core/cdi/EventManager.java (update): Process MIMemoryChangedEvent's.
|
|
(processSuspendedEvent): call MemoryManager.update().
|
|
* src/.../core/cdi/MemoryBlock.java (getExpression): New method.
|
|
(getMIDataReadMemoryInfo): New method.
|
|
(setMIDataReadMemoryInfo): New method.
|
|
* src/.../core/cdi/MemoryManager.java (update): New method.
|
|
(compareBlock): New method.
|
|
(listMemoryBlocks): New method.
|
|
|
|
* src/.../core/cdi/CTarget.java (setCurrentThread): Catch null pointer.
|
|
(getCThreads): Likewise.
|
|
* src/.../core/event/MIMemoryChangedEvent.java: New File.
|
|
* src/.../core/event/MIThreadExitEvent.java: Indentation fixes.
|
|
* src/.../core/event/MIVarChangedEvent.java: Indentation fixes.
|
|
|
|
|
|
|
|
2002-10-16 Alain Magloire
|
|
|
|
* src/.../mi/core/cdi/MemoryManager.java (createMemoryBlock):
|
|
New method that takes a string instead of a long, rearrange
|
|
the method for it.
|
|
|
|
2002-10-12 Alain Magloire
|
|
|
|
There are some serious problems with gdb/mi, for example
|
|
the most recurrent one is when using -data-disassemble
|
|
in a threaded program, GNU/Linux uses a thread manager
|
|
when trying to access the stackframe, gdb usually coredumps
|
|
with an assert, it goes something like this:
|
|
|
|
-data-disassemble -f manager.c -l 136 -n 100 0
|
|
&"Cannot access memory at address 0x4002d794\n"
|
|
^error,msg="Cannot access memory at address 0x4002d794"
|
|
(gdb)
|
|
-data-disassemble -s 0x4002d900 -e 0x4002d964 0
|
|
&"Cannot access memory at address 0x4002d900\n"
|
|
^error,msg="Cannot access memory at address 0x4002d900"
|
|
(gdb)
|
|
-thread-select 2
|
|
&"ui-out.c:133: gdb-internal-error: push_level: Assertion `uiout->level >= 0 && uiout->level < MAX_UI_OUT_LEVELS' failed.\n"
|
|
|
|
The RxThread will spawn a thread to terminate the session
|
|
and clear the receiving queue.
|
|
|
|
|
|
* RxThread.java (run): When the thread is being cancel() or
|
|
running out of run(), clear the receiving queue(rxQueue) and
|
|
notify any commands waiting.
|
|
|
|
* TxTread.java (run): Before putting the command in the
|
|
receiving queue(rxQueue) check to see if the thread is
|
|
still running.
|
|
When the thread is being cancel() or running out of run(),
|
|
clear the transmition queue(txQueue) an notify any commands
|
|
waiting.
|
|
|
|
* Queue.java (clearItems): New method that clear the items
|
|
on the queue and returning them.
|
|
|
|
* CommandQueue.java (clearCommands): New method calls super.clearItems()
|
|
whith the appropriate castings.
|
|
|
|
* cdi/CThread.java (setCurrentStackFrame): Check for null.
|
|
|
|
2002-10-12 Alain Magloire
|
|
|
|
The memory block is implemented with
|
|
-data-read-memory (MIDataReadMemory)
|
|
Since the ICDIMemoryBlock only have
|
|
byte[] getBytes()
|
|
We will always issue:
|
|
-data-read-memory address x 1 1 length
|
|
The CDI upper layer will deal with any conversions
|
|
|
|
The problem now is how to send changedEvent when
|
|
an element of the memory changed.
|
|
|
|
* cdi/MemoryBlock.java (getLength): Implemented
|
|
(getBytes): Implemented
|
|
(getStartAddress): Implemented
|
|
|
|
* cdi/MemoryManager.java: Implemented.
|
|
|
|
* command/MIDataReadMemory (getMIDataReadMemoryInfo):
|
|
New helper method.
|
|
|
|
2002-10-12 Alain Magloire
|
|
|
|
* cdi/Location (getInstructions): Methods removed
|
|
no longer define in ICDILocation.
|
|
|
|
2002-10-11 Alain Magloire
|
|
|
|
* cdi/SourceManager (getMixedInstruction):
|
|
Implement the 3 new methods to return Mixed source
|
|
and assemby instructions.
|
|
|
|
* cdi/MixedInstruction: New class implements
|
|
ICDIMixedInstruction.
|
|
|
|
2002-10-11 Alain Magloire
|
|
|
|
* cdi/ExpressionManager.java: Not needed, removed.
|
|
|
|
2002-10-10 Alain Magloire
|
|
|
|
The Eclipse/UI/Debug framewok is being very repetive
|
|
and each command can be ask 2, 3 times. So we'll try
|
|
to make certain commands smarter by not reissuing them
|
|
to gdb if the state is the same. We do this when
|
|
selecting the thread and when selecting the stackframe.
|
|
|
|
The other problem is that Eclipse/UI/Debug is calling
|
|
ICDISession.terminate() twice, this is catch by looking
|
|
at isTerminated().
|
|
|
|
* cdi/CThread.java (setCurrentStackFrame): Make it smarter
|
|
to not reselect the stack level if it is already at that
|
|
level.
|
|
|
|
* MISession.java (isTerminated): Declare a flag that will
|
|
hold the state.
|
|
(terminate): Check if it was call already.
|
|
|
|
2002-10-10 Alain Magloire
|
|
|
|
* SourceManager.java: Implement getInstructions().
|