diff --git a/dsf-gdb/org.eclipse.cdt.dsf.gdb.ui/src/org/eclipse/cdt/dsf/gdb/internal/ui/breakpoints/DisassemblyToggleDynamicPrintfTarget.java b/dsf-gdb/org.eclipse.cdt.dsf.gdb.ui/src/org/eclipse/cdt/dsf/gdb/internal/ui/breakpoints/DisassemblyToggleDynamicPrintfTarget.java index 8f3928b04bc..4dbf665aa8e 100644 --- a/dsf-gdb/org.eclipse.cdt.dsf.gdb.ui/src/org/eclipse/cdt/dsf/gdb/internal/ui/breakpoints/DisassemblyToggleDynamicPrintfTarget.java +++ b/dsf-gdb/org.eclipse.cdt.dsf.gdb.ui/src/org/eclipse/cdt/dsf/gdb/internal/ui/breakpoints/DisassemblyToggleDynamicPrintfTarget.java @@ -1,5 +1,5 @@ /******************************************************************************* - * Copyright (c) 2014 Ericsson and others. + * Copyright (c) 2014, 2015 Ericsson 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 @@ -63,11 +63,23 @@ public class DisassemblyToggleDynamicPrintfTarget extends AbstractDisassemblyBre @Override protected void createAddressBreakpoint(IResource resource, IAddress address) throws CoreException { // We provide a default printf string to make the dynamic printf useful automatically - String printfStr = NLS.bind(Messages.Default_AddressDynamicPrintf_String, address); - + String format = getAddressFormat(address); + String printfStr = NLS.bind(Messages.Default_AddressDynamicPrintf_String, address, format); + CDIDebugModel.createAddressDynamicPrintf(null, null, resource, getBreakpointType(), -1, address, true, 0, "", printfStr, true); //$NON-NLS-1$ } + /** + * @param address + * @return + */ + private String getAddressFormat(IAddress address) { + String format = "0x%x"; //$NON-NLS-1$ + if (address.getValue().bitLength() > 32) + format = "0x%llx"; //$NON-NLS-1$ + return format; + } + @Override protected void createAddressBreakpointInteractive(IWorkbenchPart part, IResource resource, IAddress address) throws CoreException @@ -77,10 +89,9 @@ public class DisassemblyToggleDynamicPrintfTarget extends AbstractDisassemblyBre CDIDebugModel.setAddressBreakpointAttributes( attributes, null, null, getBreakpointType(), -1, address, true, 0, "" ); //$NON-NLS-1$ - // Although the user will be given the opportunity to provide the printf string - // in the properties dialog, we pre-fill it with the default string to be nice - attributes.put(ICDynamicPrintf.PRINTF_STRING, - NLS.bind(Messages.Default_AddressDynamicPrintf_String, address)); + String format = getAddressFormat(address); + String printfStr = NLS.bind(Messages.Default_AddressDynamicPrintf_String, address, format); + attributes.put(ICDynamicPrintf.PRINTF_STRING, printfStr); openBreakpointPropertiesDialog(dprintf, part, resource, attributes); } diff --git a/dsf-gdb/org.eclipse.cdt.dsf.gdb.ui/src/org/eclipse/cdt/dsf/gdb/internal/ui/breakpoints/Messages.properties b/dsf-gdb/org.eclipse.cdt.dsf.gdb.ui/src/org/eclipse/cdt/dsf/gdb/internal/ui/breakpoints/Messages.properties index dbc3edaee35..73b16d32f88 100644 --- a/dsf-gdb/org.eclipse.cdt.dsf.gdb.ui/src/org/eclipse/cdt/dsf/gdb/internal/ui/breakpoints/Messages.properties +++ b/dsf-gdb/org.eclipse.cdt.dsf.gdb.ui/src/org/eclipse/cdt/dsf/gdb/internal/ui/breakpoints/Messages.properties @@ -39,7 +39,7 @@ ToggleDynamicPrintfTargetFactory_name=C/C++ Dynamic Printf # http://sourceware.org/bugzilla/show_bug.cgi?id=15433 Default_LineDynamicPrintf_String="Hit line %d of {0}\\n",{1} # We use %x in the below string on purpose to show the user that it is possible -Default_AddressDynamicPrintf_String="Hit address 0x%x\\n",{0} +Default_AddressDynamicPrintf_String="Hit address {1}\\n",{0} GdbThreadFilterEditor_Thread=Thread GdbThreadFilterEditor_RestrictToSelected=&Restrict to Selected Processes and Threads: