mirror of
https://github.com/eclipse-cdt/cdt
synced 2025-08-07 08:15:48 +02:00
Bug 370462: Improving the debug preferences - add support for different charsets and unify DSF and CDI debug preferences
This commit is contained in:
parent
fdd2d8570d
commit
c61ae8a137
24 changed files with 589 additions and 86 deletions
|
@ -1,5 +1,5 @@
|
||||||
/*******************************************************************************
|
/*******************************************************************************
|
||||||
* Copyright (c) 2004, 2008 Intel Corporation and others.
|
* Copyright (c) 2004, 2012 Intel Corporation and others.
|
||||||
* All rights reserved. This program and the accompanying materials
|
* All rights reserved. This program and the accompanying materials
|
||||||
* are made available under the terms of the Eclipse Public License v1.0
|
* are made available under the terms of the Eclipse Public License v1.0
|
||||||
* which accompanies this distribution, and is available at
|
* which accompanies this distribution, and is available at
|
||||||
|
@ -8,6 +8,7 @@
|
||||||
* Contributors:
|
* Contributors:
|
||||||
* Intel Corporation - Initial API and implementation
|
* Intel Corporation - Initial API and implementation
|
||||||
* Mark Mitchell, CodeSourcery - Bug 136896: View variables in binary format
|
* Mark Mitchell, CodeSourcery - Bug 136896: View variables in binary format
|
||||||
|
* Mathias Kunter - Bug 370462: View variables in octal format
|
||||||
*******************************************************************************/
|
*******************************************************************************/
|
||||||
package org.eclipse.cdt.core;
|
package org.eclipse.cdt.core;
|
||||||
|
|
||||||
|
@ -103,6 +104,14 @@ public interface IAddress extends Comparable<Object> {
|
||||||
*/
|
*/
|
||||||
String toHexAddressString();
|
String toHexAddressString();
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Converts address to the octal representation with '0' prefix and
|
||||||
|
* with all leading zeros. The length of returned string should be
|
||||||
|
* the same for all addresses of given class. I.e. 12 for 32-bit
|
||||||
|
* addresses and 23 for 64-bit addresses
|
||||||
|
* @since 5.4
|
||||||
|
*/
|
||||||
|
String toOctalAddressString();
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Converts address to the binary representation with '0b' prefix and
|
* Converts address to the binary representation with '0b' prefix and
|
||||||
|
|
|
@ -1,5 +1,5 @@
|
||||||
/*******************************************************************************
|
/*******************************************************************************
|
||||||
* Copyright (c) 2004, 2010 Intel Corporation and others.
|
* Copyright (c) 2004, 2012 Intel Corporation and others.
|
||||||
* All rights reserved. This program and the accompanying materials
|
* All rights reserved. This program and the accompanying materials
|
||||||
* are made available under the terms of the Eclipse Public License v1.0
|
* are made available under the terms of the Eclipse Public License v1.0
|
||||||
* which accompanies this distribution, and is available at
|
* which accompanies this distribution, and is available at
|
||||||
|
@ -8,6 +8,7 @@
|
||||||
* Contributors:
|
* Contributors:
|
||||||
* Intel Corporation - Initial API and implementation
|
* Intel Corporation - Initial API and implementation
|
||||||
* Mark Mitchell, CodeSourcery - Bug 136896: View variables in binary format
|
* Mark Mitchell, CodeSourcery - Bug 136896: View variables in binary format
|
||||||
|
* Mathias Kunter - Bug 370462: View variables in octal format
|
||||||
*******************************************************************************/
|
*******************************************************************************/
|
||||||
package org.eclipse.cdt.utils;
|
package org.eclipse.cdt.utils;
|
||||||
|
|
||||||
|
@ -29,6 +30,8 @@ public class Addr32 implements IAddress, Serializable {
|
||||||
private static final int BYTES_NUM = 4;
|
private static final int BYTES_NUM = 4;
|
||||||
private static final int DIGITS_NUM = BYTES_NUM * 2;
|
private static final int DIGITS_NUM = BYTES_NUM * 2;
|
||||||
private static final int CHARS_NUM = DIGITS_NUM + 2;
|
private static final int CHARS_NUM = DIGITS_NUM + 2;
|
||||||
|
private static final int OCTAL_DIGITS_NUM = (BYTES_NUM * 8 + 2) / 3;
|
||||||
|
private static final int OCTAL_CHARS_NUM = OCTAL_DIGITS_NUM + 1;
|
||||||
private static final int BINARY_DIGITS_NUM = BYTES_NUM * 8;
|
private static final int BINARY_DIGITS_NUM = BYTES_NUM * 8;
|
||||||
private static final int BINARY_CHARS_NUM = BINARY_DIGITS_NUM + 2;
|
private static final int BINARY_CHARS_NUM = BINARY_DIGITS_NUM + 2;
|
||||||
|
|
||||||
|
@ -158,6 +161,22 @@ public class Addr32 implements IAddress, Serializable {
|
||||||
return sb.toString();
|
return sb.toString();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @since 5.4
|
||||||
|
*/
|
||||||
|
@Override
|
||||||
|
public String toOctalAddressString() {
|
||||||
|
String addressString = Long.toString(address, 8);
|
||||||
|
StringBuffer sb = new StringBuffer(OCTAL_CHARS_NUM);
|
||||||
|
int count = OCTAL_DIGITS_NUM - addressString.length();
|
||||||
|
sb.append("0"); //$NON-NLS-1$
|
||||||
|
for (int i = 0; i < count; ++i) {
|
||||||
|
sb.append('0');
|
||||||
|
}
|
||||||
|
sb.append(addressString);
|
||||||
|
return sb.toString();
|
||||||
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public String toBinaryAddressString() {
|
public String toBinaryAddressString() {
|
||||||
String addressString = Long.toString(address, 2);
|
String addressString = Long.toString(address, 2);
|
||||||
|
|
|
@ -1,5 +1,5 @@
|
||||||
/*******************************************************************************
|
/*******************************************************************************
|
||||||
* Copyright (c) 2004, 2010 Intel Corporation and others.
|
* Copyright (c) 2004, 2012 Intel Corporation and others.
|
||||||
* All rights reserved. This program and the accompanying materials
|
* All rights reserved. This program and the accompanying materials
|
||||||
* are made available under the terms of the Eclipse Public License v1.0
|
* are made available under the terms of the Eclipse Public License v1.0
|
||||||
* which accompanies this distribution, and is available at
|
* which accompanies this distribution, and is available at
|
||||||
|
@ -8,6 +8,7 @@
|
||||||
* Contributors:
|
* Contributors:
|
||||||
* Intel Corporation - Initial API and implementation
|
* Intel Corporation - Initial API and implementation
|
||||||
* Mark Mitchell, CodeSourcery - Bug 136896: View variables in binary format
|
* Mark Mitchell, CodeSourcery - Bug 136896: View variables in binary format
|
||||||
|
* Mathias Kunter - Bug 370462: View variables in octal format
|
||||||
*******************************************************************************/
|
*******************************************************************************/
|
||||||
package org.eclipse.cdt.utils;
|
package org.eclipse.cdt.utils;
|
||||||
|
|
||||||
|
@ -27,6 +28,8 @@ public class Addr64 implements IAddress, Serializable {
|
||||||
private static final int BYTES_NUM = 8;
|
private static final int BYTES_NUM = 8;
|
||||||
private static final int DIGITS_NUM = BYTES_NUM * 2;
|
private static final int DIGITS_NUM = BYTES_NUM * 2;
|
||||||
private static final int CHARS_NUM = DIGITS_NUM + 2;
|
private static final int CHARS_NUM = DIGITS_NUM + 2;
|
||||||
|
private static final int OCTAL_DIGITS_NUM = (BYTES_NUM * 8 + 2) / 3;
|
||||||
|
private static final int OCTAL_CHARS_NUM = OCTAL_DIGITS_NUM + 1;
|
||||||
private static final int BINARY_DIGITS_NUM = BYTES_NUM * 8;
|
private static final int BINARY_DIGITS_NUM = BYTES_NUM * 8;
|
||||||
private static final int BINARY_CHARS_NUM = BINARY_DIGITS_NUM + 2;
|
private static final int BINARY_CHARS_NUM = BINARY_DIGITS_NUM + 2;
|
||||||
|
|
||||||
|
@ -162,6 +165,22 @@ public class Addr64 implements IAddress, Serializable {
|
||||||
return sb.toString();
|
return sb.toString();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @since 5.4
|
||||||
|
*/
|
||||||
|
@Override
|
||||||
|
public String toOctalAddressString() {
|
||||||
|
String addressString = address.toString(8);
|
||||||
|
StringBuffer sb = new StringBuffer(OCTAL_CHARS_NUM);
|
||||||
|
int count = OCTAL_DIGITS_NUM - addressString.length();
|
||||||
|
sb.append("0"); //$NON-NLS-1$
|
||||||
|
for (int i = 0; i < count; ++i) {
|
||||||
|
sb.append('0');
|
||||||
|
}
|
||||||
|
sb.append(addressString);
|
||||||
|
return sb.toString();
|
||||||
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public String toBinaryAddressString() {
|
public String toBinaryAddressString() {
|
||||||
String addressString = address.toString(2);
|
String addressString = address.toString(2);
|
||||||
|
|
|
@ -1,5 +1,5 @@
|
||||||
/*******************************************************************************
|
/*******************************************************************************
|
||||||
* Copyright (c) 2000, 2011 QNX Software Systems and others.
|
* Copyright (c) 2000, 2012 QNX Software Systems and others.
|
||||||
* All rights reserved. This program and the accompanying materials
|
* All rights reserved. This program and the accompanying materials
|
||||||
* are made available under the terms of the Eclipse Public License v1.0
|
* are made available under the terms of the Eclipse Public License v1.0
|
||||||
* which accompanies this distribution, and is available at
|
* which accompanies this distribution, and is available at
|
||||||
|
@ -9,6 +9,7 @@
|
||||||
* QNX Software Systems - Initial API and implementation
|
* QNX Software Systems - Initial API and implementation
|
||||||
* Freescale Semiconductor - Address watchpoints, https://bugs.eclipse.org/bugs/show_bug.cgi?id=118299
|
* Freescale Semiconductor - Address watchpoints, https://bugs.eclipse.org/bugs/show_bug.cgi?id=118299
|
||||||
* Patrick Chuong (Texas Instruments) - Update CDT ToggleBreakpointTargetFactory enablement (340177)
|
* Patrick Chuong (Texas Instruments) - Update CDT ToggleBreakpointTargetFactory enablement (340177)
|
||||||
|
* Mathias Kunter - PREF_CHARSET has been renamed to PREF_WIDE_CHARSET (bug 370462)
|
||||||
*******************************************************************************/
|
*******************************************************************************/
|
||||||
package org.eclipse.cdt.debug.core;
|
package org.eclipse.cdt.debug.core;
|
||||||
|
|
||||||
|
@ -502,7 +503,7 @@ public class CDebugUtils {
|
||||||
private static CharsetDecoder fDecoder;
|
private static CharsetDecoder fDecoder;
|
||||||
|
|
||||||
public static CharsetDecoder getCharsetDecoder() {
|
public static CharsetDecoder getCharsetDecoder() {
|
||||||
String charsetName = CDebugCorePlugin.getDefault().getPluginPreferences().getString(ICDebugConstants.PREF_CHARSET);
|
String charsetName = CDebugCorePlugin.getDefault().getPluginPreferences().getString(ICDebugConstants.PREF_WIDE_CHARSET);
|
||||||
if (fDecoder == null || !fDecoder.charset().name().equals(charsetName)) {
|
if (fDecoder == null || !fDecoder.charset().name().equals(charsetName)) {
|
||||||
Charset charset = Charset.forName(charsetName);
|
Charset charset = Charset.forName(charsetName);
|
||||||
fDecoder = charset.newDecoder();
|
fDecoder = charset.newDecoder();
|
||||||
|
|
|
@ -1,5 +1,5 @@
|
||||||
/*******************************************************************************
|
/*******************************************************************************
|
||||||
* Copyright (c) 2000, 2011 QNX Software Systems and others.
|
* Copyright (c) 2000, 2012 QNX Software Systems and others.
|
||||||
* All rights reserved. This program and the accompanying materials
|
* All rights reserved. This program and the accompanying materials
|
||||||
* are made available under the terms of the Eclipse Public License v1.0
|
* are made available under the terms of the Eclipse Public License v1.0
|
||||||
* which accompanies this distribution, and is available at
|
* which accompanies this distribution, and is available at
|
||||||
|
@ -9,6 +9,7 @@
|
||||||
* QNX Software Systems - Initial API and implementation
|
* QNX Software Systems - Initial API and implementation
|
||||||
* Ken Ryall (Nokia) - 207675
|
* Ken Ryall (Nokia) - 207675
|
||||||
* Patrick Chuong (Texas Instruments) - Update CDT ToggleBreakpointTargetFactory enablement (340177)
|
* Patrick Chuong (Texas Instruments) - Update CDT ToggleBreakpointTargetFactory enablement (340177)
|
||||||
|
* Mathias Kunter - Support for different charsets (bug 370462)
|
||||||
*******************************************************************************/
|
*******************************************************************************/
|
||||||
package org.eclipse.cdt.debug.core;
|
package org.eclipse.cdt.debug.core;
|
||||||
|
|
||||||
|
@ -38,10 +39,17 @@ public interface ICDebugConstants {
|
||||||
public static final String PREF_DEFAULT_REGISTER_FORMAT = PLUGIN_ID + "cDebug.default_register_format"; //$NON-NLS-1$
|
public static final String PREF_DEFAULT_REGISTER_FORMAT = PLUGIN_ID + "cDebug.default_register_format"; //$NON-NLS-1$
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* The identifier of the character set to use with unicode types
|
* The charset to use for decoding char type strings. We however can't use the ID
|
||||||
* view
|
* "character_set" here because that would break backwards compatibility.
|
||||||
*/
|
*/
|
||||||
public static final String PREF_CHARSET = PLUGIN_ID + "cDebug.character_set"; //$NON-NLS-1$
|
public static final String PREF_CHARSET = PLUGIN_ID + "cDebug.non_wide_character_set"; //$NON-NLS-1$
|
||||||
|
|
||||||
|
/**
|
||||||
|
* The charset to use for decoding wchar_t type strings. We have to use the ID
|
||||||
|
* "character_set" here so that we don't break backwards compatibility.
|
||||||
|
* @since 7.2
|
||||||
|
*/
|
||||||
|
public static final String PREF_WIDE_CHARSET = PLUGIN_ID + "cDebug.character_set"; //$NON-NLS-1$
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* The identifier of the default expression format to use in the expressions
|
* The identifier of the default expression format to use in the expressions
|
||||||
|
@ -105,7 +113,9 @@ public interface ICDebugConstants {
|
||||||
public static final String PREF_INSTRUCTION_STEP_MODE_ON = PLUGIN_ID + "cDebug.Disassembly.instructionStepOn"; //$NON-NLS-1$
|
public static final String PREF_INSTRUCTION_STEP_MODE_ON = PLUGIN_ID + "cDebug.Disassembly.instructionStepOn"; //$NON-NLS-1$
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* The default character set to use with unicode strings.
|
* The default character set to use.
|
||||||
|
* @deprecated Provided for compatibility reasons only. Use the default value
|
||||||
|
* from the Preferences object instead.
|
||||||
*/
|
*/
|
||||||
public static final String DEF_CHARSET = "UTF-16"; //$NON-NLS-1$
|
public static final String DEF_CHARSET = "UTF-16"; //$NON-NLS-1$
|
||||||
|
|
||||||
|
|
|
@ -1,5 +1,5 @@
|
||||||
/*******************************************************************************
|
/*******************************************************************************
|
||||||
* Copyright (c) 2004, 2007 QNX Software Systems and others.
|
* Copyright (c) 2004, 2012 QNX Software Systems and others.
|
||||||
* All rights reserved. This program and the accompanying materials
|
* All rights reserved. This program and the accompanying materials
|
||||||
* are made available under the terms of the Eclipse Public License v1.0
|
* are made available under the terms of the Eclipse Public License v1.0
|
||||||
* which accompanies this distribution, and is available at
|
* which accompanies this distribution, and is available at
|
||||||
|
@ -8,9 +8,12 @@
|
||||||
* Contributors:
|
* Contributors:
|
||||||
* QNX Software Systems - Initial API and implementation
|
* QNX Software Systems - Initial API and implementation
|
||||||
* Ken Ryall (Nokia) - 207675
|
* Ken Ryall (Nokia) - 207675
|
||||||
|
* Mathias Kunter - Using adequate default charsets (bug 370462)
|
||||||
*******************************************************************************/
|
*******************************************************************************/
|
||||||
package org.eclipse.cdt.debug.internal.core;
|
package org.eclipse.cdt.debug.internal.core;
|
||||||
|
|
||||||
|
import java.nio.charset.Charset;
|
||||||
|
|
||||||
import org.eclipse.cdt.debug.core.CDebugCorePlugin;
|
import org.eclipse.cdt.debug.core.CDebugCorePlugin;
|
||||||
import org.eclipse.cdt.debug.core.ICDebugConstants;
|
import org.eclipse.cdt.debug.core.ICDebugConstants;
|
||||||
import org.eclipse.cdt.debug.core.cdi.ICDIFormat;
|
import org.eclipse.cdt.debug.core.cdi.ICDIFormat;
|
||||||
|
@ -37,7 +40,11 @@ public class CDebugCorePreferenceInitializer extends AbstractPreferenceInitializ
|
||||||
CDebugCorePlugin.getDefault().getPluginPreferences().setDefault( ICDebugConstants.PREF_DEFAULT_VARIABLE_FORMAT, ICDIFormat.NATURAL );
|
CDebugCorePlugin.getDefault().getPluginPreferences().setDefault( ICDebugConstants.PREF_DEFAULT_VARIABLE_FORMAT, ICDIFormat.NATURAL );
|
||||||
CDebugCorePlugin.getDefault().getPluginPreferences().setDefault( ICDebugConstants.PREF_DEFAULT_EXPRESSION_FORMAT, ICDIFormat.NATURAL );
|
CDebugCorePlugin.getDefault().getPluginPreferences().setDefault( ICDebugConstants.PREF_DEFAULT_EXPRESSION_FORMAT, ICDIFormat.NATURAL );
|
||||||
CDebugCorePlugin.getDefault().getPluginPreferences().setDefault( ICDebugConstants.PREF_DEFAULT_REGISTER_FORMAT, ICDIFormat.NATURAL );
|
CDebugCorePlugin.getDefault().getPluginPreferences().setDefault( ICDebugConstants.PREF_DEFAULT_REGISTER_FORMAT, ICDIFormat.NATURAL );
|
||||||
CDebugCorePlugin.getDefault().getPluginPreferences().setDefault( ICDebugConstants.PREF_CHARSET, ICDebugConstants.DEF_CHARSET );
|
CDebugCorePlugin.getDefault().getPluginPreferences().setDefault( ICDebugConstants.PREF_CHARSET, Charset.defaultCharset().name() );
|
||||||
|
if (System.getProperty("os.name").toLowerCase().startsWith("windows")) //$NON-NLS-1$ //$NON-NLS-2$
|
||||||
|
CDebugCorePlugin.getDefault().getPluginPreferences().setDefault( ICDebugConstants.PREF_WIDE_CHARSET, "UTF-16"); //$NON-NLS-1$
|
||||||
|
else
|
||||||
|
CDebugCorePlugin.getDefault().getPluginPreferences().setDefault( ICDebugConstants.PREF_WIDE_CHARSET, "UTF-32"); //$NON-NLS-1$
|
||||||
CDebugCorePlugin.getDefault().getPluginPreferences().setDefault( ICDebugConstants.PREF_INSTRUCTION_STEP_MODE_ON, false );
|
CDebugCorePlugin.getDefault().getPluginPreferences().setDefault( ICDebugConstants.PREF_INSTRUCTION_STEP_MODE_ON, false );
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -1,5 +1,5 @@
|
||||||
/*******************************************************************************
|
/*******************************************************************************
|
||||||
* Copyright (c) 2004, 2009 QNX Software Systems and others.
|
* Copyright (c) 2004, 2012 QNX Software Systems and others.
|
||||||
* All rights reserved. This program and the accompanying materials
|
* All rights reserved. This program and the accompanying materials
|
||||||
* are made available under the terms of the Eclipse Public License v1.0
|
* are made available under the terms of the Eclipse Public License v1.0
|
||||||
* which accompanies this distribution, and is available at
|
* which accompanies this distribution, and is available at
|
||||||
|
@ -7,6 +7,7 @@
|
||||||
*
|
*
|
||||||
* Contributors:
|
* Contributors:
|
||||||
* QNX Software Systems - Initial API and implementation
|
* QNX Software Systems - Initial API and implementation
|
||||||
|
* Mathias Kunter - Support for octal number format (bug 370462)
|
||||||
*******************************************************************************/
|
*******************************************************************************/
|
||||||
package org.eclipse.cdt.debug.internal.core.model;
|
package org.eclipse.cdt.debug.internal.core.model;
|
||||||
|
|
||||||
|
@ -162,9 +163,11 @@ public class CIndexedValue extends AbstractCValue implements IIndexedValue {
|
||||||
CVariableFormat format = getParentVariable().getFormat();
|
CVariableFormat format = getParentVariable().getFormat();
|
||||||
if ( CVariableFormat.NATURAL.equals( format ) || CVariableFormat.HEXADECIMAL.equals( format ) )
|
if ( CVariableFormat.NATURAL.equals( format ) || CVariableFormat.HEXADECIMAL.equals( format ) )
|
||||||
return address.toHexAddressString();
|
return address.toHexAddressString();
|
||||||
if ( CVariableFormat.DECIMAL.equals( format ) )
|
else if ( CVariableFormat.DECIMAL.equals( format ) )
|
||||||
return address.toString();
|
return address.toString();
|
||||||
if ( CVariableFormat.BINARY.equals( format ) )
|
else if ( CVariableFormat.OCTAL.equals( format ) )
|
||||||
|
return address.toOctalAddressString();
|
||||||
|
else if ( CVariableFormat.BINARY.equals( format ) )
|
||||||
return address.toBinaryAddressString();
|
return address.toBinaryAddressString();
|
||||||
return null;
|
return null;
|
||||||
} catch (CDIException e) {
|
} catch (CDIException e) {
|
||||||
|
|
|
@ -1,5 +1,5 @@
|
||||||
/*******************************************************************************
|
/*******************************************************************************
|
||||||
* Copyright (c) 2000, 2010 QNX Software Systems and others.
|
* Copyright (c) 2000, 2012 QNX Software Systems and others.
|
||||||
* All rights reserved. This program and the accompanying materials
|
* All rights reserved. This program and the accompanying materials
|
||||||
* are made available under the terms of the Eclipse Public License v1.0
|
* are made available under the terms of the Eclipse Public License v1.0
|
||||||
* which accompanies this distribution, and is available at
|
* which accompanies this distribution, and is available at
|
||||||
|
@ -10,6 +10,7 @@
|
||||||
* Mark Mitchell, CodeSourcery - Bug 136896: View variables in binary format
|
* Mark Mitchell, CodeSourcery - Bug 136896: View variables in binary format
|
||||||
* Warren Paul (Nokia) - 150860, 150864, 150862, 150863, 217493
|
* Warren Paul (Nokia) - 150860, 150864, 150862, 150863, 217493
|
||||||
* Ken Ryall (Nokia) - 207675
|
* Ken Ryall (Nokia) - 207675
|
||||||
|
* Mathias Kunter - Support for octal number format (bug 370462)
|
||||||
*******************************************************************************/
|
*******************************************************************************/
|
||||||
package org.eclipse.cdt.debug.internal.core.model;
|
package org.eclipse.cdt.debug.internal.core.model;
|
||||||
|
|
||||||
|
@ -277,6 +278,19 @@ public class CValue extends AbstractCValue {
|
||||||
sb.append( (stringValue.length() > 2) ? stringValue.substring( stringValue.length() - 2 ) : stringValue );
|
sb.append( (stringValue.length() > 2) ? stringValue.substring( stringValue.length() - 2 ) : stringValue );
|
||||||
return sb.toString();
|
return sb.toString();
|
||||||
}
|
}
|
||||||
|
else if ( CVariableFormat.OCTAL.equals( format ) ) {
|
||||||
|
StringBuffer sb = new StringBuffer( "0" ); //$NON-NLS-1$
|
||||||
|
String stringValue = (isUnsigned()) ? Integer.toOctalString( value.shortValue() ) : Integer.toOctalString( (byte)value.byteValue() );
|
||||||
|
stringValue = (stringValue.length() > 3) ? stringValue.substring( stringValue.length() - 3 ) : stringValue;
|
||||||
|
sb.append( (stringValue.length() == 3 && stringValue.charAt( 0 ) >= '4') ? (char)(stringValue.charAt( 0 ) - 4) + stringValue.substring( 1 ) : stringValue );
|
||||||
|
return sb.toString();
|
||||||
|
}
|
||||||
|
else if ( CVariableFormat.BINARY.equals( format ) ) {
|
||||||
|
StringBuffer sb = new StringBuffer( "0b" ); //$NON-NLS-1$
|
||||||
|
String stringValue = (isUnsigned()) ? Integer.toBinaryString( value.shortValue() ) : Integer.toBinaryString( (byte)value.byteValue() );
|
||||||
|
sb.append( (stringValue.length() > 8) ? stringValue.substring( stringValue.length() - 8 ) : stringValue );
|
||||||
|
return sb.toString();
|
||||||
|
}
|
||||||
return null;
|
return null;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -313,6 +327,13 @@ public class CValue extends AbstractCValue {
|
||||||
sb.append( (stringValue.length() > 2) ? stringValue.substring( stringValue.length() - 2 ) : stringValue );
|
sb.append( (stringValue.length() > 2) ? stringValue.substring( stringValue.length() - 2 ) : stringValue );
|
||||||
return sb.toString();
|
return sb.toString();
|
||||||
}
|
}
|
||||||
|
else if ( CVariableFormat.OCTAL.equals( format ) ) {
|
||||||
|
StringBuffer sb = new StringBuffer( "0" ); //$NON-NLS-1$
|
||||||
|
String stringValue = (isUnsigned()) ? Integer.toOctalString( value.shortValue() ) : Integer.toOctalString( (byte)value.byteValue() );
|
||||||
|
stringValue = (stringValue.length() > 3) ? stringValue.substring( stringValue.length() - 3 ) : stringValue;
|
||||||
|
sb.append( (stringValue.length() == 3 && stringValue.charAt( 0 ) >= '4') ? (char)(stringValue.charAt( 0 ) - 4) + stringValue.substring( 1 ) : stringValue );
|
||||||
|
return sb.toString();
|
||||||
|
}
|
||||||
else if ( CVariableFormat.BINARY.equals( format ) ) {
|
else if ( CVariableFormat.BINARY.equals( format ) ) {
|
||||||
StringBuffer sb = new StringBuffer( "0b" ); //$NON-NLS-1$
|
StringBuffer sb = new StringBuffer( "0b" ); //$NON-NLS-1$
|
||||||
String stringValue = (isUnsigned()) ? Integer.toBinaryString( value.shortValue() ) : Integer.toBinaryString( (byte)value.byteValue() );
|
String stringValue = (isUnsigned()) ? Integer.toBinaryString( value.shortValue() ) : Integer.toBinaryString( (byte)value.byteValue() );
|
||||||
|
@ -338,6 +359,13 @@ public class CValue extends AbstractCValue {
|
||||||
sb.append( (stringValue.length() > 4) ? stringValue.substring( stringValue.length() - 4 ) : stringValue );
|
sb.append( (stringValue.length() > 4) ? stringValue.substring( stringValue.length() - 4 ) : stringValue );
|
||||||
return sb.toString();
|
return sb.toString();
|
||||||
}
|
}
|
||||||
|
else if ( CVariableFormat.OCTAL.equals( format ) ) {
|
||||||
|
StringBuffer sb = new StringBuffer( "0" ); //$NON-NLS-1$
|
||||||
|
String stringValue = Integer.toOctalString( (isUnsigned()) ? value.intValue() : value.shortValue() );
|
||||||
|
stringValue = (stringValue.length() > 6) ? stringValue.substring( stringValue.length() - 6 ) : stringValue;
|
||||||
|
sb.append( (stringValue.length() == 6 && stringValue.charAt( 0 ) >= '2') ? (char)((stringValue.charAt( 0 ) - '0') % 2 + '0') + stringValue.substring( 1 ) : stringValue );
|
||||||
|
return sb.toString();
|
||||||
|
}
|
||||||
else if ( CVariableFormat.BINARY.equals( format ) ) {
|
else if ( CVariableFormat.BINARY.equals( format ) ) {
|
||||||
StringBuffer sb = new StringBuffer( "0b" ); //$NON-NLS-1$
|
StringBuffer sb = new StringBuffer( "0b" ); //$NON-NLS-1$
|
||||||
String stringValue = Integer.toBinaryString( (isUnsigned()) ? value.intValue() : value.shortValue() );
|
String stringValue = Integer.toBinaryString( (isUnsigned()) ? value.intValue() : value.shortValue() );
|
||||||
|
@ -363,6 +391,13 @@ public class CValue extends AbstractCValue {
|
||||||
sb.append( (stringValue.length() > 8) ? stringValue.substring( stringValue.length() - 8 ) : stringValue );
|
sb.append( (stringValue.length() > 8) ? stringValue.substring( stringValue.length() - 8 ) : stringValue );
|
||||||
return sb.toString();
|
return sb.toString();
|
||||||
}
|
}
|
||||||
|
else if ( CVariableFormat.OCTAL.equals( format ) ) {
|
||||||
|
StringBuffer sb = new StringBuffer( "0" ); //$NON-NLS-1$
|
||||||
|
String stringValue = (isUnsigned()) ? Long.toOctalString( value.longValue() ) : Integer.toOctalString( value.intValue() );
|
||||||
|
stringValue = (stringValue.length() > 11) ? stringValue.substring( stringValue.length() - 11 ) : stringValue;
|
||||||
|
sb.append( (stringValue.length() == 11 && stringValue.charAt( 0 ) >= '4') ? (char)(stringValue.charAt( 0 ) - 4) + stringValue.substring( 1 ) : stringValue );
|
||||||
|
return sb.toString();
|
||||||
|
}
|
||||||
else if ( CVariableFormat.BINARY.equals( format ) ) {
|
else if ( CVariableFormat.BINARY.equals( format ) ) {
|
||||||
StringBuffer sb = new StringBuffer( "0b" ); //$NON-NLS-1$
|
StringBuffer sb = new StringBuffer( "0b" ); //$NON-NLS-1$
|
||||||
String stringValue = (isUnsigned()) ? Long.toBinaryString( value.longValue() ) : Integer.toBinaryString( value.intValue() );
|
String stringValue = (isUnsigned()) ? Long.toBinaryString( value.longValue() ) : Integer.toBinaryString( value.intValue() );
|
||||||
|
@ -385,7 +420,7 @@ public class CValue extends AbstractCValue {
|
||||||
BigInteger bigValue = new BigInteger( value.getValueString() );
|
BigInteger bigValue = new BigInteger( value.getValueString() );
|
||||||
return bigValue.toString();
|
return bigValue.toString();
|
||||||
}
|
}
|
||||||
return Long.toString( value.longValue() );
|
return Integer.toString( value.intValue() );
|
||||||
}
|
}
|
||||||
else if ( CVariableFormat.HEXADECIMAL.equals( format ) ) {
|
else if ( CVariableFormat.HEXADECIMAL.equals( format ) ) {
|
||||||
StringBuffer sb = new StringBuffer( "0x" ); //$NON-NLS-1$
|
StringBuffer sb = new StringBuffer( "0x" ); //$NON-NLS-1$
|
||||||
|
@ -394,7 +429,17 @@ public class CValue extends AbstractCValue {
|
||||||
sb.append( bigValue.toString( 16 ) );
|
sb.append( bigValue.toString( 16 ) );
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
sb.append( Long.toHexString( value.longValue() ) );
|
sb.append( Integer.toHexString( value.intValue() ) );
|
||||||
|
return sb.toString();
|
||||||
|
}
|
||||||
|
else if ( CVariableFormat.OCTAL.equals( format ) ) {
|
||||||
|
StringBuffer sb = new StringBuffer( "0" ); //$NON-NLS-1$
|
||||||
|
if ( isUnsigned() ) {
|
||||||
|
BigInteger bigValue = new BigInteger( value.getValueString() );
|
||||||
|
sb.append( bigValue.toString( 8 ) );
|
||||||
|
}
|
||||||
|
else
|
||||||
|
sb.append( Integer.toOctalString( value.intValue() ) );
|
||||||
return sb.toString();
|
return sb.toString();
|
||||||
}
|
}
|
||||||
else if ( CVariableFormat.BINARY.equals( format ) ) {
|
else if ( CVariableFormat.BINARY.equals( format ) ) {
|
||||||
|
@ -404,7 +449,7 @@ public class CValue extends AbstractCValue {
|
||||||
sb.append( bigValue.toString( 2 ) );
|
sb.append( bigValue.toString( 2 ) );
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
sb.append( Long.toBinaryString( value.longValue() ) );
|
sb.append( Integer.toBinaryString( value.intValue() ) );
|
||||||
return sb.toString();
|
return sb.toString();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -438,6 +483,16 @@ public class CValue extends AbstractCValue {
|
||||||
sb.append( Long.toHexString( value.longValue() ) );
|
sb.append( Long.toHexString( value.longValue() ) );
|
||||||
return sb.toString();
|
return sb.toString();
|
||||||
}
|
}
|
||||||
|
else if ( CVariableFormat.OCTAL.equals( format ) ) {
|
||||||
|
StringBuffer sb = new StringBuffer( "0" ); //$NON-NLS-1$
|
||||||
|
if ( isUnsigned() ) {
|
||||||
|
BigInteger bigValue = new BigInteger( value.getValueString() );
|
||||||
|
sb.append( bigValue.toString( 8 ) );
|
||||||
|
}
|
||||||
|
else
|
||||||
|
sb.append( Long.toOctalString( value.longValue() ) );
|
||||||
|
return sb.toString();
|
||||||
|
}
|
||||||
else if ( CVariableFormat.BINARY.equals( format ) ) {
|
else if ( CVariableFormat.BINARY.equals( format ) ) {
|
||||||
StringBuffer sb = new StringBuffer( "0b" ); //$NON-NLS-1$
|
StringBuffer sb = new StringBuffer( "0b" ); //$NON-NLS-1$
|
||||||
if ( isUnsigned() ) {
|
if ( isUnsigned() ) {
|
||||||
|
@ -470,6 +525,13 @@ public class CValue extends AbstractCValue {
|
||||||
} else
|
} else
|
||||||
sb.append(Long.toHexString(bigValue.longValue()));
|
sb.append(Long.toHexString(bigValue.longValue()));
|
||||||
return sb.toString();
|
return sb.toString();
|
||||||
|
} else if (CVariableFormat.OCTAL.equals(format)) {
|
||||||
|
StringBuffer sb = new StringBuffer("0"); //$NON-NLS-1$
|
||||||
|
if (isUnsigned()) {
|
||||||
|
sb.append(bigValue.toString(8));
|
||||||
|
} else
|
||||||
|
sb.append(Long.toOctalString(bigValue.longValue()));
|
||||||
|
return sb.toString();
|
||||||
} else if (CVariableFormat.BINARY.equals(format)) {
|
} else if (CVariableFormat.BINARY.equals(format)) {
|
||||||
StringBuffer sb = new StringBuffer("0b"); //$NON-NLS-1$
|
StringBuffer sb = new StringBuffer("0b"); //$NON-NLS-1$
|
||||||
if (isUnsigned()) {
|
if (isUnsigned()) {
|
||||||
|
@ -504,6 +566,13 @@ public class CValue extends AbstractCValue {
|
||||||
sb.append( (stringValue.length() > 8) ? stringValue.substring( stringValue.length() - 8 ) : stringValue );
|
sb.append( (stringValue.length() > 8) ? stringValue.substring( stringValue.length() - 8 ) : stringValue );
|
||||||
return sb.toString();
|
return sb.toString();
|
||||||
}
|
}
|
||||||
|
else if ( CVariableFormat.OCTAL.equals( format ) ) {
|
||||||
|
StringBuffer sb = new StringBuffer( "0" ); //$NON-NLS-1$
|
||||||
|
String stringValue = Long.toOctalString( Float.floatToIntBits(floatValue) );
|
||||||
|
stringValue = (stringValue.length() > 11) ? stringValue.substring( stringValue.length() - 11 ) : stringValue;
|
||||||
|
sb.append( (stringValue.length() == 11 && stringValue.charAt( 0 ) >= '4') ? (char)(stringValue.charAt( 0 ) - 4) + stringValue.substring( 1 ) : stringValue );
|
||||||
|
return sb.toString();
|
||||||
|
}
|
||||||
else if ( CVariableFormat.BINARY.equals( format ) ) {
|
else if ( CVariableFormat.BINARY.equals( format ) ) {
|
||||||
StringBuffer sb = new StringBuffer( "0b" ); //$NON-NLS-1$
|
StringBuffer sb = new StringBuffer( "0b" ); //$NON-NLS-1$
|
||||||
String stringValue = Long.toBinaryString( Float.floatToIntBits(floatValue) );
|
String stringValue = Long.toBinaryString( Float.floatToIntBits(floatValue) );
|
||||||
|
@ -533,6 +602,13 @@ public class CValue extends AbstractCValue {
|
||||||
sb.append( (stringValue.length() > 16) ? stringValue.substring( stringValue.length() - 16 ) : stringValue );
|
sb.append( (stringValue.length() > 16) ? stringValue.substring( stringValue.length() - 16 ) : stringValue );
|
||||||
return sb.toString();
|
return sb.toString();
|
||||||
}
|
}
|
||||||
|
else if ( CVariableFormat.OCTAL.equals( format ) ) {
|
||||||
|
StringBuffer sb = new StringBuffer( "0" ); //$NON-NLS-1$
|
||||||
|
String stringValue = Long.toOctalString( Double.doubleToLongBits(doubleValue) );
|
||||||
|
stringValue = (stringValue.length() > 22) ? stringValue.substring( stringValue.length() - 22 ) : stringValue;
|
||||||
|
sb.append( (stringValue.length() == 22 && stringValue.charAt( 0 ) >= '2') ? (char)((stringValue.charAt( 0 ) - '0') % 2 + '0') + stringValue.substring( 1 ) : stringValue );
|
||||||
|
return sb.toString();
|
||||||
|
}
|
||||||
else if ( CVariableFormat.BINARY.equals( format ) ) {
|
else if ( CVariableFormat.BINARY.equals( format ) ) {
|
||||||
StringBuffer sb = new StringBuffer( "0b" ); //$NON-NLS-1$
|
StringBuffer sb = new StringBuffer( "0b" ); //$NON-NLS-1$
|
||||||
String stringValue = Long.toBinaryString( Double.doubleToLongBits(doubleValue) );
|
String stringValue = Long.toBinaryString( Double.doubleToLongBits(doubleValue) );
|
||||||
|
@ -554,9 +630,11 @@ public class CValue extends AbstractCValue {
|
||||||
CVariableFormat format = getParentVariable().getFormat();
|
CVariableFormat format = getParentVariable().getFormat();
|
||||||
if ( CVariableFormat.NATURAL.equals( format ) || CVariableFormat.HEXADECIMAL.equals( format ) )
|
if ( CVariableFormat.NATURAL.equals( format ) || CVariableFormat.HEXADECIMAL.equals( format ) )
|
||||||
return address.toHexAddressString();
|
return address.toHexAddressString();
|
||||||
if ( CVariableFormat.DECIMAL.equals( format ) )
|
else if ( CVariableFormat.DECIMAL.equals( format ) )
|
||||||
return address.toString();
|
return address.toString();
|
||||||
if ( CVariableFormat.BINARY.equals( format ) )
|
else if ( CVariableFormat.OCTAL.equals( format ) )
|
||||||
|
return address.toOctalAddressString();
|
||||||
|
else if ( CVariableFormat.BINARY.equals( format ) )
|
||||||
return address.toBinaryAddressString();
|
return address.toBinaryAddressString();
|
||||||
return null;
|
return null;
|
||||||
}
|
}
|
||||||
|
@ -590,6 +668,13 @@ public class CValue extends AbstractCValue {
|
||||||
sb.append( (stringValue.length() > 4) ? stringValue.substring( stringValue.length() - 4 ) : stringValue );
|
sb.append( (stringValue.length() > 4) ? stringValue.substring( stringValue.length() - 4 ) : stringValue );
|
||||||
return sb.toString();
|
return sb.toString();
|
||||||
}
|
}
|
||||||
|
else if ( CVariableFormat.OCTAL.equals( format ) ) {
|
||||||
|
StringBuffer sb = new StringBuffer( "0" ); //$NON-NLS-1$
|
||||||
|
String stringValue = Integer.toOctalString( (isUnsigned()) ? value.intValue() : value.shortValue() );
|
||||||
|
stringValue = (stringValue.length() > 6) ? stringValue.substring( stringValue.length() - 6 ) : stringValue;
|
||||||
|
sb.append( (stringValue.length() == 6 && stringValue.charAt( 0 ) >= '2') ? (char)((stringValue.charAt( 0 ) - '0') % 2 + '0') + stringValue.substring( 1 ) : stringValue );
|
||||||
|
return sb.toString();
|
||||||
|
}
|
||||||
else if ( CVariableFormat.BINARY.equals( format ) ) {
|
else if ( CVariableFormat.BINARY.equals( format ) ) {
|
||||||
StringBuffer sb = new StringBuffer( "0b" ); //$NON-NLS-1$
|
StringBuffer sb = new StringBuffer( "0b" ); //$NON-NLS-1$
|
||||||
String stringValue = Integer.toBinaryString( (isUnsigned()) ? value.intValue() : value.shortValue() );
|
String stringValue = Integer.toBinaryString( (isUnsigned()) ? value.intValue() : value.shortValue() );
|
||||||
|
@ -623,9 +708,16 @@ public class CValue extends AbstractCValue {
|
||||||
sb.append( (stringValue.length() > 8) ? stringValue.substring( stringValue.length() - 8 ) : stringValue );
|
sb.append( (stringValue.length() > 8) ? stringValue.substring( stringValue.length() - 8 ) : stringValue );
|
||||||
return sb.toString();
|
return sb.toString();
|
||||||
}
|
}
|
||||||
|
else if ( CVariableFormat.OCTAL.equals( format ) ) {
|
||||||
|
StringBuffer sb = new StringBuffer( "0" ); //$NON-NLS-1$
|
||||||
|
String stringValue = (isUnsigned()) ? Long.toOctalString( value.longValue() ) : Integer.toOctalString( value.intValue() );
|
||||||
|
stringValue = (stringValue.length() > 11) ? stringValue.substring( stringValue.length() - 11 ) : stringValue;
|
||||||
|
sb.append( (stringValue.length() == 11 && stringValue.charAt( 0 ) >= '4') ? (char)(stringValue.charAt( 0 ) - 4) + stringValue.substring( 1 ) : stringValue );
|
||||||
|
return sb.toString();
|
||||||
|
}
|
||||||
else if ( CVariableFormat.BINARY.equals( format ) ) {
|
else if ( CVariableFormat.BINARY.equals( format ) ) {
|
||||||
StringBuffer sb = new StringBuffer( "0b" ); //$NON-NLS-1$
|
StringBuffer sb = new StringBuffer( "0b" ); //$NON-NLS-1$
|
||||||
String stringValue = (isUnsigned()) ? Long.toBinaryString( value.longValue() ) : Integer.toHexString( value.intValue() );
|
String stringValue = (isUnsigned()) ? Long.toBinaryString( value.longValue() ) : Integer.toBinaryString( value.intValue() );
|
||||||
sb.append( (stringValue.length() > 32) ? stringValue.substring( stringValue.length() - 32 ) : stringValue );
|
sb.append( (stringValue.length() > 32) ? stringValue.substring( stringValue.length() - 32 ) : stringValue );
|
||||||
return sb.toString();
|
return sb.toString();
|
||||||
}
|
}
|
||||||
|
@ -648,14 +740,17 @@ public class CValue extends AbstractCValue {
|
||||||
}
|
}
|
||||||
else if ( CVariableFormat.HEXADECIMAL.equals( format ) ) {
|
else if ( CVariableFormat.HEXADECIMAL.equals( format ) ) {
|
||||||
StringBuffer sb = new StringBuffer("0x"); //$NON-NLS-1$
|
StringBuffer sb = new StringBuffer("0x"); //$NON-NLS-1$
|
||||||
BigInteger bigValue = value.bigIntegerValue();
|
sb.append(value.bigIntegerValue().toString(16));
|
||||||
sb.append(bigValue.toString(16));
|
return sb.toString();
|
||||||
|
}
|
||||||
|
else if ( CVariableFormat.OCTAL.equals( format ) ) {
|
||||||
|
StringBuffer sb = new StringBuffer("0"); //$NON-NLS-1$
|
||||||
|
sb.append(value.bigIntegerValue().toString(8));
|
||||||
return sb.toString();
|
return sb.toString();
|
||||||
}
|
}
|
||||||
else if ( CVariableFormat.BINARY.equals( format ) ) {
|
else if ( CVariableFormat.BINARY.equals( format ) ) {
|
||||||
StringBuffer sb = new StringBuffer("0b"); //$NON-NLS-1$
|
StringBuffer sb = new StringBuffer("0b"); //$NON-NLS-1$
|
||||||
BigInteger bigValue = value.bigIntegerValue();
|
sb.append(value.bigIntegerValue().toString(2));
|
||||||
sb.append(bigValue.toString(2));
|
|
||||||
return sb.toString();
|
return sb.toString();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -1,5 +1,5 @@
|
||||||
/*******************************************************************************
|
/*******************************************************************************
|
||||||
* Copyright (c) 2004, 2011 QNX Software Systems and others.
|
* Copyright (c) 2004, 2012 QNX Software Systems and others.
|
||||||
* All rights reserved. This program and the accompanying materials
|
* All rights reserved. This program and the accompanying materials
|
||||||
* are made available under the terms of the Eclipse Public License v1.0
|
* are made available under the terms of the Eclipse Public License v1.0
|
||||||
* which accompanies this distribution, and is available at
|
* which accompanies this distribution, and is available at
|
||||||
|
@ -8,14 +8,10 @@
|
||||||
* Contributors:
|
* Contributors:
|
||||||
* QNX Software Systems - Initial API and implementation
|
* QNX Software Systems - Initial API and implementation
|
||||||
* Ken Ryall (Nokia) - 207675
|
* Ken Ryall (Nokia) - 207675
|
||||||
|
* Mathias Kunter - Support for different charsets (bug 370462)
|
||||||
*******************************************************************************/
|
*******************************************************************************/
|
||||||
package org.eclipse.cdt.debug.internal.ui.preferences;
|
package org.eclipse.cdt.debug.internal.ui.preferences;
|
||||||
|
|
||||||
import java.nio.charset.Charset;
|
|
||||||
import java.util.ArrayList;
|
|
||||||
import java.util.Iterator;
|
|
||||||
import java.util.SortedMap;
|
|
||||||
|
|
||||||
import org.eclipse.cdt.core.CCorePlugin;
|
import org.eclipse.cdt.core.CCorePlugin;
|
||||||
import org.eclipse.cdt.core.CCorePreferenceConstants;
|
import org.eclipse.cdt.core.CCorePreferenceConstants;
|
||||||
import org.eclipse.cdt.debug.core.CDebugCorePlugin;
|
import org.eclipse.cdt.debug.core.CDebugCorePlugin;
|
||||||
|
@ -26,8 +22,10 @@ import org.eclipse.cdt.debug.ui.CDebugUIPlugin;
|
||||||
import org.eclipse.cdt.utils.ui.controls.ControlFactory;
|
import org.eclipse.cdt.utils.ui.controls.ControlFactory;
|
||||||
import org.eclipse.debug.ui.IDebugUIConstants;
|
import org.eclipse.debug.ui.IDebugUIConstants;
|
||||||
import org.eclipse.debug.ui.IDebugView;
|
import org.eclipse.debug.ui.IDebugView;
|
||||||
|
import org.eclipse.jface.preference.FieldEditor;
|
||||||
import org.eclipse.jface.preference.IPreferenceStore;
|
import org.eclipse.jface.preference.IPreferenceStore;
|
||||||
import org.eclipse.jface.preference.PreferencePage;
|
import org.eclipse.jface.preference.PreferencePage;
|
||||||
|
import org.eclipse.jface.preference.PreferenceStore;
|
||||||
import org.eclipse.jface.util.IPropertyChangeListener;
|
import org.eclipse.jface.util.IPropertyChangeListener;
|
||||||
import org.eclipse.jface.util.PropertyChangeEvent;
|
import org.eclipse.jface.util.PropertyChangeEvent;
|
||||||
import org.eclipse.jface.viewers.StructuredViewer;
|
import org.eclipse.jface.viewers.StructuredViewer;
|
||||||
|
@ -46,6 +44,7 @@ import org.eclipse.ui.IWorkbench;
|
||||||
import org.eclipse.ui.IWorkbenchPage;
|
import org.eclipse.ui.IWorkbenchPage;
|
||||||
import org.eclipse.ui.IWorkbenchPreferencePage;
|
import org.eclipse.ui.IWorkbenchPreferencePage;
|
||||||
import org.eclipse.ui.IWorkbenchWindow;
|
import org.eclipse.ui.IWorkbenchWindow;
|
||||||
|
import org.eclipse.ui.ide.dialogs.EncodingFieldEditor;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Preference page for debug preferences that apply specifically to C/C++ Debugging.
|
* Preference page for debug preferences that apply specifically to C/C++ Debugging.
|
||||||
|
@ -60,12 +59,26 @@ public class CDebugPreferencePage extends PreferencePage implements IWorkbenchPr
|
||||||
|
|
||||||
private Combo fRegisterFormatCombo;
|
private Combo fRegisterFormatCombo;
|
||||||
|
|
||||||
private Combo fCharsetCombo;
|
private EncodingFieldEditor fCharsetEditor;
|
||||||
|
|
||||||
|
private EncodingFieldEditor fWideCharsetEditor;
|
||||||
|
|
||||||
// Format constants
|
// Format constants
|
||||||
private static int[] fFormatIds = new int[]{ ICDIFormat.NATURAL, ICDIFormat.HEXADECIMAL, ICDIFormat.DECIMAL, ICDIFormat.BINARY };
|
private static int[] fFormatIds = new int[] {
|
||||||
|
ICDIFormat.NATURAL,
|
||||||
|
ICDIFormat.HEXADECIMAL,
|
||||||
|
ICDIFormat.DECIMAL,
|
||||||
|
ICDIFormat.OCTAL,
|
||||||
|
ICDIFormat.BINARY
|
||||||
|
};
|
||||||
|
|
||||||
private static String[] fFormatLabels = new String[]{ PreferenceMessages.getString( "CDebugPreferencePage.0" ), PreferenceMessages.getString( "CDebugPreferencePage.1" ), PreferenceMessages.getString( "CDebugPreferencePage.2" ), PreferenceMessages.getString( "CDebugPreferencePage.14" ) }; //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$ //$NON-NLS-4$
|
private static String[] fFormatLabels = new String[] {
|
||||||
|
PreferenceMessages.getString( "CDebugPreferencePage.0" ), //$NON-NLS-1$
|
||||||
|
PreferenceMessages.getString( "CDebugPreferencePage.1" ), //$NON-NLS-1$
|
||||||
|
PreferenceMessages.getString( "CDebugPreferencePage.2" ), //$NON-NLS-1$
|
||||||
|
PreferenceMessages.getString( "CDebugPreferencePage.17" ), //$NON-NLS-1$
|
||||||
|
PreferenceMessages.getString( "CDebugPreferencePage.14" ) //$NON-NLS-1$
|
||||||
|
};
|
||||||
|
|
||||||
private PropertyChangeListener fPropertyChangeListener;
|
private PropertyChangeListener fPropertyChangeListener;
|
||||||
|
|
||||||
|
@ -79,10 +92,21 @@ public class CDebugPreferencePage extends PreferencePage implements IWorkbenchPr
|
||||||
public void propertyChange( PropertyChangeEvent event ) {
|
public void propertyChange( PropertyChangeEvent event ) {
|
||||||
if ( event.getProperty().equals( ICDebugPreferenceConstants.PREF_SHOW_HEX_VALUES ) ) {
|
if ( event.getProperty().equals( ICDebugPreferenceConstants.PREF_SHOW_HEX_VALUES ) ) {
|
||||||
fHasStateChanged = true;
|
fHasStateChanged = true;
|
||||||
}
|
} else if ( event.getProperty().equals( ICDebugPreferenceConstants.PREF_SHOW_CHAR_VALUES ) ) {
|
||||||
else if ( event.getProperty().equals( ICDebugPreferenceConstants.PREF_SHOW_CHAR_VALUES ) ) {
|
|
||||||
fHasStateChanged = true;
|
fHasStateChanged = true;
|
||||||
|
} else if (event.getProperty().equals(FieldEditor.VALUE)) {
|
||||||
|
fHasStateChanged = true;
|
||||||
|
} else if (event.getProperty().equals(FieldEditor.IS_VALID)) {
|
||||||
|
setValid(fCharsetEditor.isValid() && fWideCharsetEditor.isValid());
|
||||||
|
if (!fCharsetEditor.isValid()) {
|
||||||
|
setErrorMessage(PreferenceMessages.getString("CDebugPreferencePage.19")); //$NON-NLS-1$
|
||||||
|
} else if (!fWideCharsetEditor.isValid()) {
|
||||||
|
setErrorMessage(PreferenceMessages.getString("CDebugPreferencePage.20")); //$NON-NLS-1$
|
||||||
|
} else {
|
||||||
|
setErrorMessage(null);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
protected boolean hasStateChanged() {
|
protected boolean hasStateChanged() {
|
||||||
|
@ -122,6 +146,8 @@ public class CDebugPreferencePage extends PreferencePage implements IWorkbenchPr
|
||||||
createSpacer( composite, 1 );
|
createSpacer( composite, 1 );
|
||||||
createViewSettingPreferences( composite );
|
createViewSettingPreferences( composite );
|
||||||
createSpacer( composite, 1 );
|
createSpacer( composite, 1 );
|
||||||
|
createCharsetSettingPreferences( composite );
|
||||||
|
createSpacer( composite, 1 );
|
||||||
createBinarySettings( composite );
|
createBinarySettings( composite );
|
||||||
setValues();
|
setValues();
|
||||||
return composite;
|
return composite;
|
||||||
|
@ -146,10 +172,29 @@ public class CDebugPreferencePage extends PreferencePage implements IWorkbenchPr
|
||||||
* Set the values of the component widgets based on the values in the preference store
|
* Set the values of the component widgets based on the values in the preference store
|
||||||
*/
|
*/
|
||||||
private void setValues() {
|
private void setValues() {
|
||||||
|
// Number format combos
|
||||||
fVariableFormatCombo.select( getFormatIndex( CDebugCorePlugin.getDefault().getPluginPreferences().getInt( ICDebugConstants.PREF_DEFAULT_VARIABLE_FORMAT ) ) );
|
fVariableFormatCombo.select( getFormatIndex( CDebugCorePlugin.getDefault().getPluginPreferences().getInt( ICDebugConstants.PREF_DEFAULT_VARIABLE_FORMAT ) ) );
|
||||||
fExpressionFormatCombo.select( getFormatIndex( CDebugCorePlugin.getDefault().getPluginPreferences().getInt( ICDebugConstants.PREF_DEFAULT_EXPRESSION_FORMAT ) ) );
|
fExpressionFormatCombo.select( getFormatIndex( CDebugCorePlugin.getDefault().getPluginPreferences().getInt( ICDebugConstants.PREF_DEFAULT_EXPRESSION_FORMAT ) ) );
|
||||||
fRegisterFormatCombo.select( getFormatIndex( CDebugCorePlugin.getDefault().getPluginPreferences().getInt( ICDebugConstants.PREF_DEFAULT_REGISTER_FORMAT ) ) );
|
fRegisterFormatCombo.select( getFormatIndex( CDebugCorePlugin.getDefault().getPluginPreferences().getInt( ICDebugConstants.PREF_DEFAULT_REGISTER_FORMAT ) ) );
|
||||||
fCharsetCombo.setText( CDebugCorePlugin.getDefault().getPluginPreferences().getString( ICDebugConstants.PREF_CHARSET ) );
|
|
||||||
|
// Charset editors
|
||||||
|
PreferenceStore ps = new PreferenceStore();
|
||||||
|
|
||||||
|
ps.setDefault(ICDebugConstants.PREF_CHARSET, CDebugCorePlugin.getDefault().getPluginPreferences().getDefaultString(ICDebugConstants.PREF_CHARSET));
|
||||||
|
ps.setValue(ICDebugConstants.PREF_CHARSET, CDebugCorePlugin.getDefault().getPluginPreferences().getString(ICDebugConstants.PREF_CHARSET));
|
||||||
|
fCharsetEditor.setPreferenceStore(ps);
|
||||||
|
fCharsetEditor.load();
|
||||||
|
if (CDebugCorePlugin.getDefault().getPluginPreferences().isDefault(ICDebugConstants.PREF_CHARSET))
|
||||||
|
fCharsetEditor.loadDefault();
|
||||||
|
|
||||||
|
ps.setDefault(ICDebugConstants.PREF_WIDE_CHARSET, CDebugCorePlugin.getDefault().getPluginPreferences().getDefaultString(ICDebugConstants.PREF_WIDE_CHARSET));
|
||||||
|
ps.setValue(ICDebugConstants.PREF_WIDE_CHARSET, CDebugCorePlugin.getDefault().getPluginPreferences().getString(ICDebugConstants.PREF_WIDE_CHARSET));
|
||||||
|
fWideCharsetEditor.setPreferenceStore(ps);
|
||||||
|
fWideCharsetEditor.load();
|
||||||
|
if (CDebugCorePlugin.getDefault().getPluginPreferences().isDefault(ICDebugConstants.PREF_WIDE_CHARSET))
|
||||||
|
fWideCharsetEditor.loadDefault();
|
||||||
|
|
||||||
|
// Others
|
||||||
fShowBinarySourceFilesButton.setSelection( CCorePlugin.getDefault().getPluginPreferences().getBoolean( CCorePreferenceConstants.SHOW_SOURCE_FILES_IN_BINARIES ) );
|
fShowBinarySourceFilesButton.setSelection( CCorePlugin.getDefault().getPluginPreferences().getBoolean( CCorePreferenceConstants.SHOW_SOURCE_FILES_IN_BINARIES ) );
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -196,19 +241,23 @@ public class CDebugPreferencePage extends PreferencePage implements IWorkbenchPr
|
||||||
fVariableFormatCombo = createComboBox( formatComposite, PreferenceMessages.getString( "CDebugPreferencePage.8" ), fFormatLabels, fFormatLabels[0] ); //$NON-NLS-1$
|
fVariableFormatCombo = createComboBox( formatComposite, PreferenceMessages.getString( "CDebugPreferencePage.8" ), fFormatLabels, fFormatLabels[0] ); //$NON-NLS-1$
|
||||||
fExpressionFormatCombo = createComboBox( formatComposite, PreferenceMessages.getString( "CDebugPreferencePage.9" ), fFormatLabels, fFormatLabels[0] ); //$NON-NLS-1$
|
fExpressionFormatCombo = createComboBox( formatComposite, PreferenceMessages.getString( "CDebugPreferencePage.9" ), fFormatLabels, fFormatLabels[0] ); //$NON-NLS-1$
|
||||||
fRegisterFormatCombo = createComboBox( formatComposite, PreferenceMessages.getString( "CDebugPreferencePage.10" ), fFormatLabels, fFormatLabels[0] ); //$NON-NLS-1$
|
fRegisterFormatCombo = createComboBox( formatComposite, PreferenceMessages.getString( "CDebugPreferencePage.10" ), fFormatLabels, fFormatLabels[0] ); //$NON-NLS-1$
|
||||||
String[] charsetNames = getCharsetNames();
|
|
||||||
fCharsetCombo = createComboBox( formatComposite, PreferenceMessages.getString( "CDebugPreferencePage.16" ), charsetNames, charsetNames[0] ); //$NON-NLS-1$
|
|
||||||
}
|
}
|
||||||
|
|
||||||
private String[] getCharsetNames() {
|
private void createCharsetSettingPreferences( Composite parent ) {
|
||||||
ArrayList names = new ArrayList();
|
// Create containing composite
|
||||||
SortedMap setmap = Charset.availableCharsets();
|
Composite formatComposite = ControlFactory.createComposite( parent, 2);
|
||||||
|
((GridLayout)formatComposite.getLayout()).marginWidth = 0;
|
||||||
|
((GridLayout)formatComposite.getLayout()).marginHeight = 0;
|
||||||
|
|
||||||
for (Iterator iterator = setmap.keySet().iterator(); iterator.hasNext();) {
|
// Create charset editor
|
||||||
String entry = (String) iterator.next();
|
Composite charsetComposite = ControlFactory.createComposite(formatComposite, 1);
|
||||||
names.add(entry);
|
fCharsetEditor = new EncodingFieldEditor(ICDebugConstants.PREF_CHARSET, "", PreferenceMessages.getString( "CDebugPreferencePage.18" ), charsetComposite); //$NON-NLS-1$ //$NON-NLS-2$
|
||||||
}
|
fCharsetEditor.setPropertyChangeListener(getPropertyChangeListener());
|
||||||
return (String[]) names.toArray(new String[names.size()]);
|
|
||||||
|
// Create wide charset editor
|
||||||
|
Composite wideCharsetComposite = ControlFactory.createComposite(formatComposite, 1);
|
||||||
|
fWideCharsetEditor = new EncodingFieldEditor(ICDebugConstants.PREF_WIDE_CHARSET, "", PreferenceMessages.getString( "CDebugPreferencePage.16" ), wideCharsetComposite); //$NON-NLS-1$ //$NON-NLS-2$
|
||||||
|
fWideCharsetEditor.setPropertyChangeListener(getPropertyChangeListener());
|
||||||
}
|
}
|
||||||
|
|
||||||
private void createBinarySettings( Composite parent ) {
|
private void createBinarySettings( Composite parent ) {
|
||||||
|
@ -304,7 +353,13 @@ public class CDebugPreferencePage extends PreferencePage implements IWorkbenchPr
|
||||||
CDebugCorePlugin.getDefault().getPluginPreferences().setValue( ICDebugConstants.PREF_DEFAULT_VARIABLE_FORMAT, getFormatId( fVariableFormatCombo.getSelectionIndex() ) );
|
CDebugCorePlugin.getDefault().getPluginPreferences().setValue( ICDebugConstants.PREF_DEFAULT_VARIABLE_FORMAT, getFormatId( fVariableFormatCombo.getSelectionIndex() ) );
|
||||||
CDebugCorePlugin.getDefault().getPluginPreferences().setValue( ICDebugConstants.PREF_DEFAULT_EXPRESSION_FORMAT, getFormatId( fExpressionFormatCombo.getSelectionIndex() ) );
|
CDebugCorePlugin.getDefault().getPluginPreferences().setValue( ICDebugConstants.PREF_DEFAULT_EXPRESSION_FORMAT, getFormatId( fExpressionFormatCombo.getSelectionIndex() ) );
|
||||||
CDebugCorePlugin.getDefault().getPluginPreferences().setValue( ICDebugConstants.PREF_DEFAULT_REGISTER_FORMAT, getFormatId( fRegisterFormatCombo.getSelectionIndex() ) );
|
CDebugCorePlugin.getDefault().getPluginPreferences().setValue( ICDebugConstants.PREF_DEFAULT_REGISTER_FORMAT, getFormatId( fRegisterFormatCombo.getSelectionIndex() ) );
|
||||||
CDebugCorePlugin.getDefault().getPluginPreferences().setValue( ICDebugConstants.PREF_CHARSET, fCharsetCombo.getItem( fCharsetCombo.getSelectionIndex()) );
|
|
||||||
|
fCharsetEditor.store();
|
||||||
|
CDebugCorePlugin.getDefault().getPluginPreferences().setValue(ICDebugConstants.PREF_CHARSET, fCharsetEditor.getPreferenceStore().getString(ICDebugConstants.PREF_CHARSET));
|
||||||
|
|
||||||
|
fWideCharsetEditor.store();
|
||||||
|
CDebugCorePlugin.getDefault().getPluginPreferences().setValue(ICDebugConstants.PREF_WIDE_CHARSET, fWideCharsetEditor.getPreferenceStore().getString(ICDebugConstants.PREF_WIDE_CHARSET));
|
||||||
|
|
||||||
CCorePlugin.getDefault().getPluginPreferences().setValue( CCorePreferenceConstants.SHOW_SOURCE_FILES_IN_BINARIES, fShowBinarySourceFilesButton.getSelection() );
|
CCorePlugin.getDefault().getPluginPreferences().setValue( CCorePreferenceConstants.SHOW_SOURCE_FILES_IN_BINARIES, fShowBinarySourceFilesButton.getSelection() );
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -323,7 +378,8 @@ public class CDebugPreferencePage extends PreferencePage implements IWorkbenchPr
|
||||||
fVariableFormatCombo.select( getFormatIndex( CDebugCorePlugin.getDefault().getPluginPreferences().getDefaultInt( ICDebugConstants.PREF_DEFAULT_VARIABLE_FORMAT ) ) );
|
fVariableFormatCombo.select( getFormatIndex( CDebugCorePlugin.getDefault().getPluginPreferences().getDefaultInt( ICDebugConstants.PREF_DEFAULT_VARIABLE_FORMAT ) ) );
|
||||||
fExpressionFormatCombo.select( getFormatIndex( CDebugCorePlugin.getDefault().getPluginPreferences().getDefaultInt( ICDebugConstants.PREF_DEFAULT_EXPRESSION_FORMAT ) ) );
|
fExpressionFormatCombo.select( getFormatIndex( CDebugCorePlugin.getDefault().getPluginPreferences().getDefaultInt( ICDebugConstants.PREF_DEFAULT_EXPRESSION_FORMAT ) ) );
|
||||||
fRegisterFormatCombo.select( getFormatIndex( CDebugCorePlugin.getDefault().getPluginPreferences().getDefaultInt( ICDebugConstants.PREF_DEFAULT_REGISTER_FORMAT ) ) );
|
fRegisterFormatCombo.select( getFormatIndex( CDebugCorePlugin.getDefault().getPluginPreferences().getDefaultInt( ICDebugConstants.PREF_DEFAULT_REGISTER_FORMAT ) ) );
|
||||||
fCharsetCombo.setText( CDebugCorePlugin.getDefault().getPluginPreferences().getDefaultString( ICDebugConstants.PREF_CHARSET ) );
|
fCharsetEditor.loadDefault();
|
||||||
|
fWideCharsetEditor.loadDefault();
|
||||||
}
|
}
|
||||||
|
|
||||||
private static int getFormatId( int index ) {
|
private static int getFormatId( int index ) {
|
||||||
|
|
|
@ -1,5 +1,5 @@
|
||||||
###############################################################################
|
###############################################################################
|
||||||
# Copyright (c) 2003, 2010 QNX Software Systems and others.
|
# Copyright (c) 2003, 2012 QNX Software Systems and others.
|
||||||
# All rights reserved. This program and the accompanying materials
|
# All rights reserved. This program and the accompanying materials
|
||||||
# are made available under the terms of the Eclipse Public License v1.0
|
# are made available under the terms of the Eclipse Public License v1.0
|
||||||
# which accompanies this distribution, and is available at
|
# which accompanies this distribution, and is available at
|
||||||
|
@ -8,23 +8,28 @@
|
||||||
# Contributors:
|
# Contributors:
|
||||||
# QNX Software Systems - initial API and implementation
|
# QNX Software Systems - initial API and implementation
|
||||||
# IBM Corporation
|
# IBM Corporation
|
||||||
|
# Mathias Kunter - Support for different charsets (bug 370462)
|
||||||
###############################################################################
|
###############################################################################
|
||||||
|
|
||||||
CDebugPreferencePage.Color_of_disassembly_source_lines_1=Color of source lines:
|
CDebugPreferencePage.Color_of_disassembly_source_lines_1=Color of source lines:
|
||||||
CDebugPreferencePage.0=Natural
|
CDebugPreferencePage.0=Default
|
||||||
CDebugPreferencePage.1=Hexadecimal
|
CDebugPreferencePage.1=Hexadecimal
|
||||||
CDebugPreferencePage.2=Decimal
|
CDebugPreferencePage.2=Decimal
|
||||||
CDebugPreferencePage.3=General settings for C/C++ Debugging.
|
CDebugPreferencePage.3=General settings for C/C++ Debugging.
|
||||||
CDebugPreferencePage.4=Opened view default settings
|
CDebugPreferencePage.4=Default number format
|
||||||
CDebugPreferencePage.8=Default variable format:
|
CDebugPreferencePage.8=Variables:
|
||||||
CDebugPreferencePage.9=Default expression format:
|
CDebugPreferencePage.9=Expressions:
|
||||||
CDebugPreferencePage.10=Default register format:
|
CDebugPreferencePage.10=Registers:
|
||||||
CDebugPreferencePage.11=Disassembly options
|
CDebugPreferencePage.11=Disassembly options
|
||||||
CDebugPreferencePage.12=Maximum number of displayed instructions:
|
CDebugPreferencePage.12=Maximum number of displayed instructions:
|
||||||
CDebugPreferencePage.13=Value must be an integer between {0} and {1}.
|
CDebugPreferencePage.13=Value must be an integer between {0} and {1}.
|
||||||
CDebugPreferencePage.14=Binary
|
CDebugPreferencePage.14=Binary
|
||||||
CDebugPreferencePage.15=Show source files in binaries
|
CDebugPreferencePage.15=Show source files in binaries
|
||||||
CDebugPreferencePage.16=Character encoding:
|
CDebugPreferencePage.16=Wide character encoding
|
||||||
|
CDebugPreferencePage.17=Octal
|
||||||
|
CDebugPreferencePage.18=Character encoding
|
||||||
|
CDebugPreferencePage.19=The selected character encoding is not supported.
|
||||||
|
CDebugPreferencePage.20=The selected wide character encoding is not supported.
|
||||||
SourcePreferencePage.0=Default S&ource Lookup Path:
|
SourcePreferencePage.0=Default S&ource Lookup Path:
|
||||||
DebuggerTypesPage.0=Select All
|
DebuggerTypesPage.0=Select All
|
||||||
DebuggerTypesPage.1=Deselect All
|
DebuggerTypesPage.1=Deselect All
|
||||||
|
|
Binary file not shown.
Before Width: | Height: | Size: 22 KiB After Width: | Height: | Size: 38 KiB |
|
@ -24,30 +24,26 @@
|
||||||
<th id="option">Option</th>
|
<th id="option">Option</th>
|
||||||
<th id="description">Description</th>
|
<th id="description">Description</th>
|
||||||
</tr>
|
</tr>
|
||||||
<tr>
|
|
||||||
<td style="width:30%" valign="top" headers="option"><strong>Show full paths</strong></td>
|
|
||||||
<td valign="top" headers="description">Displays the full path of resources.</td>
|
|
||||||
</tr>
|
|
||||||
<tr>
|
<tr>
|
||||||
<td style="width:30%" valign="top" headers="option"><strong>Default variable format</strong></td>
|
<td style="width:30%" valign="top" headers="option"><strong>Default variable format</strong></td>
|
||||||
<td valign="top" headers="description">Specifies the number system in which to display variables (Natural, Hexadecimal, Decimal, or Binary).</td>
|
<td valign="top" headers="description">Select the default variable format from either Default, Hexadecimal, Decimal, Octal or Binary.</td>
|
||||||
</tr>
|
</tr>
|
||||||
<tr>
|
<tr>
|
||||||
<td style="width:30%" valign="top" headers="option"><strong>Default expression format</strong></td>
|
<td style="width:30%" valign="top" headers="option"><strong>Default expression format</strong></td>
|
||||||
<td valign="top" headers="description">Specifies the number system in which to display expressions (Natural, Hexadecimal, Decimal, or Binary).</td>
|
<td valign="top" headers="description">Select the default expression format from either Default, Hexadecimal, Decimal, Octal or Binary.</td>
|
||||||
</tr>
|
</tr>
|
||||||
<tr>
|
<tr>
|
||||||
<td style="width:30%" valign="top" headers="option"><strong>Default register format</strong></td>
|
<td style="width:30%" valign="top" headers="option"><strong>Default register format</strong></td>
|
||||||
<td valign="top" headers="description">Specifies the number system in which to display registers (Natural, Hexadecimal, Decimal, or Binary).</td>
|
<td valign="top" headers="description">Select the default register format from either Default, Hexadecimal, Decimal, Octal or Binary.</td>
|
||||||
</tr>
|
|
||||||
<tr>
|
|
||||||
<td style="width:30%" valign="top" headers="option"><strong>Maximum number of displayed instructions</strong></td>
|
|
||||||
<td valign="top" headers="description">The maximum number of assembler instructions displayed in the Disassembly view.</td>
|
|
||||||
</tr>
|
|
||||||
<tr>
|
|
||||||
<td style="width:30%" valign="top" headers="option"><strong>Color of source lines</strong></td>
|
|
||||||
<td valign="top" headers="description">The color of source lines in the Disassembly view if mixed source/disassembly code is shown.</td>
|
|
||||||
</tr>
|
</tr>
|
||||||
|
<tr>
|
||||||
|
<td style="width:30%" valign="top" headers="option"><strong>Character encoding</strong></td>
|
||||||
|
<td valign="top" headers="description">Select the character encoding of the debugged program. This applies to char type strings. Note that this requires GDB version 7.0 or later.</td>
|
||||||
|
</tr>
|
||||||
|
<tr>
|
||||||
|
<td style="width:30%" valign="top" headers="option"><strong>Wide character encoding</strong></td>
|
||||||
|
<td valign="top" headers="description">Select the wide character encoding of the debugged program. This applies to wchar_t type strings. Note that this requires GDB version 7.0 or later.</td>
|
||||||
|
</tr>
|
||||||
<tr>
|
<tr>
|
||||||
<td valign="top" headers="option"><strong>Show source files in binaries </strong></td>
|
<td valign="top" headers="option"><strong>Show source files in binaries </strong></td>
|
||||||
<td valign="top" headers="description">Show source files associated with project binaries. </td>
|
<td valign="top" headers="description">Show source files associated with project binaries. </td>
|
||||||
|
|
|
@ -1,5 +1,5 @@
|
||||||
/*******************************************************************************
|
/*******************************************************************************
|
||||||
* Copyright (c) 2008, 2011 Ericsson and others.
|
* Copyright (c) 2008, 2012 Ericsson and others.
|
||||||
* All rights reserved. This program and the accompanying materials
|
* All rights reserved. This program and the accompanying materials
|
||||||
* are made available under the terms of the Eclipse Public License v1.0
|
* are made available under the terms of the Eclipse Public License v1.0
|
||||||
* which accompanies this distribution, and is available at
|
* which accompanies this distribution, and is available at
|
||||||
|
@ -12,14 +12,17 @@
|
||||||
* Jens Elmenthaler (Verigy) - Added Full GDB pretty-printing support (bug 302121)
|
* Jens Elmenthaler (Verigy) - Added Full GDB pretty-printing support (bug 302121)
|
||||||
* Sergey Prigogin (Google)
|
* Sergey Prigogin (Google)
|
||||||
* Marc Khouzam (Ericsson) - No longer call method to check non-stop for GDB < 7.0 (Bug 365471)
|
* Marc Khouzam (Ericsson) - No longer call method to check non-stop for GDB < 7.0 (Bug 365471)
|
||||||
|
* Mathias Kunter - Support for different charsets (bug 370462)
|
||||||
*******************************************************************************/
|
*******************************************************************************/
|
||||||
package org.eclipse.cdt.dsf.gdb.launching;
|
package org.eclipse.cdt.dsf.gdb.launching;
|
||||||
|
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
import java.util.Map;
|
import java.util.Map;
|
||||||
|
|
||||||
|
import org.eclipse.cdt.debug.core.CDebugCorePlugin;
|
||||||
import org.eclipse.cdt.debug.core.CDebugUtils;
|
import org.eclipse.cdt.debug.core.CDebugUtils;
|
||||||
import org.eclipse.cdt.debug.core.ICDTLaunchConfigurationConstants;
|
import org.eclipse.cdt.debug.core.ICDTLaunchConfigurationConstants;
|
||||||
|
import org.eclipse.cdt.debug.core.ICDebugConstants;
|
||||||
import org.eclipse.cdt.debug.internal.core.sourcelookup.CSourceLookupDirector;
|
import org.eclipse.cdt.debug.internal.core.sourcelookup.CSourceLookupDirector;
|
||||||
import org.eclipse.cdt.dsf.concurrent.DataRequestMonitor;
|
import org.eclipse.cdt.dsf.concurrent.DataRequestMonitor;
|
||||||
import org.eclipse.cdt.dsf.concurrent.ImmediateDataRequestMonitor;
|
import org.eclipse.cdt.dsf.concurrent.ImmediateDataRequestMonitor;
|
||||||
|
@ -79,6 +82,7 @@ public class FinalLaunchSequence extends ReflectionSequence {
|
||||||
"stepSetEnvironmentDirectory", //$NON-NLS-1$
|
"stepSetEnvironmentDirectory", //$NON-NLS-1$
|
||||||
"stepSetBreakpointPending", //$NON-NLS-1$
|
"stepSetBreakpointPending", //$NON-NLS-1$
|
||||||
"stepEnablePrettyPrinting", //$NON-NLS-1$
|
"stepEnablePrettyPrinting", //$NON-NLS-1$
|
||||||
|
"stepSetCharset", //$NON-NLS-1$
|
||||||
"stepSourceGDBInitFile", //$NON-NLS-1$
|
"stepSourceGDBInitFile", //$NON-NLS-1$
|
||||||
"stepSetAutoLoadSharedLibrarySymbols", //$NON-NLS-1$
|
"stepSetAutoLoadSharedLibrarySymbols", //$NON-NLS-1$
|
||||||
"stepSetSharedLibraryPaths", //$NON-NLS-1$
|
"stepSetSharedLibraryPaths", //$NON-NLS-1$
|
||||||
|
@ -213,6 +217,17 @@ public class FinalLaunchSequence extends ReflectionSequence {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Set the charsets.
|
||||||
|
* @since 4.0
|
||||||
|
*/
|
||||||
|
@Execute
|
||||||
|
public void stepSetCharset(final RequestMonitor requestMonitor) {
|
||||||
|
String charset = CDebugCorePlugin.getDefault().getPluginPreferences().getString(ICDebugConstants.PREF_CHARSET);
|
||||||
|
String wideCharset = CDebugCorePlugin.getDefault().getPluginPreferences().getString(ICDebugConstants.PREF_WIDE_CHARSET);
|
||||||
|
fCommandControl.setCharsets(charset, wideCharset, requestMonitor);
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Source the gdbinit file specified in the launch.
|
* Source the gdbinit file specified in the launch.
|
||||||
* @since 4.0
|
* @since 4.0
|
||||||
|
|
|
@ -13,6 +13,7 @@
|
||||||
* Jens Elmenthaler (Verigy) - Added Full GDB pretty-printing support (bug 302121)
|
* Jens Elmenthaler (Verigy) - Added Full GDB pretty-printing support (bug 302121)
|
||||||
* Mikhail Khodjaiants (Mentor Graphics) - Refactor common code in GDBControl* classes (bug 372795)
|
* Mikhail Khodjaiants (Mentor Graphics) - Refactor common code in GDBControl* classes (bug 372795)
|
||||||
* Marc Khouzam (Ericsson) - Pass errorStream to startCommandProcessing() (Bug 350837)
|
* Marc Khouzam (Ericsson) - Pass errorStream to startCommandProcessing() (Bug 350837)
|
||||||
|
* Mathias Kunter - Support for different charsets (bug 370462)
|
||||||
*******************************************************************************/
|
*******************************************************************************/
|
||||||
package org.eclipse.cdt.dsf.gdb.service.command;
|
package org.eclipse.cdt.dsf.gdb.service.command;
|
||||||
|
|
||||||
|
@ -462,6 +463,30 @@ public class GDBControl extends AbstractMIControl implements IGDBControl {
|
||||||
rm.done();
|
rm.done();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Sets the charsets.
|
||||||
|
* @param charset This parameter is ignored. GDB 7.0 or later required.
|
||||||
|
* @param wideCharset This parameter is ignored. GDB 7.0 or later required.
|
||||||
|
* @param rm
|
||||||
|
*/
|
||||||
|
@Override
|
||||||
|
public void setCharsets(String charset, String wideCharset, RequestMonitor rm) {
|
||||||
|
// Enable printing of sevenbit-strings. This is required to avoid charset issues.
|
||||||
|
// See bug 307311 for details.
|
||||||
|
queueCommand(
|
||||||
|
getCommandFactory().createMIGDBSetPrintSevenbitStrings(fControlDmc, true),
|
||||||
|
new DataRequestMonitor<MIInfo>(getExecutor(), rm));
|
||||||
|
|
||||||
|
// Set the charset to ISO-8859-1. We have to do this here because GDB earlier than
|
||||||
|
// 7.0 has no proper Unicode support. Note that we can still handle UTF-8 though, as
|
||||||
|
// we can determine and decode UTF-8 encoded strings on our own. This makes ISO-8859-1
|
||||||
|
// the most suitable option here. See the MIStringHandler class and bug 307311 for
|
||||||
|
// details.
|
||||||
|
queueCommand(
|
||||||
|
getCommandFactory().createMIGDBSetCharset(fControlDmc, "ISO-8859-1"), //$NON-NLS-1$
|
||||||
|
new DataRequestMonitor<MIInfo>(getExecutor(), rm));
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @since 4.0
|
* @since 4.0
|
||||||
*/
|
*/
|
||||||
|
|
|
@ -1,5 +1,5 @@
|
||||||
/*******************************************************************************
|
/*******************************************************************************
|
||||||
* Copyright (c) 2006, 2011 Wind River Systems and others.
|
* Copyright (c) 2006, 2012 Wind River Systems and others.
|
||||||
* All rights reserved. This program and the accompanying materials
|
* All rights reserved. This program and the accompanying materials
|
||||||
* are made available under the terms of the Eclipse Public License v1.0
|
* are made available under the terms of the Eclipse Public License v1.0
|
||||||
* which accompanies this distribution, and is available at
|
* which accompanies this distribution, and is available at
|
||||||
|
@ -13,6 +13,7 @@
|
||||||
* Jens Elmenthaler (Verigy) - Added Full GDB pretty-printing support (bug 302121)
|
* Jens Elmenthaler (Verigy) - Added Full GDB pretty-printing support (bug 302121)
|
||||||
* Marc Khouzam (Ericsson) - Call new FinalLaunchSequence_7_0 (Bug 365471)
|
* Marc Khouzam (Ericsson) - Call new FinalLaunchSequence_7_0 (Bug 365471)
|
||||||
* Mikhail Khodjaiants (Mentor Graphics) - Refactor common code in GDBControl* classes (bug 372795)
|
* Mikhail Khodjaiants (Mentor Graphics) - Refactor common code in GDBControl* classes (bug 372795)
|
||||||
|
* Mathias Kunter - Support for different charsets (bug 370462)
|
||||||
*******************************************************************************/
|
*******************************************************************************/
|
||||||
package org.eclipse.cdt.dsf.gdb.service.command;
|
package org.eclipse.cdt.dsf.gdb.service.command;
|
||||||
|
|
||||||
|
@ -237,6 +238,33 @@ public class GDBControl_7_0 extends GDBControl {
|
||||||
new DataRequestMonitor<MIInfo>(getExecutor(), rm));
|
new DataRequestMonitor<MIInfo>(getExecutor(), rm));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void setCharsets(String charset, String wideCharset, RequestMonitor rm) {
|
||||||
|
// Enable printing of sevenbit-strings. This is required to avoid charset issues.
|
||||||
|
// See bug 307311 for details.
|
||||||
|
queueCommand(
|
||||||
|
getCommandFactory().createMIGDBSetPrintSevenbitStrings(getControlDMContext(), true),
|
||||||
|
new DataRequestMonitor<MIInfo>(getExecutor(), rm));
|
||||||
|
|
||||||
|
// Set the host charset to UTF-8. This ensures that we can correctly handle different
|
||||||
|
// charsets used by the inferior program.
|
||||||
|
queueCommand(
|
||||||
|
getCommandFactory().createMIGDBSetHostCharset(getControlDMContext(), "UTF-8"), //$NON-NLS-1$
|
||||||
|
new DataRequestMonitor<MIInfo>(getExecutor(), rm));
|
||||||
|
|
||||||
|
// Set the target charset. The target charset is the charset used by the char type of
|
||||||
|
// the inferior program. Note that GDB only accepts upper case charset names.
|
||||||
|
queueCommand(
|
||||||
|
getCommandFactory().createMIGDBSetTargetCharset(getControlDMContext(), charset.toUpperCase()),
|
||||||
|
new DataRequestMonitor<MIInfo>(getExecutor(), rm));
|
||||||
|
|
||||||
|
// Set the target wide charset. The target wide charset is the charset used by the wchar_t
|
||||||
|
// type of the inferior program. Note that GDB only accepts upper case charset names.
|
||||||
|
queueCommand(
|
||||||
|
getCommandFactory().createMIGDBSetTargetWideCharset(getControlDMContext(), wideCharset.toUpperCase()),
|
||||||
|
new DataRequestMonitor<MIInfo>(getExecutor(), rm));
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @since 4.0
|
* @since 4.0
|
||||||
*/
|
*/
|
||||||
|
|
|
@ -1,5 +1,5 @@
|
||||||
/*******************************************************************************
|
/*******************************************************************************
|
||||||
* Copyright (c) 2008, 2011 Ericsson and others.
|
* Copyright (c) 2008, 2012 Ericsson and others.
|
||||||
* All rights reserved. This program and the accompanying materials
|
* All rights reserved. This program and the accompanying materials
|
||||||
* are made available under the terms of the Eclipse License v1.0
|
* are made available under the terms of the Eclipse License v1.0
|
||||||
* which accompanies this distribution, and is available at
|
* which accompanies this distribution, and is available at
|
||||||
|
@ -9,6 +9,7 @@
|
||||||
* Ericsson - initial API and implementation
|
* Ericsson - initial API and implementation
|
||||||
* Vladimir Prus (CodeSourcery) - Support for -data-read-memory-bytes (bug 322658)
|
* Vladimir Prus (CodeSourcery) - Support for -data-read-memory-bytes (bug 322658)
|
||||||
* Jens Elmenthaler (Verigy) - Added Full GDB pretty-printing support (bug 302121)
|
* Jens Elmenthaler (Verigy) - Added Full GDB pretty-printing support (bug 302121)
|
||||||
|
* Mathias Kunter - Support for different charsets (bug 370462)
|
||||||
*******************************************************************************/
|
*******************************************************************************/
|
||||||
package org.eclipse.cdt.dsf.gdb.service.command;
|
package org.eclipse.cdt.dsf.gdb.service.command;
|
||||||
|
|
||||||
|
@ -92,4 +93,12 @@ public interface IGDBControl extends IMICommandControl {
|
||||||
* @since 4.0
|
* @since 4.0
|
||||||
*/
|
*/
|
||||||
void setPrintPythonErrors(boolean enabled, RequestMonitor rm);
|
void setPrintPythonErrors(boolean enabled, RequestMonitor rm);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Sets the charsets.
|
||||||
|
* @param charset The charset used by the char type of the inferior program.
|
||||||
|
* @param wideCharset The charset used by the wchar_t type of the inferior program.
|
||||||
|
* @param rm
|
||||||
|
*/
|
||||||
|
void setCharsets(String charset, String wideCharset, RequestMonitor rm);
|
||||||
}
|
}
|
|
@ -16,6 +16,7 @@
|
||||||
* Abeer Bagul - Support for -exec-arguments (bug 337687)
|
* Abeer Bagul - Support for -exec-arguments (bug 337687)
|
||||||
* Marc Khouzam (Ericsson) - New methods for new MIDataDisassemble (Bug 357073)
|
* Marc Khouzam (Ericsson) - New methods for new MIDataDisassemble (Bug 357073)
|
||||||
* Marc Khouzam (Ericsson) - New method for new MIGDBSetPythonPrintStack (Bug 367788)
|
* Marc Khouzam (Ericsson) - New method for new MIGDBSetPythonPrintStack (Bug 367788)
|
||||||
|
* Mathias Kunter - New methods for handling different charsets (Bug 370462)
|
||||||
*******************************************************************************/
|
*******************************************************************************/
|
||||||
|
|
||||||
package org.eclipse.cdt.dsf.mi.service.command;
|
package org.eclipse.cdt.dsf.mi.service.command;
|
||||||
|
@ -98,15 +99,20 @@ import org.eclipse.cdt.dsf.mi.service.command.commands.MIGDBSet;
|
||||||
import org.eclipse.cdt.dsf.mi.service.command.commands.MIGDBSetArgs;
|
import org.eclipse.cdt.dsf.mi.service.command.commands.MIGDBSetArgs;
|
||||||
import org.eclipse.cdt.dsf.mi.service.command.commands.MIGDBSetAutoSolib;
|
import org.eclipse.cdt.dsf.mi.service.command.commands.MIGDBSetAutoSolib;
|
||||||
import org.eclipse.cdt.dsf.mi.service.command.commands.MIGDBSetBreakpointPending;
|
import org.eclipse.cdt.dsf.mi.service.command.commands.MIGDBSetBreakpointPending;
|
||||||
|
import org.eclipse.cdt.dsf.mi.service.command.commands.MIGDBSetCharset;
|
||||||
import org.eclipse.cdt.dsf.mi.service.command.commands.MIGDBSetDetachOnFork;
|
import org.eclipse.cdt.dsf.mi.service.command.commands.MIGDBSetDetachOnFork;
|
||||||
import org.eclipse.cdt.dsf.mi.service.command.commands.MIGDBSetEnv;
|
import org.eclipse.cdt.dsf.mi.service.command.commands.MIGDBSetEnv;
|
||||||
|
import org.eclipse.cdt.dsf.mi.service.command.commands.MIGDBSetHostCharset;
|
||||||
import org.eclipse.cdt.dsf.mi.service.command.commands.MIGDBSetNonStop;
|
import org.eclipse.cdt.dsf.mi.service.command.commands.MIGDBSetNonStop;
|
||||||
import org.eclipse.cdt.dsf.mi.service.command.commands.MIGDBSetPagination;
|
import org.eclipse.cdt.dsf.mi.service.command.commands.MIGDBSetPagination;
|
||||||
|
import org.eclipse.cdt.dsf.mi.service.command.commands.MIGDBSetPrintSevenbitStrings;
|
||||||
import org.eclipse.cdt.dsf.mi.service.command.commands.MIGDBSetPythonPrintStack;
|
import org.eclipse.cdt.dsf.mi.service.command.commands.MIGDBSetPythonPrintStack;
|
||||||
import org.eclipse.cdt.dsf.mi.service.command.commands.MIGDBSetSchedulerLocking;
|
import org.eclipse.cdt.dsf.mi.service.command.commands.MIGDBSetSchedulerLocking;
|
||||||
import org.eclipse.cdt.dsf.mi.service.command.commands.MIGDBSetSolibAbsolutePrefix;
|
import org.eclipse.cdt.dsf.mi.service.command.commands.MIGDBSetSolibAbsolutePrefix;
|
||||||
import org.eclipse.cdt.dsf.mi.service.command.commands.MIGDBSetSolibSearchPath;
|
import org.eclipse.cdt.dsf.mi.service.command.commands.MIGDBSetSolibSearchPath;
|
||||||
import org.eclipse.cdt.dsf.mi.service.command.commands.MIGDBSetTargetAsync;
|
import org.eclipse.cdt.dsf.mi.service.command.commands.MIGDBSetTargetAsync;
|
||||||
|
import org.eclipse.cdt.dsf.mi.service.command.commands.MIGDBSetTargetCharset;
|
||||||
|
import org.eclipse.cdt.dsf.mi.service.command.commands.MIGDBSetTargetWideCharset;
|
||||||
import org.eclipse.cdt.dsf.mi.service.command.commands.MIGDBShowExitCode;
|
import org.eclipse.cdt.dsf.mi.service.command.commands.MIGDBShowExitCode;
|
||||||
import org.eclipse.cdt.dsf.mi.service.command.commands.MIInferiorTTYSet;
|
import org.eclipse.cdt.dsf.mi.service.command.commands.MIInferiorTTYSet;
|
||||||
import org.eclipse.cdt.dsf.mi.service.command.commands.MIInterpreterExec;
|
import org.eclipse.cdt.dsf.mi.service.command.commands.MIInterpreterExec;
|
||||||
|
@ -644,6 +650,26 @@ public class CommandFactory {
|
||||||
}
|
}
|
||||||
|
|
||||||
/** @since 4.0 */
|
/** @since 4.0 */
|
||||||
|
public ICommand<MIInfo> createMIGDBSetPrintSevenbitStrings(ICommandControlDMContext ctx, boolean enable) {
|
||||||
|
return new MIGDBSetPrintSevenbitStrings(ctx, enable);
|
||||||
|
}
|
||||||
|
|
||||||
|
public ICommand<MIInfo> createMIGDBSetCharset(ICommandControlDMContext ctx, String charset) {
|
||||||
|
return new MIGDBSetCharset(ctx, charset);
|
||||||
|
}
|
||||||
|
|
||||||
|
public ICommand<MIInfo> createMIGDBSetHostCharset(ICommandControlDMContext ctx, String hostCharset) {
|
||||||
|
return new MIGDBSetHostCharset(ctx, hostCharset);
|
||||||
|
}
|
||||||
|
|
||||||
|
public ICommand<MIInfo> createMIGDBSetTargetCharset(ICommandControlDMContext ctx, String targetCharset) {
|
||||||
|
return new MIGDBSetTargetCharset(ctx, targetCharset);
|
||||||
|
}
|
||||||
|
|
||||||
|
public ICommand<MIInfo> createMIGDBSetTargetWideCharset(ICommandControlDMContext ctx, String targetWideCharset) {
|
||||||
|
return new MIGDBSetTargetWideCharset(ctx, targetWideCharset);
|
||||||
|
}
|
||||||
|
|
||||||
public ICommand<MIInfo> createMIGDBSetSolibAbsolutePrefix(ICommandControlDMContext ctx, String prefix) {
|
public ICommand<MIInfo> createMIGDBSetSolibAbsolutePrefix(ICommandControlDMContext ctx, String prefix) {
|
||||||
return new MIGDBSetSolibAbsolutePrefix(ctx, prefix);
|
return new MIGDBSetSolibAbsolutePrefix(ctx, prefix);
|
||||||
}
|
}
|
||||||
|
|
|
@ -0,0 +1,30 @@
|
||||||
|
/*******************************************************************************
|
||||||
|
* Copyright (c) 2012 Mathias Kunter 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:
|
||||||
|
* Mathias Kunter - Initial API and implementation
|
||||||
|
*******************************************************************************/
|
||||||
|
|
||||||
|
package org.eclipse.cdt.dsf.mi.service.command.commands;
|
||||||
|
|
||||||
|
import org.eclipse.cdt.dsf.debug.service.command.ICommandControlService.ICommandControlDMContext;
|
||||||
|
|
||||||
|
/**
|
||||||
|
*
|
||||||
|
* -gdb-set charset CHARSET
|
||||||
|
*
|
||||||
|
* Sets both the current host and target charset to CHARSET. The host charset is the
|
||||||
|
* charset used by gdb. The target charset is the charset used by the char type of the
|
||||||
|
* inferior program.
|
||||||
|
*
|
||||||
|
* @since 4.0
|
||||||
|
*/
|
||||||
|
public class MIGDBSetCharset extends MIGDBSet {
|
||||||
|
public MIGDBSetCharset(ICommandControlDMContext ctx, String charset) {
|
||||||
|
super(ctx, new String[] {"charset", charset}); //$NON-NLS-1$
|
||||||
|
}
|
||||||
|
}
|
|
@ -0,0 +1,28 @@
|
||||||
|
/*******************************************************************************
|
||||||
|
* Copyright (c) 2012 Mathias Kunter 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:
|
||||||
|
* Mathias Kunter - Initial API and implementation
|
||||||
|
*******************************************************************************/
|
||||||
|
|
||||||
|
package org.eclipse.cdt.dsf.mi.service.command.commands;
|
||||||
|
|
||||||
|
import org.eclipse.cdt.dsf.debug.service.command.ICommandControlService.ICommandControlDMContext;
|
||||||
|
|
||||||
|
/**
|
||||||
|
*
|
||||||
|
* -gdb-set host-charset CHARSET
|
||||||
|
*
|
||||||
|
* Sets the current host charset to CHARSET. The host charset is the charset used by gdb.
|
||||||
|
*
|
||||||
|
* @since 4.0
|
||||||
|
*/
|
||||||
|
public class MIGDBSetHostCharset extends MIGDBSet {
|
||||||
|
public MIGDBSetHostCharset(ICommandControlDMContext ctx, String hostCharset) {
|
||||||
|
super(ctx, new String[] {"host-charset", hostCharset}); //$NON-NLS-1$
|
||||||
|
}
|
||||||
|
}
|
|
@ -0,0 +1,29 @@
|
||||||
|
/*******************************************************************************
|
||||||
|
* Copyright (c) 2012 Mathias Kunter 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:
|
||||||
|
* Mathias Kunter - Initial API and implementation
|
||||||
|
*******************************************************************************/
|
||||||
|
|
||||||
|
package org.eclipse.cdt.dsf.mi.service.command.commands;
|
||||||
|
|
||||||
|
import org.eclipse.cdt.dsf.debug.service.command.ICommandControlService.ICommandControlDMContext;
|
||||||
|
|
||||||
|
/**
|
||||||
|
*
|
||||||
|
* -gdb-set print sevenbit-strings [on | off]
|
||||||
|
*
|
||||||
|
* When on, gdb displays any eight-bit characters (in strings or character values) using
|
||||||
|
* the octal escape notation \nnn. When off, prints full eight-bit characters.
|
||||||
|
*
|
||||||
|
* @since 4.0
|
||||||
|
*/
|
||||||
|
public class MIGDBSetPrintSevenbitStrings extends MIGDBSet {
|
||||||
|
public MIGDBSetPrintSevenbitStrings(ICommandControlDMContext ctx, boolean enable) {
|
||||||
|
super(ctx, new String[] {"print", "sevenbit-strings", enable ? "on" : "off"}); //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$ //$NON-NLS-4$
|
||||||
|
}
|
||||||
|
}
|
|
@ -0,0 +1,29 @@
|
||||||
|
/*******************************************************************************
|
||||||
|
* Copyright (c) 2012 Mathias Kunter 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:
|
||||||
|
* Mathias Kunter - Initial API and implementation
|
||||||
|
*******************************************************************************/
|
||||||
|
|
||||||
|
package org.eclipse.cdt.dsf.mi.service.command.commands;
|
||||||
|
|
||||||
|
import org.eclipse.cdt.dsf.debug.service.command.ICommandControlService.ICommandControlDMContext;
|
||||||
|
|
||||||
|
/**
|
||||||
|
*
|
||||||
|
* -gdb-set target-charset CHARSET
|
||||||
|
*
|
||||||
|
* Sets the current target charset to CHARSET. The target charset is the charset used
|
||||||
|
* by the char type of the inferior program.
|
||||||
|
*
|
||||||
|
* @since 4.0
|
||||||
|
*/
|
||||||
|
public class MIGDBSetTargetCharset extends MIGDBSet {
|
||||||
|
public MIGDBSetTargetCharset(ICommandControlDMContext ctx, String targetCharset) {
|
||||||
|
super(ctx, new String[] {"target-charset", targetCharset}); //$NON-NLS-1$
|
||||||
|
}
|
||||||
|
}
|
|
@ -0,0 +1,31 @@
|
||||||
|
/*******************************************************************************
|
||||||
|
* Copyright (c) 2012 Mathias Kunter 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:
|
||||||
|
* Mathias Kunter - Initial API and implementation
|
||||||
|
*******************************************************************************/
|
||||||
|
|
||||||
|
package org.eclipse.cdt.dsf.mi.service.command.commands;
|
||||||
|
|
||||||
|
import org.eclipse.cdt.dsf.debug.service.command.ICommandControlService.ICommandControlDMContext;
|
||||||
|
|
||||||
|
/**
|
||||||
|
*
|
||||||
|
* -gdb-set target-wide-charset CHARSET
|
||||||
|
*
|
||||||
|
* Sets the current target wide charset to CHARSET. The target wide charset is the charset
|
||||||
|
* used by the wchar_t type of the inferior program.
|
||||||
|
*
|
||||||
|
* Available with gdb 7.0
|
||||||
|
*
|
||||||
|
* @since 4.0
|
||||||
|
*/
|
||||||
|
public class MIGDBSetTargetWideCharset extends MIGDBSet {
|
||||||
|
public MIGDBSetTargetWideCharset(ICommandControlDMContext ctx, String targetWideCharset) {
|
||||||
|
super(ctx, new String[] {"target-wide-charset", targetWideCharset}); //$NON-NLS-1$
|
||||||
|
}
|
||||||
|
}
|
|
@ -1,5 +1,5 @@
|
||||||
/*******************************************************************************
|
/*******************************************************************************
|
||||||
* Copyright (c) 2009, 2010 Wind River Systems and others.
|
* Copyright (c) 2009, 2012 Wind River Systems and others.
|
||||||
* All rights reserved. This program and the accompanying materials
|
* All rights reserved. This program and the accompanying materials
|
||||||
* are made available under the terms of the Eclipse Public License v1.0
|
* are made available under the terms of the Eclipse Public License v1.0
|
||||||
* which accompanies this distribution, and is available at
|
* which accompanies this distribution, and is available at
|
||||||
|
@ -7,6 +7,7 @@
|
||||||
*
|
*
|
||||||
* Contributors:
|
* Contributors:
|
||||||
* Wind River Systems - initial API and implementation
|
* Wind River Systems - initial API and implementation
|
||||||
|
* Mathias Kunter - Use CDI number format defaults (bug 370462)
|
||||||
*******************************************************************************/
|
*******************************************************************************/
|
||||||
package org.eclipse.cdt.dsf.debug.ui.viewmodel.numberformat;
|
package org.eclipse.cdt.dsf.debug.ui.viewmodel.numberformat;
|
||||||
|
|
||||||
|
@ -16,6 +17,9 @@ import java.util.Iterator;
|
||||||
import java.util.Map;
|
import java.util.Map;
|
||||||
import java.util.TreeMap;
|
import java.util.TreeMap;
|
||||||
|
|
||||||
|
import org.eclipse.cdt.debug.core.CDebugCorePlugin;
|
||||||
|
import org.eclipse.cdt.debug.core.ICDebugConstants;
|
||||||
|
import org.eclipse.cdt.debug.core.cdi.ICDIFormat;
|
||||||
import org.eclipse.cdt.dsf.concurrent.ConfinedToDsfExecutor;
|
import org.eclipse.cdt.dsf.concurrent.ConfinedToDsfExecutor;
|
||||||
import org.eclipse.cdt.dsf.concurrent.CountingRequestMonitor;
|
import org.eclipse.cdt.dsf.concurrent.CountingRequestMonitor;
|
||||||
import org.eclipse.cdt.dsf.concurrent.IDsfStatusConstants;
|
import org.eclipse.cdt.dsf.concurrent.IDsfStatusConstants;
|
||||||
|
@ -32,6 +36,7 @@ import org.eclipse.cdt.dsf.ui.concurrent.ViewerDataRequestMonitor;
|
||||||
import org.eclipse.cdt.dsf.ui.viewmodel.datamodel.IDMVMContext;
|
import org.eclipse.cdt.dsf.ui.viewmodel.datamodel.IDMVMContext;
|
||||||
import org.eclipse.cdt.dsf.ui.viewmodel.properties.IPropertiesUpdate;
|
import org.eclipse.cdt.dsf.ui.viewmodel.properties.IPropertiesUpdate;
|
||||||
import org.eclipse.debug.internal.ui.viewers.model.provisional.IPresentationContext;
|
import org.eclipse.debug.internal.ui.viewers.model.provisional.IPresentationContext;
|
||||||
|
import org.eclipse.debug.ui.IDebugUIConstants;
|
||||||
|
|
||||||
import com.ibm.icu.text.MessageFormat;
|
import com.ibm.icu.text.MessageFormat;
|
||||||
|
|
||||||
|
@ -204,7 +209,33 @@ public class FormattedValueVMUtil {
|
||||||
if ( prop != null ) {
|
if ( prop != null ) {
|
||||||
return (String) prop;
|
return (String) prop;
|
||||||
}
|
}
|
||||||
return IFormattedValues.NATURAL_FORMAT;
|
|
||||||
|
// Get the CDI number format from the preferences.
|
||||||
|
int formatID;
|
||||||
|
if (context.getId() == IDebugUIConstants.ID_VARIABLE_VIEW) {
|
||||||
|
formatID = CDebugCorePlugin.getDefault().getPluginPreferences().getInt( ICDebugConstants.PREF_DEFAULT_VARIABLE_FORMAT );
|
||||||
|
} else if (context.getId() == IDebugUIConstants.ID_EXPRESSION_VIEW) {
|
||||||
|
formatID = CDebugCorePlugin.getDefault().getPluginPreferences().getInt( ICDebugConstants.PREF_DEFAULT_EXPRESSION_FORMAT );
|
||||||
|
} else if (context.getId() == IDebugUIConstants.ID_REGISTER_VIEW) {
|
||||||
|
formatID = CDebugCorePlugin.getDefault().getPluginPreferences().getInt( ICDebugConstants.PREF_DEFAULT_REGISTER_FORMAT );
|
||||||
|
} else {
|
||||||
|
// Use the default natural format.
|
||||||
|
formatID = ICDIFormat.NATURAL;
|
||||||
|
}
|
||||||
|
|
||||||
|
// Map the CDI number format to the DSF number format.
|
||||||
|
if (formatID == ICDIFormat.HEXADECIMAL) {
|
||||||
|
return IFormattedValues.HEX_FORMAT;
|
||||||
|
} else if (formatID == ICDIFormat.DECIMAL) {
|
||||||
|
return IFormattedValues.DECIMAL_FORMAT;
|
||||||
|
} else if (formatID == ICDIFormat.OCTAL) {
|
||||||
|
return IFormattedValues.OCTAL_FORMAT;
|
||||||
|
} else if (formatID == ICDIFormat.BINARY) {
|
||||||
|
return IFormattedValues.BINARY_FORMAT;
|
||||||
|
} else {
|
||||||
|
// Everything else is mapped to the default natural format.
|
||||||
|
return IFormattedValues.NATURAL_FORMAT;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
|
@ -1,5 +1,5 @@
|
||||||
/*******************************************************************************
|
/*******************************************************************************
|
||||||
* Copyright (c) 2006, 2010 Wind River Systems and others.
|
* Copyright (c) 2006, 2012 Wind River Systems and others.
|
||||||
* All rights reserved. This program and the accompanying materials
|
* All rights reserved. This program and the accompanying materials
|
||||||
* are made available under the terms of the Eclipse Public License v1.0
|
* are made available under the terms of the Eclipse Public License v1.0
|
||||||
* which accompanies this distribution, and is available at
|
* which accompanies this distribution, and is available at
|
||||||
|
@ -8,6 +8,7 @@
|
||||||
* Contributors:
|
* Contributors:
|
||||||
* Wind River Systems - initial API and implementation
|
* Wind River Systems - initial API and implementation
|
||||||
* Ericsson - Update for GDB/MI
|
* Ericsson - Update for GDB/MI
|
||||||
|
* Mathias Kunter - Support for octal number format (bug 370462)
|
||||||
*******************************************************************************/
|
*******************************************************************************/
|
||||||
package org.eclipse.cdt.dsf.debug.service;
|
package org.eclipse.cdt.dsf.debug.service;
|
||||||
|
|
||||||
|
@ -107,6 +108,7 @@ public interface IExpressions extends IFormattedValues {
|
||||||
@Override public boolean isMax() { return false; }
|
@Override public boolean isMax() { return false; }
|
||||||
@Override public String toString(int radix) { return "INVALID"; }
|
@Override public String toString(int radix) { return "INVALID"; }
|
||||||
@Override public String toHexAddressString() { return toString(); }
|
@Override public String toHexAddressString() { return toString(); }
|
||||||
|
@Override public String toOctalAddressString() { return toString(); }
|
||||||
@Override public String toBinaryAddressString() { return toString(); }
|
@Override public String toBinaryAddressString() { return toString(); }
|
||||||
@Override public int getCharsNum() { return 0; }
|
@Override public int getCharsNum() { return 0; }
|
||||||
@Override public int getSize() { return 0; }
|
@Override public int getSize() { return 0; }
|
||||||
|
|
Loading…
Add table
Reference in a new issue