blob: 3ea111f805568393014e65f9ebaa1298747eb234 [file] [log] [blame]
/*******************************************************************************
* Copyright (c) 2015 Intel Corporation and others.
*
* This program and the accompanying materials
* are made available under the terms of the Eclipse Public License 2.0
* which accompanies this distribution, and is available at
* https://www.eclipse.org/legal/epl-2.0/
*
* SPDX-License-Identifier: EPL-2.0
*
* Contributors:
* Intel Corporation - Added Reverse Debugging BTrace support
*******************************************************************************/
package org.eclipse.cdt.dsf.mi.service.command.output;
import org.eclipse.cdt.debug.core.model.IChangeReverseMethodHandler.ReverseDebugMethod;
/**
* 'info record' returns the selected reverse trace method.
*
* sample output:
*
* (gdb) info record
* ~ Active record target: record-btrace
* ~ Recording format: Branch Trace Store.
* ~ Buffer size: 64kB.
* ~ Recorded 0 instructions in 0 functions (0 gaps) for thread 1 (process 24645).
*
* @since 5.0
*/
public class CLIInfoRecordInfo extends MIInfo {
private ReverseDebugMethod fReverseMethod;
public CLIInfoRecordInfo(MIOutput record) {
super(record);
parse();
}
protected void parse() {
if (isDone()) {
MIOutput out = getMIOutput();
MIOOBRecord[] records = out.getMIOOBRecords();
StringBuilder builder = new StringBuilder();
for (MIOOBRecord rec : records) {
if (rec instanceof MIConsoleStreamOutput) {
MIStreamRecord o = (MIStreamRecord) rec;
builder.append(o.getString());
}
}
parseReverseMethod(builder.toString());
}
}
protected void parseReverseMethod(String output) {
if (output.contains("Processor")) { //$NON-NLS-1$
fReverseMethod = ReverseDebugMethod.PROCESSOR_TRACE;
} else if (output.contains("Branch")) { //$NON-NLS-1$
fReverseMethod = ReverseDebugMethod.BRANCH_TRACE;
} else if (output.contains("full")) { //$NON-NLS-1$
fReverseMethod = ReverseDebugMethod.SOFTWARE;
} else {
fReverseMethod = ReverseDebugMethod.OFF;
}
}
public ReverseDebugMethod getReverseMethod() {
return fReverseMethod;
}
}