| 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(). |