2003-12-23 Mikhail Khodjaiants
	Fix for bug 49294: Source file doesn't change when switching between stack frames. 
	Do not use the breakpoint's markers for source lookup.
	* CSourceManager.java

2003-12-08 Mikhail Khodjaiants
	Reset the 'terminating' flag if 'terminate' fails.
	* CDebugTarget.java

2003-11-26 Mikhail Khodjaiants
	Extracted the main part of the 'breakpointAdded' method into a separate method to avoid 
	double checking.
	* CDebugTarget.java

2003-11-26 Mikhail Khodjaiants
	Cleanup.
	* CDebugModel.java
	* CDebugUtils.java
	* CRegisterManager.java
	* CSharedLibraryManager.java
	* CSignalManager.java
	* CUpdateManager.java
	* CDebugTarget.java
	* CThread.java
	* CVariable.java

2003-11-10 Mikhail Khodjaiants
	Ensure that all breakpoint creation and modification operations are running in the UI thread.
	* CBreakpointManager.java

2003-11-10 Mikhail Khodjaiants
	Added synchronization to some of the 'CBreakpoint' methods.
	* CBreakpoint.java

2003-11-07 Mikhail Khodjaiants
	Fix for PR 46358: NPE in the "setCurrentThread" method of "CDebugTarget".
	'setCurrentThread': check if the old current thread is not null.
	* CDebugTarget.java

2003-11-07 Mikhail Khodjaiants
	Use the corresponding methods of 'ICBreakpoint' to set breakpoint properties.
	* CBreakpointManager.java

2003-11-07 Mikhail Khodjaiants
	Fix for PR 46303: Exception when selecting Debug... menu.
	Check if the string passed to the 'getCommonSourceLocationsFromMemento' method is not empty.
	* SourceUtils.java

2003-11-05 Mikhail Khodjaiants
	'getCDIBreakpointFile' returns wrong file for address breakpoints.
	* CBreakpointManager.java

2003-11-05 Mikhail Khodjaiants
	Changed the handling of the breakpoint created event to reflect the CDI changes for deferred 
	breakpoints support.
	* CBreakpointManager.java
	* CSharedLibraryManager.java
	* CDebugTarget.java
 
2003-11-05 Mikhail Khodjaiants
	Moved all breakpoint-related functionality to the new class - 'CBreakpointManager'.
	* CBreakpointManager.java

2003-11-05 Mikhail Khodjaiants
	The argument type of the 'getBreakpointAddress' method of 'ICBreakpointManager' is changed from 
	'ICBreakpoint' to 'ICBreakpointManager'.
	* ICBreakpointMaanger.java

2003-10-30 Mikhail Khodjaiants
	* CSourceManager.java: implements adapters for 'ISourceMode' and 'IPersistableSourceLocator'.

2003-10-30 Mikhail Khodjaiants
	Fix for PR 45818 doesn't solve the problem. Fall back to the previous version.
	* CDebugElement.java

2003-10-30 Mikhail Khodjaiants
	Fix for PR 45818: NPE when closing the workbench.
	* CDebugElement.java

2003-10-29 Mikhail Khodjaiants
	* CProjectSourceLocation.java: check if the searched element name is not null or empty.

2003-10-29 Mikhail Khodjaiants
	Added the 'dispose' method to 'ICSourceLocation'.
	* ICSourceLocation.java
	* CDirectorySourceLocation.java
	* CProjectSourceLocation.java: made 'dispose' public.

2003-10-29 Mikhail Khodjaiants
	* CProjectSourceLocation.java: added 'toString' method.

2003-10-28 Mikhail Khodjaiants
	Search only in the parent folders if the given file path is absolute.
	Return a list only if the number of resulting files is > 1.
	* CDirectorySourceLocation.java

2003-10-27 Mikhail Khodjaiants
	Renamed 'SourceLocationFactory' to 'SourceLookupFactory'.
	Added the 'createSourceLocator' method to 'SourceLookupFactory'.
	* SourceLookupFactory.java
	* CSourceLocator.java

2003-10-27 Mikhail Khodjaiants
	Changed the 'getAdapter' method of 'CSourceManager' to return the adapter of 
	the 'ICSourceLocator' class.
	* CSourceManager.java

2003-10-26 Mikhail Khodjaiants
	Fix for PR 45534: gdb/MI error in retrieving a register can lead to an empty register pane.
	* CRegister.java
	* CRegisterGroup.java

2003-10-23 Mikhail Khodjaiants
	Core support of the new workbench preferences: 'Source Locations' and 'Search 
	For Duplicate Source Files'.
	* CDebugCorePlugin.java
	* ICDebugConstants.java
	* SourceUtils.java: new

2003-10-20 Mikhail Khodjaiants
	Core support of the "Search subfolders" option for directory source locations.
	* IDirectorySourceLocation.java
	* SourceLocationFactory.java
	* CDirectorySourceLocation.java

2003-10-20 Mikhail Khodjaiants
	Do not interrupt the initialization of all additional source locations 
	if the initialization of one fails.
	* CSourceLocator.java
 
2003-10-17 Alain Magloire

	ICDIBreakpointManager new method
	setLocationBreakpoint(...., deferred);
	The new boolean "deferred" indicate if yes or not the breakpoint
	should be on the deferred list if the setting fails.

	* ICDIBreakpointManager.java

2003-10-17 Mikhail Khodjaiants
	Core support of the 'Search for duplicate source files' option.
	* ICSourceLocation.java
	* ICSourceLocator.java
	* CDirectorySourceLocation.java
	* CProjectSourceLocation.java
	* CSourceLocator.java
	* CSourceManager.java

2003-10-17 Mikhail Khodjaiants
	If the target is suspended by a line breakpoint the source manager tries to retrieve 
	the file resource from the breakpoint marker.
	* CSourceManager.java
	* CDebugTarget.java

2003-10-15 Mikhail Khodjaiants
	Improving the source search algorithms.
	* CDirectorySourceLocation.java
	* CProjectSourceLocation.java
	* CSourceLocator.java

2003-10-14 Mikhail Khodjaiants
	Improved the source search algorithm.
	* CProjectSourceLocation.java
	
2003-10-13 Mikhail Khodjaiants
	Fix for bug 43372: changed the source lookup procedures to avoid the usage of 'getCanonicalPath'.
	* CDirectorySourceLocation.java
	* CProjectSourceLocation.java

2003-10-07 Mikhail Khodjaiants
	All methods of 'IRuntimeOptions' should throw CDI exceptions in case of failure.
	* ICDIRuntimeOptions.java

2003-10-06 Mikhail Khodjaiants
	Added the "isArgument" method to ICVariable. This method is used to distinguish 
	the arguments in the Variables View.
	* ICVariable.java
	* CVariable.java

2003-09-30 Mikhail Khodjaiants
	Use the new 'equals' method of ICDIVaraiableObject to compare variables.
	* CVariable.java
	
2003-09-30 Alain Magloire

	ICDIVariableObject been updated with a new method.
	* CVariable.java
	* ICDIVariable.java

2003-09-29 Mikhail Khodjaiants
	Fix for PR 43856: Format doesn't work for wchar_t.
	* CValue.java

2003-09-23 Mikhail Khodjaiants
	Changed the 'hasStackFrames' method of the 'CThread' class to return true regardless if 
	the thread contains stack frames or not. This method is only used by UI to update the thread label.
	* CThread.java
 
2003-09-17 Mikhail Khodjaiants
	Temporary fix for PR 39061: Attach source does not work for applications compiled in CygWin.
	* CDirectorySourceLocation.java

2003-09-16 Mikhail Khodjaiants
	Fix for PR 38468: Error in files location.
	Use the 'getCanonicalPath' method of the 'File' class to obtain the file name.
	* CDirectorySourceLocation.java
	* CProjectSourceLocation.java
	* CSourceLocator.java

2003-09-15 Mikhail Khodjaiants
	Fix for PR 43101: Breakpoint exception when source doesn't exist.
	The 'fireBreakpointChanged' method of 'BreakpointManager' is used to notify 
	the UI components that a breakpoint is added. This is a part of new implementation 
	to support deffered breakpoints. For new breakpoints the 'delta' argument is null. 
	Check if delta is not null to avoid this problem.
	* CDebugTarget.java

2003-09-11 Mikhail Khodjaiants
	Detail Pane values for casted variables.
	* CVariable.java: the qualified name should be chached in the InternalVariable instance
	* CArrayPartition.java: added new field to store the chached value of the qualified name

2003-10-11 Mikhail Khodjaiants
	Moving the shared library search paths block to mi UI.
	* ICDTLaunchConfigurationConstants.java: moved the 'ATTR_DEBUGGER_SOLIB_PATH' attribute to mi.

2003-09-10 Mikhail Khodjaiants
	If breakpoint is a line breakpoint check if source locator contains this file 
	instead of container project.
	* CDebugTarget.java

2003-09-10 Mikhail Khodjaiants
	Fix for PR 42790: Memory view is not cleared when target is terminated.
	* CFormattedMemoryBlock.java: fire 'terminate' event when block is disposing.
	* CMemoryManager.java: implementation of 'dispose'.

2003-09-09 Mikhail Khodjaiants
	Fix for PR 39680: Gash in error message for memory view.
	* CDebugModel.java

2003-09-09 Mikhail Khodjaiants
	Final fix for PR 39484: Move 'getType' method from ICDIVariable to ICDIVaraibleObject.
	* CArrayPartition.java
	* CVariable.java
 
2003-09-09 Mikhail Khodjaiants
	Regrouping the launch configuration constants.
	* ICDTLaunchConfigurationConstants.java

2003-09-09 Mikhail Khodjaiants
	Removed the internal handling of the 'stop-on-shared-library-events' option - 
	will be moved to the mi.
	Try to set the deferred breakpoints only when:
	- a shared library is loaded 
	- the symbols of shared library are loaded
	* CSharedLibararyManager.java
	* CDebugTarget.java
	* CThread.java

2003-09-09 Mikhail Khodjaiants
	Added the 'getSharedLibraryPaths' and 'setSharedLibraryPaths' methods 
	to the 'ICDISharedLibraryManager' interface.
	* ICDISharedLibraryManager.java

2003-08-29 Mikhail Khodjaiants
	Implementation of deferred breakpoints.
	* CDebugTarget.java
	* CThread.java

2003-08-29 Mikhail Khodjaiants
	Moving shared library features from mi to CDI.
	Added new launch configuration constants to ICDTLaunchConfigurationConstants.

2003-08-29 Mikhail Khodjaiants
	Moving shared library features from mi to CDI.
	Added new methods to ICDISharedLibraryManager:
	- isAutoLoadSymbols
	- isStopOnSolibEvents
	- setAutoLoadSymbols
	- setStopOnSolibEvents
	- supportsAutoLoadSymbols
	- supportsStopOnSolibEvents
	* ICDISharedLibraryManager.java 

2003-08-21 Mikhail Khodjaiants
	Removed the 'isAccessSpecifier' method from CVaraiable.
	* CArrayPartitionValue.java
	* CValue.java
	* CVariable.java

2003-08-21 Mikhail Khodjaiants
	Use the names of array's elements returned by CDI.
	* CVariable.java

2003-08-20 Mikhail Khodjaiants
	Unable to terminate post mortem debugging session.
	Extended the 'CDebugTarget' class to overload the 'terminate' and 'canTerminate' methods.
	* CDebugModel.java
	* CCoreFileDebugTarget.java: new

2003-08-19 Mikhail Khodjaiants
	Create ICDIVariableObject for each array partition to compute a detail panel's value. 
	* CArrayPartition.java
	* CVariable.java

2003-08-18 Alain Magloire

	ICDISharedLibraryEvent.java:
	New file, to notify a breakpoint from a shared lib event.

2003-08-13 Mikhail Khodjaiants
	* ICDIVariableManager.java: removed the 'type' parameter from the 'getVariableObjectAsArray' method
	* ICastToArray.java: removed the 'type' parameter from the 'castToArray' method
	* CVariable.java: changed the implementation of the 'ICastToArray' interface

2003-08-13 Mikhail Khodjaiants
	* ICDIVariable.java: removed the 'isEditable' method
	* ICDIVariableObject.java: added the 'isEditable', 'getQualifiedName' and 'sizeof' methods
	* ICDIArrayValue.java: added the 'getVariables(int start, int length)' method
	* ICType.java: added the 'isReference' method
	* ICValue.java: added the 'dispose' method
	* CArrayPartition.java
	* CArrayPartitionValue.java
	* CGlobalVariable.java
	* CType.java
	* CValue.java
	* CValueFactory.java
	* CVariable.java
	Create 'var-objects' only for the requested array partitions. 

2003-08-07 Alain Magloire

	* ICDIVariableManager.java:
	Remove the unused method getVariableObject(ICDIStackframe, String)
	and getArgumentObject(ICDIStackframe, String).
	Rename getVariableObject(String, String, String) to
	getGlobalVariableObject.

	* CDebugModel.java: Refactoring of ICDIVariableManager.

2003-08-06 Mikhail Khodjaiants
	Added the implementation of the 'getType' and 'getTypeName' methods of the 'CVaraible:ErrorVariable' class.
	* CVariable.java

2003-08-06 Mikhail Khodjaiants
	Uncommented the 'sizeof' method of 'ICDIVariableObject'.
	* ICDIVariableObject.java
	* CVariable.java

2003-08-06 Alain Magloire

	Move some of the methods in ICDIVariableObject.

	* src/org/eclipse/cdt/debug/core/cdi/ICDIVariable.java
	* src/org/eclipse/cdt/debug/core/cdi/ICDIVariableObject.java

2003-08-05 Mikhail Khodjaiants
	Use the 'getReferencedProject' method to obtain all referenced projects.
	* CDebugUtils.java

2003-08-05 Mikhail Khodjaiants
	Invalidate error variables when the session is resumed.
	* CVariable.java

2003-07-30 Mikhail Khodjaiants
	Moved the 'getReferencedProject' method to 'CDebugUtils'. Added the cycle checking.
	* CDebugUtils.java
	* CSourceLocator.java

2003-07-28 Mikhail Khodjaiants
	Minimize the number of the "evaluate expression" requests when changing the value of the floating point types.
	* CDebugUtils.java

2003-07-28 Mikhail Khodjaiants
	Refactoring: moved the 'isNaN', 'isPositiveInfinity' and 'isNegativeInfinity' to the 'CDebugUtils' class.
	* ICValue.java
	* CValue.java
	* CDebugUtils.java

2003-07-28 Mikhail Khodjaiants
	Refactoring: moved the 'CDebugUtils' class to the 'org.eclipse.cdt.debug.core' package - 
	the methods of this class are mostly used in UI plugins.
	* CDebugUtils.java
	* CDebugModel.java
	* DisassemblyStorage.java
	* CAddressBreakpoint.java
	* CDebugTarget.java
	* CFormattedMemoryBlock.java
	* CDebugElement.java
	* CDirectorySourceLocation.java
	* CProjectSourceLocation.java
	* CSourceLocator.java

2003-07-28 Mikhail Khodjaiants
	Cleanup. Removed the unused 'getNumberOfChildren' method from the 'CValue' class.
	* CValue.java

2003-07-28 Mikhail Khodjaiants
	Cleanup. Removed the 'reset' and 'getQualifiedName' methods from the 'ICVaraible' interface.
	* ICVariable.java
	* CVariable.java
	
2003-07-24 Mikhail Khodjaiants
	Fix for PR 40696. If the project contains the reference to a project that is 
	deleted from the workspace the source locator tries to get the location of deleted project.
	* CProjectSourceLocation.java

2003-07-22 Mikhail Khodjaiants
	Create a special type of ICDIVariable (ErrorVariable) if request to gdb fails.
	* CVariable.java
	* CValue.java

2003-07-22 Mikhail Khodjaiants
	Use the 'getReferencedProjects' method of 'CSourceLocator' to obtain the list of referenced projects.
	Use the correct tag for additional source locations.
	* CSourceLocator.java
 
2003-07-17 Mikhail Khodjaiants
	Fix for PR 39936: GDB hits modified conditional breakpoints when condition not satisfied.
	This is a work around for GDB PR MI/1289.
	* CDebugTarget.java

2003-07-17 Mikhail Khodjaiants
	Automatically update the list of source locations when the list of the referenced 
	projects is modified.
	* ICSourceLocator.java: added new method - 'getProject'
	* IProjectSourceLocation.java: added new method - 'isGeneric'
	* SourceLocationFactory.java: new class factory for source locations.
	* CSourceLocator.java
	* CDirectorySourceLocation.java
	* CProjectSourceLocation.java
	* CSourceManager.java
	* CDebugTarget.java
	
2003-06-30 Mikhail Khodjaiants
	Fix for PR 39372: Breakpoints don't get activated when symbols are loaded.

2003-06-30 Mikhail Khodjaiants
	Fix for PR 39100: CDT/Debug core is asking value 16 times.
	* CValue.java

2003-06-30 Mikhail Khodjaiants
	Fix for PR 39087: Cache the MI answer once we know if the variable is writable.
	* CVariable.java

2003-06-24 Mikhail Khodjaiants
	All local var_objects are destroyed when a thread other than current is selected.
	CVariable has to be invalidated if a "destroyed" event has been received.
	* CVariable.java

2003-06-23 Mikhail Khodjaiants
	Fix for ClassCastException in CStackFrame.
	* CStackFrame.java

2003-06-20 Mikhail Khodjaiants
	Variable bookkeeping (phase 0.1).
	* ICDTLaunchConfigurationConstants.java: add a new attribute - ATTR_DEBUGGER_ENABLE_VARIABLE_BOOKKEEPING.
	* ICVariable.java: added the 'canEnableDisable', 'isEnabled' and 'setEnabled' methods
	* CArrayPartition.java
	* CExpression.java
	* CModificationVariable.java
	* CRegister.java
	* CStackFrame.java
	* CVariable.java

2003-06-18 Mikhail Khodjaiants
	Incorrect casting in the 'setChanged' method of CVariable.
	* CVariable.java

2003-06-11 Mikhail Khodjaiants
	The unused 'getUnderlyingValueString' method has been removed from ICValue and CValue.
	The methods 'setChanged' and 'getUnderlyingValue' are only for internal usage and
	have been removed from ICValue.
	* ICValue.java
	* CArrayPartitionValue.java
	* CValueFactory.java
	* CValue.java
	* CVariable.java
	
2003-06-10 Mikhail Khodjaiants
	Refactoring: moved the type and value related methods from ICVariable to ICType and ICValue.
	* ICType.java: new
	* ICVariable.java
	* ICValue.java
	* CArrayPartitionValue.java
	* CType.java
	* CValue.java
	* CVariable.java

2003-06-09 Mikhail Khodjaiants
	Added default format preferences for variables, registers and expressions.
	* CExpression.java
	* CRegister.java
	* CVariable.java

2003-06-09 Mikhail Khodjaiants
	Renamed the 'refresh' method of ICVariable to 'reset'. Added new method - 
	'reset' to CValue instead of using the 'setChanged' method.
	* ICVariable.java
	* CValue.java
	* CVariable.java

2003-06-06 Mikhail Khodjaiants
	Mark as changed parent variables.
	* CVariable.java

2003-06-06 Mikhail Khodjaiants
	Refresh only the state of variable when handling a change event.
	* CVariable.java

2003-06-06 Mikhail Khodjaiants
	Correct presentation of the full names of variables that contain pointers.
	* CVariable.java

2003-06-06 Mikhail Khodjaiants
	Changed the implementation of the'getName' method of CVariable to return 
	the actual names of array members.
	* CArrayPartition.java
	* CArrayPartitionValue.java
	* CVariable.java
 
2003-06-05 Mikhail Khodjaiants
	Core support of infinite values of the floating point types.
	* ICVariable.java
	* CVariable.java

2003-06-05 Mikhail Khodjaiants
	Renamed the 'computeDetail' method of the 'ICValue' interface to 'evaluateAsExpression'.
	* ICValue.java
	* CArrayPartitionValue.java
	* CValue.java
 
2003-06-05 Mikhail Khodjaiants
	Removed the redundant methods from the 'ICDIFloatingPointValue' interface.
	* ICDIFloatingPointValue.java
	* CValue.java
	* CVariable.java

2003-06-04 Mikhail Khodjaiants
	Implementing the core support of the detail panel.
	* ICValue.java
	* ICVariable.java
	* CArrayPartitionValue.java
	* CValue.java
	* CVariable.java

2003-06-04 Mikhail Khodjaiants
	Added the processing of reference values.
	* CValue.java

2003-06-04 Mikhail Khodjaiants
	Implementing the core support of UI features for types and internal formating 
	(instead of using the format features provided by gdb). 
	* src/org/eclipse/cdt/debug/core/cdi/model/type/ICDIFloatingPointValue.java
	* src/org/eclipse/cdt/debug/core/cdi/model/type/ICDIPointerValue.java
	* src/org/eclipse/cdt/debug/core/cdi/model/type/ICDIReferenceValue.java
	* src/org/eclipse/cdt/debug/core/cdi/model/ICDIPointerValue.java: removed
	* src/org/eclipse/cdt/debug/core/model/ICVariable.java
	* src/org/eclipse/cdt/debug/internal/core/model/CVariable.java
	* src/org/eclipse/cdt/debug/core/model/CValue.java

2003-05-29 Alain Magloire

	* src/org/eclipse/cdt/debug/core/cdi/model/type/ICDIIntegralValue.java:
		public long longValue() throws CDIException;
		public int intValue() throws CDIException;
		public short shortValue() throws CDIException;
		public int byteValue() throws CDIException;

2003-05-29 Mikhail Khodjaiants
	Added new methods to ICVariable to vizualize arrays and structures based 
	on the new CDI types.
	* ICVariable.java
	* CVariable.java

2003-05-27 Mikhail Khodjaiants
	Check if the location of breakpoint is eligible for the target 
	when setting, removing or changing the propeties.
	* CDebugTarget.java

2003-03-23 Alain Magloire

	* src/org/eclipse/cdt/debug/core/cdi/model/type/ICDIVariable.java:
	(getType): New method.

2003-05-26 Mikhail Khodjaiants
	First draft of the tracepoints in the CDI.
	* ICDITraceManager.java
	* ICDITraceSnapshot.java
	* ICDITracepoint.java

2003-05-23 Alain Magloire

	* src/org/eclipse/cdt/debug/core/cdi/model/type/ICDIType.java: extends
	ICDIObject.

2003-05-23 Alain Magloire

	First draft of the implementing the types, org.eclipse.cdt.debug.core.cdi.model.type.*
	in the CDI interface.

2003-05-14 Mikhail Khodjaiants
	Created preference for the maximum number of disassembly instructions.
	* CDebugTarget.java
	* ICDebugConstants.java
	* DisassemblyManager.java

2003-05-12 Mikhail Khodjaiants
	Moved the generation of expressions for global variables to the mi plugin.
	* CDebugTarget.java
	* CExpression.java
	* CDebugModel.java

2003-05-12 Mikhail Khodjaiants
	When generating disassembly instructions by file name and line number check 
	if the frame address is in the address range of the instruction set.
	If the instruction set doesn't contain the frame address generate a new instruction set 
	based on the frame address. 
	* DisassemblyManager.java
 
2003-05-08 Mikhail Khodjaiants
	In the "terminate" event handler of the session manager check the targets that 
	belong to the current session.
	* SessionManager.java

2003-05-07 Mikhail Khodjaiants
	Set the error status if the debug target is suspended because of an error.
	* CDebugTarget.java

2003-05-06 Mikhail Khodjaiants
	Check if the underlying debugger supports expression evaluation in the "canEvaluate" method.
	* CDebugTarget.java

2003-05-06 Mikhail Khodjaiants
	Added tooltips to breakpoints and watchpoints.
	* CAddressBreakpoint.java
	* CBreakpoint.java
	* CFunctionBreakpoint.java
	* CLineBreakpoint.java
	* CWatchpoint.java

2003-05-05 Mikhail Khodjaiants
	Added a status functionality to the CDebugElement class. 
	This allows to reflect the problems occured in the element in UI.
	* ICDebugElementErrorStatus.java: new
	* CDebugElement.java: implementation
	* CThread.java
	* CDebugTarget.java

2003-05-05 Mikhail Khodjaiants
	New method in ICBreakpoint - "isConditional".
	* ICBreakpoint.java
	* CBreakpoint.java

2003-05-02 Mikhail Khodjaiants
	Notify the Launch view about stack changes when handling the 'Resumed' event.
	* CThread.java

2003-05-01 Mikhail Khodjaiants
	Implementation of termination policy.
	* ICDIConfiguration.java: new "terminateSessionOnExit" method added.
	* SessionManager.java: terminates the launch when all targets are terminated or disconnected.
	* CDebugCorePlugin.java: provides an access to the current session managers.
	* CDebugTarget.java
 
2003-04-25 Mikhail Khodjaiants
	Fix for bug 36909
	* DisassemblyManager.java: check if the address of a stack frame is not 0;

2003-04-23 Mikhail Khodjaiants
	Check for null pointer in 'isCharacter' and 'isCharPointer'.
	* CValue.java

2003-04-23 Mikhail Khodjaiants
	Throw DebugException when getSignals() fails.
	* CSignalManager.java

2003-04-23 Mikhail Khodjaiants
	Additional checks for the situation when the stack depth is not 0 and 
	the frame array is empty.
	* CThread.java

2003-04-22 Mikhail Khodjaiants
	Disconnect: terminate should be called from the disconnect event handler.
	* CDebugTarget.java

2003-04-21 Mikhail Khodjaiants
	Disconnnect: target should be disconnected before terminate the session 
	because of race condition.
	* CDebugTarget.java

2003-04-21 Mikhail Khodjaiants
	Unnecessary error logging (bug 36682).
	* CValue.java

2003-04-21 Mikhail Khodjaiants
	Temporary fix for character values.
	* CValue.java

2003-04-20 Alain Magloire

	* CValue.java:
	Was throwing a IndexOutOfBoundException.

2003-04-17 Mikhail Khodjaiants
	Check if the underlying cdi variable is not null before accessing it.
	* CVariable.java
 
2003-04-16 Mikhail Khodjaiants
	Quick fix for variable values.
	* CValue.java

2003-04-14 Alain Magloire

	StringBuffer.indexOf() is 1.4.x only

	* CDebugUtils.java

2003-04-11 Mikhail Khodjaiants
	Core support of function and method breakpoints.
	* CDebugModel.java
	* ICFunctionBreakpoint.java
	* CDebugUtils.java
	* CFunctionBreakpoint.java
	* CDebugTarget.java

2003-04-09 Mikhail Khodjaiants
	Core support of function breakpoints.
	* CDebugModel.java
	* ICFunctionBreakpoint.java
	* CDebugTarget.java

2003-04-07 Mikhail Khodjaiants
	Changed the message text in the 'getStackDepth' method.
	* CThread.java

2003-04-07 Mikhail Khodjaiants
	Changed the message generated in the 'targetRequestFailed' methods of CDebugElement.
	* CDebugElement.java

2003-04-07 Mikhail Khodjaiants
	Replaced 'toString()' by 'getMessage()' for CDI exceptions.
	* CSharedLibraryManager.java
	* CUpdateManager.java
	* CDebugTarget.java
	* CStackFrame.java
	* CThread.java
	* CVariable.java

2003-04-01 Mikhail Khodjaiants
	Moved the 'Auto-Refresh' preferences from CDebugUIPlugin to use it for initialization of update managers.
	* ICDebugConstants.java
	* CRegisterManager.java
	* CSharedLibraryManager.java

2003-04-01 Mikhail Khodjaiants
	Removed the 'fDebugTarget' field from CSharedLibraryManager.
	* CSharedLibraryManager.java
 
2003-03-31 Mikhail Khodjaiants
	The new abstract class ('CUpdateManager') is added to provide a basic implementation of ICUpdateManager.
	CSignalManager, CSharedLibraryManager and CRegisterManager extend this class.
	* ICRegisterManager.java: new
	* CRegisterManager.java: new
	* CSharedLibraryManager.java
	* CSignalManager.java
	* CUpdateManager.java: new
	* CDebugTarget.java
	* CRegisterGroup.java

2003-03-28 Mikhail Khodjaiants
	Use the 'exists' method of the 'IFile' interface instead of using 'toFile().exists()' for 'IPath'.
	* CDirectorySourceLocation.java
	* CSourceLocator.java

2003-03-28 Mikhail Khodjaiants
	Do not log the exceptions thrown by the breakpoint setting methods.
	* CDebugTarget.java

2003-03-28 Mikhail Khodjaiants
	Added default format preference constants for variables, expressions and registers.
	* ICDebugConstants.java
 
2003-03-28 Mikhail Khodjaiants
	Core support of the 'Run To C/C++ Line' and 'Resume At C/C++ Line' actions for external files.
	* IJumpToLine.java
	* IRunToLine.java
	* CDebugTarget.java
	* CThread.java

2003-03-27 Mikhail Khodjaiants
	Applied patch from Chris Songer: Assembly View Fixups
	* ICDIInstruction.java
	* DisassemblyStorage.java

2003-03027 Alain Magloire

	Adjust the code refactor in the CoreModel for IBinary
	* CDebugTarget.java

2003-03-18 Mikhail Khodjaiants
	Removed the gdb-specific variable parsing.
	* ICValue.java
	* CArrayPartition.java
	* CArrayPartitionValue.java
	* CModificationVariable.java
	* CStackFrame.java
	* CValue.java
	* CVariable.java
	* CArrayEntryVariable.java: removed
	* CLocalVariable.java: removed

2003-03-17 Mikhail Khodjaiants
	Replace range by start index and length in 'Display As Array' action.
	* ICDIVariableManager.java
	* ICastToArray.java
	* CVariable.java

2003-03-14 Mikhail Khodjaiants
	Added the 'isEditable' and 'hasChildren' methods to the 'ICVariable' interface.
	* ICVariable.java
	* CVariable.java
	* CModificationVariable.java

2003-03-14 Mikhail Khodjaiants
	Cross-referencing projects cause the debugger to go into a stack overflow exception. 
	Make sure that there is only one source location for each referenced project.
	* CSourceLocator.java

2003-03-13 Alain Magloire

	No longer throw exceptions.
	* src/org/eclipse/cdt/internal/core/model/CFormattedMemoryBlock.java
	* src/org/eclipse/cdt/internal/core/model/CVariable.java
	
2003-03-13 Alain Magloire

	* src/org/eclipse/cdt/debug/core/cdi/model/ICDIVariable.java:
	Also extends ICDIVariableObject.
	* src/org/eclipse/cdt/debug/core/cdi/model/ICDIArgument.java:
	Also extends ICDIArgumentObject.
	* src/org/eclipse/cdt/debug/core/cdi/model/ICDIRegister.java:
	Also extends ICDIRegisterObject
	* src/org/eclipse/cdt/debug/core/cdi/ICDIVariableManager.java:
	getLocalVariableObject() new method.
	
2003-03-09 Mikhail Khodjaiants
	New ICDIVariableManager methods for the 'DisplayAsArray' and 'CastToType' actions.
	* CVariable.java

2003-03-11 Alain Magloire

	* src/org/eclipse/cdt/debug/core/cdi/ICDIVariableManager.java:
	New methods getVariableObjectAsArray(), getVariableObjectAsType().

2003-03-09 Mikhail Khodjaiants
	Core support of the "Display As Array" action.
	* ICastToArray.java
	* CLocalVariable.java
	* CVariable.java

2003-03-09 Mikhail Khodjaiants
	Core support of the "Cast To Type" and "Restore Default Type" actions.
	* ICastToType.java: new
	* CLocalVariable.java
	* CStackFrame.java
	* CVariable.java

2003-02-24 Alain Magloire

	* src/org/eclipse/cdt/debug/core/cdi/ICDIRegisterObject.java:
	* src/org/eclipse/cdt/debug/core/cdi/ICDIArgumentObject.java:
	Reorganized imports.

2003-02-20 Mikhail Khodjaiants
	No need to set the source search path to the debugger.
	* ICSourceLocation.java
	* CDirectorySourceLocation.java
	* CProjectSourceLocation.java
	* CDebugTarget.java

2003-02-20 Mikhail Khodjaiants
	Changed to 'public' the access modifier of the 'setAssocition' method.
	* CDirectorySourceLocation.java

2003-02-18 Mikhail Khodjaiants
	Added persistency to the source locator.
	* plugin.xml: added dependency on the 'org.apache.xerces' plugin
	* ICSourceLocation.java
	* CDebugUtils.java
	* CDirectorySourceLocation.java
	* CProjectSourceLocation.java
	* CSourceLocator.java
	* CSourceManager.java

2003-02-13 Mikhail Khodjaiants
	Undo changes because the 'asyncExec' method of the 'DebugPlugin' class has added since version 2.1.
	* IAsyncExecutor.java: removed
	* CDebugCorePlugin.java

2003-02-13 Mikhail Khodjaiants
	Use the 'asyncExec' method of the 'DebugPlugin' class.
	* IAsyncExecutor.java: removed
	* CDebugCorePlugin.java

2003-02-12 Mikhail Khodjaiants
	The gdb-specific 'setAutoSolibMethod' method is removed from ICDISharedLibraryManager.
	* ICDISharedLibraryManager.java
	* CSharedLibraryManager.java

2003-02-12 Alain Magloire

	* src/org/eclipse/cdt/debug/core/cdi/mode/ICDITarget.java (getSharedLibraries):
	Remove action done via the manager.

2003-02-12 Mikhail Khodjaiants
	Use ICDIRegisterManager instead of ICDITarget.
	* ICDITarget.java
	* CDebugTarget.java
	* CRegisterGroup.java

2003-02-11 Mikhail Khodjaiants
	The 'auto load symbols' action support in ICSharedLibraryManager.
	* ICSharedLibraryManager.java
	* CSharedLibraryManager.java

2003-02-11 Mikhail Khodjaiants
	The 'load symbols' actions support in ICSharedLibraryManager.
	* ICSharedLibraryManager.java
	* CSharedLibraryManager.java

2003-02-10 Mikhail Khodjaiants
	Support of update ('Refresh', 'Auto-Refresh) actions.
	* ICUpdateManager.java: new
	* ICSharedLibraryManager.java
	* CSharedLibraryManager.java

2003-02-10 Mikhail Khodjaiants
	Disable the address breakpoints to prevent the debugger to insert them prematurely.
	* CDebugTarget.java

2003-02-05 David Inglis

	Refactor Constants to debug.core
	* src/org/eclipse/cdt/debug/core/ICDTLaunchConfigurationConstants.java
	

2003-02-05 Mikhail Khodjaiants
	Support of the 'Resume At C/C++ Line' action.
	* IJumpToLine.java: new
	* IJumpToAddress.java: new
	* ICDebugTarget.java
	* CDebugTarget.java
	
2003-02-04 Mikhail Khodjaiants
	Support of the 'Resume Without Signal' action.
	* IResumeWithoutSignal.java: new
	* ICDebugTarget.java
	* CDebugTarget.java
	* CThread.java
	* CStackFrame.java
	* CSignal.java
	
2003-02-03  Alain Magloire

	* src/org/eclipse/cdt/debug/core/cdi/model/ICDITarget.java:
	* src/org/eclipse/cdt/debug/core/cdi/model/ICDIThread.java:
	Added methods, signal(), jump() stepReturn(boolean) to
	mimic gdb "return/finish".

2003-02-03 Mikhail Khodjaiants
	Filter out breakpoints set in unrelated projects.
	* CDebugTarget.java
	* CDebugUtils.java

2003-02-03 Mikhail Khodjaiants
	Implemention of the 'handle' command of the 'Signals' view.
	* ICDISignal.java: added the 'handle' method
	* CSignal.java: implementation of the 'handle' command.

2003-02-03 Mikhail Khodjaiants
	Implementing the 'Signals' view.
	* CSignalManager.java: new
	* CSignal.java: new

2003-02-03  Alain Magloire

	* src/org/eclipse/cdt/debug/core/cdi/event/ICDIExitEvent.java:
	Extends ICDIDestroyedEvent.
	(getReason): New method.
	* src/org/eclipse/cdt/debug/core/cdi/ICDISignalExitInfo.java:
	New file.
	* src/org/eclipse/cdt/debug/internal/core/CDebugTarget.java (handleExitEvent):
	Change to conform to new ICDIExitEvent changes.

2003-02-03  Alain Magloire

	* src/org/eclipse/cdt/debug/core/cdi/model/ICDISignal.java:
	(getDescription): new Method replace getMeaning().
	(isStopSet): new method.
	(isIgnore): new method.

2003-01-31 Mikhail Khodjaiants
	Implementing the 'Signals' view.
	* ICSharedLibraryManager.java
	* ICSignalManager.java: new
	* ICSignal.java: new
	* CSignalManager.java: new
	* CSignal.java: new
	* CDebugTarget.java	

2003-01-30 Mikhail Khodjaiants
	Create an address breakpoint if the source locator can not find the file specified by gdb.
	* CDebugTarget.java

2003-01-29 Mikhail Khodjaiants
	Managing breakpoints from the gdb console (fixes).
	* CDebugModel.java
	* CAddressBreakpoint.java
	* CBreakpoint.java
	* CFunctionBreakpoint.java
	* CLineBreakpoint.java
	* CWatchpoint.java
	* CDebugTarget.java
	
2003-01-29 Alain Magloire

	* src/org/eclipse/cdt/debug/core/cdi/model/ICDISharedLibraryManger.java (getSharedLibraryPaths):
	New method.
	(setSharedLibraryPaths): New method.
	(setAutoLoadSymbols): New method.

2003-01-28 Alain Magloire

	* src/org/eclipse/cdt/debug/core/cdi/model/ICDIThread.java (setCurrentFrame):
	New method.

2003-01-27 Mikhail Khodjaiants
	Managing breakpoints from the gdb console.
	* CDebugCorePlugin.java
	* CDebugModel.java
	* IAsyncExecutor.java
	* ICSourceLocator.java
	* CAddressBreakpoint.java
	* CBreakpoint.java
	* CFunctionBreakpoint.java
	* CLineBreakpoint.java
	* CWatchpoint.java
	* CDebugTarget.java
	* CSourceLocator.java
	* CSourceManager.java

2003-01-27 Mikhail Khodjaiants
	Use 'equals' to compare CDI variables instead of names.
	* CStackFrame.java

2003-01-27 Alain Magloire

	* src/org/eclipse/cdt/debug/core/cdi/model/ICDIVariableObject.java:
	* src/org/eclipse/cdt/debug/core/cdi/model/ICDIArgumentObject.java:
	* src/org/eclipse/cdt/debug/core/cdi/model/ICDIRegisterObject.java:
	Move to model package.
	* src/org/eclipse/cdt/debug/core/cdi/ICDIRegisterManager.java:
	* src/org/eclipse/cdt/debug/core/cdi/ICDIVariableManager.java:
	* src/org/eclipse/cdt/debug/internal/core/model/CDebugTarget.java:
	* src/org/eclipse/cdt/debug/internal/core/model/CRegisterGroup.java:
	Refactor/move of the ICDIRegisterObject and ICDIVariableObject

2003-01-25 Alain Magloire

        Added new Managers:
		ICDIVariableManager
		ICDIExpressionManager
		ICDIRegisterManager
		ICDIManager.

        Refactor of CSession to Session, CTarget to Target
        and CThread to Thread.
	* src/org/eclipse/cdt/debug/core/cdi/model/ICDITarget.java (getGlobalVariables):
	Removed.
	* src/org/eclipse/cdt/debug/core/cdi/model/ICDIThread.java (getCurrentStackFrame):
	New method.
	* src/org/eclipse/cdt/debug/core/cdi/ICDIManger.java:
	New interface for the managers.
	* src/org/eclipse/cdt/debug/core/cdi/ICDIBreakpointManger.java:
	* src/org/eclipse/cdt/debug/core/cdi/ICDIExpressionManger.java:
	* src/org/eclipse/cdt/debug/core/cdi/ICDIVariableManger.java:
	* src/org/eclipse/cdt/debug/core/cdi/ICDIRegisterManger.java:
	* src/org/eclipse/cdt/debug/core/cdi/ICDISignalManger.java:
	* src/org/eclipse/cdt/debug/core/cdi/ICDISourceManger.java:
	* src/org/eclipse/cdt/debug/core/cdi/ICDISharedLibraryManger.java:
	Extends ICDIManager.
	* src/org/eclipse/cdt/debug/core/cdi/ICDISession.java:
	New method to return the managers.

	* src/org/eclipse/cdt/debug/internal/core/model/CDebuTarget.java:
	* src/org/eclipse/cdt/debug/internal/core/model/CFormattedMemoryBlock.java:
	Use the destroyEvent


2003-01-21 Alain Magloire
	* src/org/eclipse/cdt/debug/core/cdi/event/ICDIConfiguration.java
	(supportsSharedLibary): New method.

2003-01-21 Alain Magloire

	* src/org/eclipse/cdt/debug/core/cdi/event/ICDISuspendedEvent.java:
	Use ICDISignalReceived instead.
	* src/org/eclipse/cdt/debug/core/cdi/model/ICDISignal.java:
	New file, element of the SignalManager.
	* src/org/eclipse/cdt/debug/core/cdi/model/ICDISignalManager.java:
	Return model/ICDISignal.
	* src/org/eclipse/cdt/debug/core/cdi/model/ICDISignalReceived.java:
	New file.
	* src/org/eclipse/cdt/debug/core/internal/core/model/CDebugTarget.java:
	Use ICDISignalReceived.
	* src/org/eclipse/cdt/debug/core/internal/core/model/CThread.java:
	Use ICDISignalReceived.

2003-01-21 Mikhail Khodjaiants
	Retry to set breakpoints if shared library's symbols are loaded.
	* CDebugTarget.java
	* CThread.java
	* CSharedLibraryManager.java

2003-01-20 Mikhail Khodjaiants
	Fix for the 'Show breakpoints supported by selected target' action.
	* CDebugTarget.java

2003-01-20 Alain Maglorei

	* src/build.properties: Add schema in soure.cdtdebugcore.jar
	variable.

2003-01-17 Alain Magloire

	* src/org/eclipse/cdt/debug/core/cdi/ICDISharedLibraryManager.java
	(loadSymbols): new method takes an array of IShareLibrary
	(loadSymbols): no arguments.

2003-01-16 Mikhail Khodjaiants
	Implementing the Shared Libraries view.
	* ICSharedLibrary.java
	* ICSharedLibraryManager.java
	* CDebugElement.java
	* CDebugTarget.java
	* CSharedLibrary.java
	* CSharedLibraryManager.java

2003-01-16 Mikhail Khodjaiants
	* ICDILoadedEvent.java: Removed.

2003-01-16 Alain Magloire

	* src/org/eclipse/cdt/debug/core/cdi/model/ICDIStringValue.java: Removed.
	* src/org/eclipse/cdt/debug/core/cdi/model/ICDIArrayValue.java: Removed.
	* src/org/eclipse/cdt/debug/core/cdi/model/ICDIStructureValue.java: Removed.

2003-01-16 Alain Magloire

	* src/org/eclipse/cdt/debug/core/cdi/ICDISession.java (getSharedLibraryManager):
	New method.
	* src/org/eclipse/cdt/debug/core/cdi/model/ICDISharedLibrary.java (areSymbolsLoaded):
	Rename symbolsRead() to areSymbolsLoaded().

2003-01-15 Mikhail Khodjaiants
	Added the 'ICDISharedLibraryManager' interface.
	* ICDISharedLibraryManager.java

2003-01-15 Mikhail Khodjaiants
	Added new methods to the 'ICDISharedLibrary' interface.
	* ICDISharedLibarary.java

2003-01-14 Mikhail Khodjaiants
	Check if thread is already disposed in the CDI event handler because the array of listeners used by EventManager
	in some situations is not up to date.
	* CThread.java

2003-01-14 Alain Magloire

	* src/org/eclipse/cdt/debug/core/cdi/ICDIVariableManager.java: New file.
	* src/org/eclipse/cdt/debug/core/cdi/ICDIVariableObject.java: New file.
	* src/org/eclipse/cdt/debug/core/cdi/ICDIArgumentObject.java: New file.
	
2003-01-13 Mikhail Khodjaiants
	Added the 'IRunToAddress' interface to support the 'Run To Line' action in disassembly.
	* ICDebugTarget.java: extends IRunToAddress
	* IRunToAddress.java: new interface
	* CDebugTarget.java: implementation

2003-01-13 Mikhail Khodjaiants
	Fix in the thread created event handler: do nothing if thread has already created.
	* CDebugTarget.java

2003-01-10 Mikhail Khodjaiants
	Implementation of address breakpoints.
	* ICAddressBreakpoint.java
	* ICDebugTarget.java
	* IDisassemblyStorage.java
	* CDebugModel.java
	* ICBreakpointManager.java
	* CAddressBreakpoint.java
	* CFunctionBreakpoint.java
	* CDebugTarget.java
	* CStackFrame.java
	* DisassemblyManager.java
	* DisassemblyStorage.java

2003-01-06 Alain Magloire

    * build.properties: Patch from Judy Green.

2003-01-06 Mikhail Khodjaiants
	Check if project exists when generating the source locations.
	* CSourceLocator.java

2003-01-06 Alain Magloire

	* src/org/eclipse/cdt/debug/core/cdi/ICDIBreakpointManager.java (createLocation):
	New method to take an address.

2003-01-02 Mikhail Khodjaiants
	The 'DisassemblyStorage' class implements an adapter for the 'IResource' class and returns the executable file.
	* IExecFileInfo.java: added a new method: 'getExecFile'
	* CDebugTarget.java
	* DisassemblyStorage.java

2003-01-02 Mikhail Khodjaiants
	If breakpoint or watchpoint has been disabled before launching the debugger doesn't disable it.
	* CDebugTarget.java

2002-12-29 Mikhail Khodjaiants
	Implementation of the 'Source Lookup' property page.
	* IDirectorySourceLocation.java: new interface
	* IProjectSourceLocation.java: new interface
	* CDirectorySourceLocation.java
	* CProjectSourceLocation.java
	* CSourceLocator.java

2002-12-29 Mikhail Khodjaiants
	 Fix in the 'supportsBreakpoints' method of CDebugTarget
	 * CDebugTarget.java: No need to check if the breakpoint file belongs to the source locator.

2002-12-18 Mikhail Khodjaiants
	Implementing the 'Source Lookup' property page.
	* CDirectorySourceLocation.java
	* CProjectSourceLocation.java

2002-12-18 Mikhail Khodjaiants
	Check if CValue has variables before calling 'getCDIVariables'.
	* CValue.java

2002-12-17 Mikhail Khodjaiants
	Formatting 'char' types.
	* CValue.java
	* CModificationVariable.java

2002-12-17 Mikhail Khodjaiants
	The core support of the prompting source locator.
	* ICSourceLocator.java
	* CDebugTarget.java
	* CDirectorySourceLocation.java
	* CSourceLocator.java
	* CSourceManager.java
	* DisassemblyManager.java

2002-12-17 Mikhail Khodjaiants
	The 'getLineNumber' method of CStackFrame should return the line number associated with the stack frame if the current source locator 
	does not implement 'ICSourceLocator'.
	* CStackFrame.java

2002-12-17 Mikhail Khodjaiants
	Changed the implementation of the 'refresh' method of CVariable.
	* CVariable.java

2002-12-16 Mikhail Khodjaiants
	Added support of variable formatting.
	* ICValue.java: new type - TYPE_UNKNOWN
	* ICVariable: new interface for object contribution, set/get format and refresh methods
	* CValue.java
	* CVariable.java
 
2002-12-13 Mikhail Khodjaiants
	Display message when 'getStackDepth' is timed out.
	* CThread.java

2002-12-10 Alain Magloire

	* src/org/eclipse/cdt/debug/core/cdi/model/ICDIVariable.java (setFormat):
	New method to change the variable formats(hexa, octal, etc..)

2002-12-10 Mikhail Khodjaiants
	If the given source file path is absolute and the source locator can not find it in the all specified locations return a FileStorage object.
	* CSourceLocator.java

2002-12-09 Mikhail Khodjaiants
	Split the detail message of ICDIErrorInfo into tokens and trancate aech token if it is too long.
	* CDebugTarget.java

2002-12-08 Mikhail Khodjaiants
	Display the error message with details when program is suspended because of ICDIErrorInfo.
	* CDebugTarget.java

2002-12-05 Alain Magloire

	Some debuggers like gdb/mi can provide detail information, for example
	gdb/mi dumps errors in mi "log stream" output.

	* src/.../cdi/CDIException.java (getDetailMessage): New method to provide
	more information it need be.
	* src/.../cdi/ICDIErrorInfo.java (getDetailMessage: New method.

2002-12-04 Mikhail Khodjaiants
	Added the 'setChanged' method to ICValue. This method should common for CValue and 
	CArrayPartitionValue to implement 'setChanged' of CVariable correctly.
	* ICValue.java
	* CArrayPartitionValue.java
	* CVariable.java

2002-12-02 Mikhail Khodjaiants
	Refactoring - files moved from org.eclipse.cdt.debug.core to the new package: org.eclipse.cdt.debug.core.model:
	* ICBreakpoint.java
	* ICDebugTarget.java
	* ICExpressionEvaluator.java
	* ICFunctionBreakpoint.java
	* ICLineBreakpoint.java
	* ICValue.java
	* ICWatchpoint.java
	* IDebuggerProcessSupport.java
	* IDummyStackFrame.java
	* IExecFileInfo.java
	* IFormattedMemoryBlock.java
	* IFormattedMemoryBlockRow.java
	* IGlobalVariable.java
	* IInstructionStep.java
	* IRestart.java
	* IRunToLine.java
	* IStackFrameInfo.java
	* IState.java
	* ISwitchToFrame.java
	* ISwitchToThread.java
	* ICDebugTargetType.java: new interface
	* IFormattedMemoryRetrieval: removed
	
	
2002-12-02 Mikhail Khodjaiants
	Check if the underlying IFile exists when retrieving the path of global variable.
	* CDebugTarget.java

2002-12-02 Alain Magloire

	* src/org/eclipse/cdt/debug/core/cdi/ICDIErrorInfo.java: New file.

2002-11-28 Mikhail Khodjaiants
	'exec-until' instead of temporary breakpoints for 'run to line'.
	* CDebugTarget.java
	* CThread.java

2002-11-28 Mikhail Khodjaiants
	Live editing of the memory view: removed support of the 'Save Changes' action.
	* IFormattedMemoryBlock.java
	* CFormattedMemoryBlock.java

2002-11-27 Alain Magloire

	* src/org/eclipse/cdt/debug/core/cdi/model/ICDITarget.java (runUntil): new method.
	* src/org/eclipse/cdt/debug/core/cdi/model/ICDIThread.java (runUntil): new method.

2002-11-27 Mikhail Khodjaiants
	Typo in plugin.properties.

2002-11-27 Mikhail Khodjaiants
	Fire suspend event for debug target that doesn't have threads.
	* CDebugTarget.java

2002-11-27 Alain Magloire

	* src/.../debug/internal/core/model/CDebugTarget.java (isLittleEndian):
	Use CoreModel.getDefault().
	(getGlobals): Use CoreModel.getDefault().

2002-11-24 Mikhail Khodjaiants
	Fix for watchpoints.
	* CSourceLocator.java

2002-11-22 Mikhail Khodjaiants
	Cache source elements to optimize search.
	* CProjectSourceLocator.java

2002-11-22 Mikhail Khodjaiants
	Fix in the source locator's search algorithm.
	* CProjectSourceLocator.java

2002-11-21 Mikhail Khodjaiants
	The memory view does not display values if the address expression is '0xFFFFFFFF'.
	* CFormattedMemoryBlock.java
	
2002-11-21 Mikhail Khodjaiants
	Added the handler of ICDIDestroyedEvent to 'CFormattedMemoryBlock.
	* CFormattedMemoryBlock.java

2002-11-20 Mikhail Khodjaiants
	Fix for bug 26595.
	The type of the address expression has been changed from String to ICDIExpression to handle 
	changes of the start address.
	* CDebugModel.java
	* CFormattedMemoryBlock.java
	* IFormattedMemoryBlock.java: added the 'isStartAddressChanged' method.

2002-11-15 Mikhail Khodjaiants
	Partial fix for bug 25956.
	* DisassemblyManager.java: Filter out the instructions that do not belong to the function.

2002-11-15 Mikhail Khodjaiants
	If the backtrace is very deep the debugger is unable to parse MI output.
	The limited number of stack frames will be displayed.
	* IDummyStackFrame.java
	* CDummyStackFrame.java
	* CStackFrame.java
	* CThread.java

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/org/eclipse/cdt/debug/core/cdi/model/ICDIThread.java (getStackFrames):
	New method to provide a range lowFrame and highFrame.
	(getStackFrameCount): New method returns the depth level
	of the stackframes.
	
2002-11-13 Mikhail Khodjaiants
	Fix for the stepping problem if the selected stack frame is not the topmost one.
	* CStackFrame.java: The 'stepToFrame' method is temporary replaced by corresponding step method.

2002-11-13
	* schema/CDebugger.exsd
	* src/org/eclipse/cdt/debug/core/ICDebugConfiguration.java
	* src/org/eclipse/cdt/debug/internal/core/DebugConfiguration.java
	Added supported CPU to Debugger extension.
	
2002-11-07 Mikhail Khodjaiants
	When a referenced project is deleted it's location is null. The source locator should 
	check this when it returns the path array.
	* CProjectSourceLocation.java

2002-11-05 Mikhail Khodjaiants
	Added support of the 'Add Global Variables' action of the Expressions view.
	* IExecFileInfo.java
	* IGlobalVariable.java
	* CDebugTarget.java

2002-11-03 Mikhail Khodjaiants
	Added support of the formatting actions of the Memory view.
	* IFormattedMemoryBlock.java
	* CFormattedMemoryBlock.java
	* CDebugTarget.java
	* CDebugUtils.java
	
2002-11-01 Mikhail Khodjaiants
	Added conversion utilities to support decimal format in the Memory View.
	* CDebugUtils.java

2002-11-01 Mikhail Khodjaiants
	Added the 'IExecFileInfo' interface to provide access to the executable file information.
	* IExecFileInfo.java: definition
	* CDebugTarget.java: implementation

2002-10-31 Mikhail Khodjaiants
	Replaced the 'IProject' argument by 'IFile' in the debug target factory methods - second phase.
	* CDebugModel.java: removed unused debug target factory methods.
	* CDebugTarget.java: removed unused constructor.

2002-10-31 Mikhail Khodjaiants
	Replaced the 'IProject' argument by 'IFile' in the debug target factory methods.
	* CDebugModel.java
	* CDebugTarget.java

2002-10-31 Mikhail Khodjaiants
	Fixed the synchronization bug.
	* CFormattedMemoryBlock.java

2002-10-30 Mikhail Khodjaiants
	Implementing the 'Refresh Memory' action.
	* IFormattedMemoryBlock.java: added the 'refresh' method.
	* CFormattedMemoryBlock.java: implementation of the 'refresh' method.

2002-10-30 Mikhail Khodjaiants
	Implementation of the 'SaveMemoryChanges' action.
	* IFormattedMemoryBlock.java: added the 'saveChanges' method.
	* CFormattedMemoryBlock.java: implementation of the 'saveChanges' method.
	
2002-10-30 Mikhail Khodjaiants
	Fix for bug 25283.
	* CDebugTarget.java: in 'setCurrentThread' method set the 'isCurrent' flag to false for the currently current thread.

2002-10-29 Mikhail Khodjaiants
	Implementing editing features of the memory view.
	* IFormattedMemoryBlockRow.java
	* IFormattedMemoryBlock.java
	* CFormattedMemoryBlock.java

2002-10-28 Mikhail Khodjaiants
	Implementing editing features of the memory view.
	* IFormattedMemoryBlockRow.java
	* CFormattedMemoryBlock.java
	
2002-10-27 Mikhail Khodjaiants
	* IFormattedMemoryBlock.java: added the 'setItemValue' method.
	* CFormattedMemoryBlock.java: implementation of the 'setItemValue' method.

2002-10-16 Alain Magloire

	* src/.../core/cdi/model/ICDIMemoryBlock.java (refresh):
	New method.

2002-10-25 Mikhail Khodjaiants
	* CDebugUtils.java: Added utilities to convert textual presentation of memory to bytes.

2002-10-25 Mikhail Khodjaiants
	* IFormattedMemoryBlock.java: Replaced 'MEMORY_BYTES_PER_ROW_...' constants by 'MEMORY_NUMBER_OF_COLUMNS_...'.

2002-10-25 Mikhail Khodjaiants
	Remove the 'setWordSize' method from 'IFormattedMemoryBlock' and use 'reformat' instead.
	* IFormattedMemoryBlock.java: removed the 'setWordSize' method.
	* CFormattedMemoryBlock.java: removed the implementation of 'setWordSize' method.

2002-10-24 Mikhail Khodjaiants
	Support of the "Memory Unit Size" action.
	* IFormattedMemoryBlock.java: added the 'setWordsize' method.
	* CFormattedMemoryBlock.java: implementation of the 'setWordSize' method.

2002-10-24 Mikhail Khodjaiants
	Moved the memory format constants from IFormattedMemoryRetrieval.java 
	to IFormattedMemoryBlock.java.
	* IFormattedMemoryRetrieval.java
	* IFormattedMemoryBlock.java

2002-10-24 David Inglis
	* CDebugTarget.java
	fix exception on shutdown with a connected target, CDI session
	was not terminated.
	
2002-10-23 Mikhail Khodjaiants
	Support for debugger console.
	* CDebugModel.java: new factory methods for CDebugTarget
	* IDebuggerProcessSupport: new interface that defines the debugger 
	process support functionality.
	* CDebugTarget.java: implementation of IDebuggerProcessSupport interface.

2002-10-22 Alain Magloire

	* src/.../cdi/ICDISession.java (getSessionProcess):
	New method to let user acess directly the debugger.

2002-10-20 Mikhail Khodjaiants
	Added a functionality needed to process ICDIMemoryChangedEvent.
	* IFormattedMemoryBlock.java
	* CFormattedMemoryBlock.java
 
2002-10-20 Alain Magloire

	* src/.../cdi/model/ICDITarget.java (getMemoryBlock): Remove
	we use the MemoryManager instead.
	(evaluateExpressionToValue): Remove not used.
	* src/.../cdi/model/ICDISourceManager.java (getFile): Remove not use.
	(setFile): Remove not use.
	(reset): Remove not use.

2002-10-19 Alain Magloire

	The UI needs to be told when the memory changes
	so it can update the memory view.  The responsability
	of this been push to the CDI implementation to generate
	events(ICDIMemoryChangedEvent) for modified memories.  The
	getSource() method of the class should return an ICDIMemoryBlock.
	Note that the CDI implementation will only try to generate
	the event for ICDIMemoryBlock that are not frozen(setFrozen()) since this
	is a potentially very time consuming operation.

	* src/.../cdi/event/ICDIMemoryChangedEvent.java: New Class.

2002-10-17 Mikhail Khodjaiants
	Implementing the memory view support:
	* CFormattedMemoryBlock.java: implementation of the 'dispose' method added.

2002-10-17 Mikhail Khodjaiants
	Implementing the memory view support:
	* CDebugModel.java
	* ICMemoryManager.java
	* IFormattedMemoryBlock.java
	* CFormattedMemoryBlock.java
	* CDebugUtils.java
	* CMemoryManager.java

2002-10-16 Alain Magloire

	In the memory manager a string should be allowed to
	create a block since an expression can be use.
	
	* src/.../debug.core.cdi/ICDIMemoryManager.java (createMemoryBlock):
	 New method that takes a string as the first argument.
	
2002-10-15 Mikhail Khodjaiants
	* CDebugModel.java: Implementing the memory view support.
	* ICMemoryManager: Implementing the memory view support.
	* IFormattedMemoryBlock.java: Implementing the memory view support.
	* CDebugTarget.java: Implementing the memory view support.
	* CFormattedMemoryBlock.java: Implementing the memory view support.
	* CMemoryManager.java: Implementing the memory view support.

2002-10-15 Mikhail Khodjaiants
	* ICDebugConstants.java: New interface that contains the constant definitions for C/C++ debug plug-in.
	* CSourceManager.java: Implementation of the 'Automatically switch to disassembly mode' preference.

2002-10-15 Mikhail Khodjaiants
	* CThread.java: The previous fix should be done only when switching between frames of the same thread.

2002-10-14 Mikhail Khodjaiants
	* CThread.java: Reset the register's change flag before switching to another frame.

2002-10-14 Mikhail Khodjaiants
	* CThread.java: Set the correct detail for 'resume' event to prevent collapsing of the variable's and 
	register's trees after stepping.

2002-10-14 Mikhail Khodjaiants
	* ISwitchToThread.java: New method to get the current thread.
	* CDebugTarget.java: Implemented the 'getCurrentThread' method of the 'ISwitchToThread' interface.
	* CDebugTarget.java: Fix in the 'setCurrentThread' method.
	
2002-10-12 Alain Magloire

	* core/cdi/model/ICDIMemoryBlock (supportValueModification):
	Remove the method, it should be part of a ICDIConfiguration.

	* core/cdi/ICDIMemoryManager (getBlock): Rename to getMemoryBlock
	(createMemoryBlock): New method to get a memory block.

2002-10-12 Alain Magloire

	* core/cdi/ICDILocation (getInstructions): Methods
	removed is now part of SourceManager.

2002-10-11 Mikhail Khodjaiants
	* CDebugTarget.java: Added return for ISourceMode to 'getAdapter'.
	* CSourceManager.java: Set the real mode when setting the source mode.

2002-10-11 Mikhail Khodjaiants
	* DisassemblyStorage.java: Changed the format of the disassembly view's output.
2002-10-11 Alain Magloire

	* ICDISourceManager.java (getMixedInstructions): Three
	new methods to get the src and the intructions.
	
	* ICIDMixedInstruction:  New Class that return the mixed
	of source location and assembly instructions.

2002-10-10 Mikhail Khodjaiants
	* CVariable.java: Made the 'fChanged' field protected to access to it from the derived class (CRegister).
	* CRegister.java: Added the 'hasValueChanged' method to 'CRegister'.

2002-10-10 Mikhail Khodjaiants
	* CThread.java: Check if the selected frame is current before calling 'setCurrentStackFrame'.

2002-10-10 Mikhail Khodjaiants
	* CStackFrame.java: Added Getter and Setter for 'fRefreshVariables'.
 
2002-10-10 Mikhail Khodjaiants
	* DisassemblyManager.java: Replaced 'getInstructions( String fileName, int lineNumber )' 
	by 'getInstructions( String fileName, int lineNumber, int maxLineCount )'.

2002-10-10 Mikhail Khodjaiants
	* CDebugTarget.java:  Implementing the disassembly mode.
	* CThread.java:  Implementing the disassembly mode.

2002-10-10 Mikhail Khodjaiants
	* CSourceManager.java: Implementing the disassembly mode.
	* DisassemblyManager.java: Implementing the disassembly mode.
	* DisassemblyStorage.java: Implementing the disassembly mode.
	* CDebugUtils.java: Added the 'toHexAddressString' method.

2002-10-10 Alain Magloire

	* ICDISourceManager.java: Changing the getInstructions()
	method to take long instead of String.
