diff --git a/debug/org.eclipse.cdt.debug.core/ChangeLog b/debug/org.eclipse.cdt.debug.core/ChangeLog
index 7f794aebe55..63e0bac01b9 100644
--- a/debug/org.eclipse.cdt.debug.core/ChangeLog
+++ b/debug/org.eclipse.cdt.debug.core/ChangeLog
@@ -1,3 +1,9 @@
+2005-01-19 Mikhail Khodjaiants
+	Fix for bug 83051: Add global variables deletes existing ones when new added.
+	* ICGlobalVariableManager.java
+	* CGlobalVariableManager.java
+	* CVariableFactory.java
+
 2005-01-18 Mikhail Khodjaiants
 	Fix for bug 82858: NPE when adding global variable to variable view.
 	* CDebugTarget.java
diff --git a/debug/org.eclipse.cdt.debug.core/src/org/eclipse/cdt/debug/core/ICGlobalVariableManager.java b/debug/org.eclipse.cdt.debug.core/src/org/eclipse/cdt/debug/core/ICGlobalVariableManager.java
index d26434470f8..e3fe8aedadf 100644
--- a/debug/org.eclipse.cdt.debug.core/src/org/eclipse/cdt/debug/core/ICGlobalVariableManager.java
+++ b/debug/org.eclipse.cdt.debug.core/src/org/eclipse/cdt/debug/core/ICGlobalVariableManager.java
@@ -38,4 +38,11 @@ public interface ICGlobalVariableManager {
 	 * Removes all global variables from this manager.
 	 */
 	public void removeAllGlobals();
+
+	/**
+	 * Returns the array of descriptors of global varibales added to this manager.
+	 * 
+	 * @return the array of descriptors
+	 */
+	public IGlobalVariableDescriptor[] getDescriptors();
 }
diff --git a/debug/org.eclipse.cdt.debug.core/src/org/eclipse/cdt/debug/internal/core/CGlobalVariableManager.java b/debug/org.eclipse.cdt.debug.core/src/org/eclipse/cdt/debug/internal/core/CGlobalVariableManager.java
index 0287b326e7a..7607a7175f2 100644
--- a/debug/org.eclipse.cdt.debug.core/src/org/eclipse/cdt/debug/internal/core/CGlobalVariableManager.java
+++ b/debug/org.eclipse.cdt.debug.core/src/org/eclipse/cdt/debug/internal/core/CGlobalVariableManager.java
@@ -250,9 +250,6 @@ public class CGlobalVariableManager implements ICGlobalVariableManager {
 		throw new CoreException( s );
 	}
 
-	/**
-	 * @return Returns the initialDescriptors.
-	 */
 	private IGlobalVariableDescriptor[] getInitialDescriptors() {
 		return fInitialDescriptors;
 	}
@@ -268,4 +265,18 @@ public class CGlobalVariableManager implements ICGlobalVariableManager {
 			DebugPlugin.log( e );
 		}
 	}
+
+	/* (non-Javadoc)
+	 * @see org.eclipse.cdt.debug.core.ICGlobalVariableManager#getDescriptors()
+	 */
+	public IGlobalVariableDescriptor[] getDescriptors() {
+		if ( fGlobals == null )
+			return getInitialDescriptors();
+		IGlobalVariableDescriptor[] result = new IGlobalVariableDescriptor[fGlobals.size()];
+		Iterator it = fGlobals.iterator();
+		for ( int i = 0; it.hasNext(); ++i ) {
+			result[i] = ((ICGlobalVariable)it.next()).getDescriptor();
+		}
+		return result;
+	}
 }
diff --git a/debug/org.eclipse.cdt.debug.core/src/org/eclipse/cdt/debug/internal/core/model/CVariableFactory.java b/debug/org.eclipse.cdt.debug.core/src/org/eclipse/cdt/debug/internal/core/model/CVariableFactory.java
index ddd22121ee1..5cfbd4420bb 100644
--- a/debug/org.eclipse.cdt.debug.core/src/org/eclipse/cdt/debug/internal/core/model/CVariableFactory.java
+++ b/debug/org.eclipse.cdt.debug.core/src/org/eclipse/cdt/debug/internal/core/model/CVariableFactory.java
@@ -48,6 +48,13 @@ public class CVariableFactory {
 			public String toString() {
 				return MessageFormat.format( "{0}::{1}", new String[] { getPath().toOSString(), getName() } ); //$NON-NLS-1$
 			}
+
+		    public boolean equals( Object obj ) {
+		    	if ( !(obj instanceof IGlobalVariableDescriptor) )
+		    		return false;
+		    	IGlobalVariableDescriptor d = (IGlobalVariableDescriptor)obj;
+		    	return ( getName().compareTo( d.getName() ) == 0 && getPath().equals( d.getPath() ) );
+		    }
 		};
 	}
 
diff --git a/debug/org.eclipse.cdt.debug.ui/ChangeLog b/debug/org.eclipse.cdt.debug.ui/ChangeLog
index 1234dcff4ad..7c2cc8360ef 100644
--- a/debug/org.eclipse.cdt.debug.ui/ChangeLog
+++ b/debug/org.eclipse.cdt.debug.ui/ChangeLog
@@ -1,3 +1,7 @@
+2005-01-19 Mikhail Khodjaiants
+	Fix for bug 83051: Add global variables deletes existing ones when new added.
+	* AddGlobalsActionDelegate.java
+
 2005-01-18 Mikhail Khodjaiants
 	Fix for bug 82800: Make "Resume At Line" action retargettable.
 	* plugin.xml
diff --git a/debug/org.eclipse.cdt.debug.ui/src/org/eclipse/cdt/debug/internal/ui/actions/AddGlobalsActionDelegate.java b/debug/org.eclipse.cdt.debug.ui/src/org/eclipse/cdt/debug/internal/ui/actions/AddGlobalsActionDelegate.java
index 8e7f78cfda1..6f07a633706 100644
--- a/debug/org.eclipse.cdt.debug.ui/src/org/eclipse/cdt/debug/internal/ui/actions/AddGlobalsActionDelegate.java
+++ b/debug/org.eclipse.cdt.debug.ui/src/org/eclipse/cdt/debug/internal/ui/actions/AddGlobalsActionDelegate.java
@@ -263,6 +263,7 @@ public class AddGlobalsActionDelegate extends ActionDelegate implements IViewAct
 			if ( info != null && gvm != null ) {
 				fGlobals = info.getGlobals();
 				ListSelectionDialog dlg = createDialog();
+				dlg.setInitialSelections( gvm.getDescriptors() );
 				if ( dlg.open() == Window.OK ) {
 					List list = Arrays.asList( dlg.getResult() );
 					IGlobalVariableDescriptor[] selections = (IGlobalVariableDescriptor[])list.toArray( new IGlobalVariableDescriptor[list.size()] );