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.
