diff --git a/org.eclipse.jdt.debug.ui/plugin.xml b/org.eclipse.jdt.debug.ui/plugin.xml
index 6a4cb7d..5f5338c 100644
--- a/org.eclipse.jdt.debug.ui/plugin.xml
+++ b/org.eclipse.jdt.debug.ui/plugin.xml
@@ -3265,6 +3265,13 @@
                   type="org.eclipse.debug.internal.ui.viewers.model.provisional.IElementLabelProvider">
             </adapter>
          </factory>                            
+         <factory
+               adaptableType="org.eclipse.jdt.debug.core.IJavaDebugTarget"
+               class="org.eclipse.jdt.internal.debug.ui.variables.JavaDebugElementAdapterFactory">
+            <adapter
+                  type="org.eclipse.debug.internal.ui.viewers.model.provisional.IElementMementoProvider">
+            </adapter>
+         </factory>                                     
       </extension>     	   
    
    <!-- Dynamic (String Substitution) Variables -->
diff --git a/org.eclipse.jdt.debug.ui/ui/org/eclipse/jdt/internal/debug/ui/variables/JavaDebugElementAdapterFactory.java b/org.eclipse.jdt.debug.ui/ui/org/eclipse/jdt/internal/debug/ui/variables/JavaDebugElementAdapterFactory.java
index 1d72c55..a9700cf 100644
--- a/org.eclipse.jdt.debug.ui/ui/org/eclipse/jdt/internal/debug/ui/variables/JavaDebugElementAdapterFactory.java
+++ b/org.eclipse.jdt.debug.ui/ui/org/eclipse/jdt/internal/debug/ui/variables/JavaDebugElementAdapterFactory.java
@@ -16,6 +16,7 @@
 import org.eclipse.debug.internal.ui.viewers.model.provisional.IElementLabelProvider;
 import org.eclipse.debug.internal.ui.viewers.model.provisional.IElementMementoProvider;
 import org.eclipse.debug.ui.actions.IWatchExpressionFactoryAdapter;
+import org.eclipse.jdt.debug.core.IJavaDebugTarget;
 import org.eclipse.jdt.debug.core.IJavaStackFrame;
 import org.eclipse.jdt.debug.core.IJavaValue;
 import org.eclipse.jdt.debug.core.IJavaVariable;
@@ -43,6 +44,7 @@
 	private static final IWatchExpressionFactoryAdapter fgWEVariable = new JavaWatchExpressionFilter();
 	private static final IElementMementoProvider fgMPStackFrame = new JavaStackFrameMementoProvider();
 	private static final IElementLabelProvider fgLPFrame = new JavaStackFrameLabelProvider();
+	private static final IElementMementoProvider fgMPDebugTarget = new JavaDebugTargetMementoProvider();
 
 	/* (non-Javadoc)
 	 * @see org.eclipse.core.runtime.IAdapterFactory#getAdapter(java.lang.Object, java.lang.Class)
@@ -81,6 +83,8 @@
 		if (IElementMementoProvider.class.equals(adapterType)) {
 			if (adaptableObject instanceof IJavaStackFrame) {
 				return fgMPStackFrame;
+			} else if (adaptableObject instanceof IJavaDebugTarget) {
+				return fgMPDebugTarget;
 			}
 		}
 		return null;
diff --git a/org.eclipse.jdt.debug.ui/ui/org/eclipse/jdt/internal/debug/ui/variables/JavaDebugTargetMementoProvider.java b/org.eclipse.jdt.debug.ui/ui/org/eclipse/jdt/internal/debug/ui/variables/JavaDebugTargetMementoProvider.java
new file mode 100644
index 0000000..73882a3
--- /dev/null
+++ b/org.eclipse.jdt.debug.ui/ui/org/eclipse/jdt/internal/debug/ui/variables/JavaDebugTargetMementoProvider.java
@@ -0,0 +1,34 @@
+/*******************************************************************************
+ * Copyright (c) 2012 Wind River Systems and others.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ * 
+ * Contributors:
+ *     Wind River Systems - initial API and implementation
+ *******************************************************************************/
+package org.eclipse.jdt.internal.debug.ui.variables;
+
+import org.eclipse.core.runtime.CoreException;
+import org.eclipse.debug.core.ILaunchConfiguration;
+import org.eclipse.debug.internal.ui.model.elements.DebugTargetMementoProvider;
+import org.eclipse.jdt.debug.core.IJavaDebugTarget;
+
+/**
+ * 
+ */
+public class JavaDebugTargetMementoProvider extends DebugTargetMementoProvider {
+
+	@Override
+	protected String getElementName(Object element) throws CoreException {
+		if (element instanceof IJavaDebugTarget) {
+			ILaunchConfiguration launchConfig = ((IJavaDebugTarget)element).getLaunch().getLaunchConfiguration();
+			if (launchConfig != null) {
+				return launchConfig.getName();
+			}
+		}
+		return super.getElementName(element);
+	}
+
+}
diff --git a/org.eclipse.jdt.debug.ui/ui/org/eclipse/jdt/internal/debug/ui/variables/JavaStackFrameMementoProvider.java b/org.eclipse.jdt.debug.ui/ui/org/eclipse/jdt/internal/debug/ui/variables/JavaStackFrameMementoProvider.java
index 0ed6404..057ffdf 100644
--- a/org.eclipse.jdt.debug.ui/ui/org/eclipse/jdt/internal/debug/ui/variables/JavaStackFrameMementoProvider.java
+++ b/org.eclipse.jdt.debug.ui/ui/org/eclipse/jdt/internal/debug/ui/variables/JavaStackFrameMementoProvider.java
@@ -10,10 +10,13 @@
  *******************************************************************************/
 package org.eclipse.jdt.internal.debug.ui.variables;
 
+import java.util.Arrays;
+
 import org.eclipse.core.runtime.CoreException;
 import org.eclipse.debug.internal.ui.model.elements.DebugElementMementoProvider;
 import org.eclipse.debug.internal.ui.viewers.model.provisional.IElementMementoProvider;
 import org.eclipse.debug.internal.ui.viewers.model.provisional.IPresentationContext;
+import org.eclipse.debug.ui.IDebugUIConstants;
 import org.eclipse.jdt.debug.core.IJavaStackFrame;
 
 /**
@@ -30,12 +33,19 @@
 	@Override
 	protected String getElementName(Object element, IPresentationContext context) throws CoreException {
 		if (element instanceof IJavaStackFrame) {
-			StringBuffer buf = new StringBuffer();
 			IJavaStackFrame frame = (IJavaStackFrame) element;
-			buf.append(frame.getDeclaringTypeName());
-			buf.append("#"); //$NON-NLS-1$
-			buf.append(frame.getSignature());
-			return buf.toString();
+			if (IDebugUIConstants.ID_DEBUG_VIEW.equals(context.getId())) {
+				int index = Arrays.asList(frame.getThread().getStackFrames()).indexOf(frame);
+				if (index >= 0) {
+					return Integer.toString(index);
+				}
+			} else {
+				StringBuffer buf = new StringBuffer();
+				buf.append(frame.getDeclaringTypeName());
+				buf.append("#"); //$NON-NLS-1$
+				buf.append(frame.getSignature());
+				return buf.toString();
+			}
 		}
 		return null;
 	}
