mirror of
https://github.com/eclipse-cdt/cdt
synced 2025-03-28 14:56:28 +01:00
more implementation.
This commit is contained in:
parent
4f4deeebe7
commit
d5f1ab4560
25 changed files with 507 additions and 142 deletions
36
debug/org.eclipse.cdt.debug.mi.core/design.txt
Normal file
36
debug/org.eclipse.cdt.debug.mi.core/design.txt
Normal file
|
@ -0,0 +1,36 @@
|
|||
<html>
|
||||
<head>
|
||||
</head>
|
||||
<body>
|
||||
<pre>
|
||||
Note this is an interim the document and subject to changes.
|
||||
|
||||
|
||||
****
|
||||
This MI implementation is base on GDB/MI 5.2.1.
|
||||
|
||||
To create an MISession an InputStream and OutputStream are
|
||||
needed(assuming this the pipe connected to gdb).
|
||||
MISession MIPlugin.createSession(InputStream, OutputStream);
|
||||
During initialisation of the session(MISession) two threads
|
||||
are created(TxThread, RxThread). MI Commands created via the CommandFactory
|
||||
are added to the TxQueue, the TxThread will then wake up
|
||||
generate a token(ID) for the command and send it the pipe(gdb), after
|
||||
transmission the command is then move to the RxQueue waiting for the
|
||||
result(MIResultRecord).
|
||||
|
||||
Any responses will wake the RxThread, the thread would parse
|
||||
the response constructing an MIOutput then search the RxQueue
|
||||
for any commands with the same token waking any thread waiting
|
||||
for a synchronous response(MIResultRecord). Any out-of-band
|
||||
responses(MIOOBRecord) are dispatch, clients interested in those
|
||||
notifications should register to MISession.
|
||||
|
||||
|
||||
****
|
||||
MI <==> CDI Adapters
|
||||
|
||||
To do.
|
||||
</pre>
|
||||
</body>
|
||||
</html>
|
|
@ -0,0 +1,90 @@
|
|||
package org.eclipse.cdt.debug.mi.core;
|
||||
|
||||
import org.eclipse.cdt.debug.mi.core.command.MIBreakAfter;
|
||||
import org.eclipse.cdt.debug.mi.core.command.MIBreakCondition;
|
||||
import org.eclipse.cdt.debug.mi.core.command.MIBreakDelete;
|
||||
import org.eclipse.cdt.debug.mi.core.command.MIBreakDisable;
|
||||
import org.eclipse.cdt.debug.mi.core.command.MIBreakEnable;
|
||||
import org.eclipse.cdt.debug.mi.core.command.MIBreakInsert;
|
||||
import org.eclipse.cdt.debug.mi.core.command.MIBreakList;
|
||||
import org.eclipse.cdt.debug.mi.core.command.MIBreakWatch;
|
||||
import org.eclipse.cdt.debug.mi.core.command.MIDataDisassemble;
|
||||
import org.eclipse.cdt.debug.mi.core.command.MIDataEvaluateExpression;
|
||||
import org.eclipse.cdt.debug.mi.core.command.MIDataListChangedRegisters;
|
||||
import org.eclipse.cdt.debug.mi.core.command.MIDataListRegisterNames;
|
||||
import org.eclipse.cdt.debug.mi.core.command.MIDataListRegisterValues;
|
||||
import org.eclipse.cdt.debug.mi.core.command.MIDataReadMemory;
|
||||
|
||||
/**
|
||||
*
|
||||
*/
|
||||
public class CommandFactory {
|
||||
|
||||
public MIBreakAfter createMIBreakAfter(int brknum, int count) {
|
||||
return new MIBreakAfter(brknum, count);
|
||||
}
|
||||
|
||||
public MIBreakCondition createMIBreakCondition (int brknum, String expr) {
|
||||
return new MIBreakCondition(brknum, expr);
|
||||
}
|
||||
|
||||
public MIBreakDelete createMIBreakDelete (int[] brknum) {
|
||||
return new MIBreakDelete(brknum);
|
||||
}
|
||||
|
||||
public MIBreakDisable createMIBreakDisable(int[] brknum) {
|
||||
return new MIBreakDisable(brknum);
|
||||
}
|
||||
|
||||
public MIBreakEnable createMIBreakEnable(int[] brknum) {
|
||||
return new MIBreakEnable(brknum);
|
||||
}
|
||||
|
||||
public MIBreakInsert createMIBreakInsert(boolean isTemporary, boolean isHardware,
|
||||
String condition, int ignoreCount, String line) {
|
||||
return new MIBreakInsert(isTemporary, isHardware, condition, ignoreCount, line);
|
||||
}
|
||||
|
||||
public MIBreakInsert createMIBreakInsert(String regex) {
|
||||
return new MIBreakInsert(regex);
|
||||
}
|
||||
|
||||
public MIBreakList createMIBreakList() {
|
||||
return new MIBreakList();
|
||||
}
|
||||
|
||||
public MIBreakWatch createMIBreakWatch(boolean access, boolean read, String expression) {
|
||||
return new MIBreakWatch(access, read, expression);
|
||||
}
|
||||
|
||||
public MIDataDisassemble createMIDataDisassemble(String start, String end, boolean mixed) {
|
||||
return new MIDataDisassemble(start, end, mixed);
|
||||
}
|
||||
|
||||
public MIDataDisassemble createMIDataDisassemble(String file, int linenum, int lines, boolean mixed) {
|
||||
return new MIDataDisassemble(file, linenum, lines, mixed);
|
||||
}
|
||||
|
||||
public MIDataEvaluateExpression createMIDataEvaluateExpression(String expression) {
|
||||
return new MIDataEvaluateExpression(expression);
|
||||
}
|
||||
|
||||
public MIDataListChangedRegisters createMIDataListChangedRegisters() {
|
||||
return new MIDataListChangedRegisters();
|
||||
}
|
||||
|
||||
public MIDataListRegisterNames createMIDataListRegisterNames(int[] regno) {
|
||||
return new MIDataListRegisterNames(regno);
|
||||
}
|
||||
|
||||
public MIDataListRegisterValues createMIDataLIstRegisterValues(int fmt, int[] regno) {
|
||||
return new MIDataListRegisterValues(fmt, regno);
|
||||
}
|
||||
|
||||
public MIDataReadMemory createMIDataReadMemory(int offset, String address,
|
||||
String wordFormat, int wordSize,
|
||||
int rows, int cols, Character asChar) {
|
||||
return new MIDataReadMemory(offset, address, wordFormat, wordSize,
|
||||
rows, cols, asChar);
|
||||
}
|
||||
}
|
|
@ -0,0 +1,30 @@
|
|||
package org.eclipse.cdt.debug.mi.core;
|
||||
|
||||
import org.eclipse.cdt.debug.mi.core.output.MIResultRecord;
|
||||
|
||||
/**
|
||||
*/
|
||||
public class MIBreakListInfo extends MIInfo {
|
||||
|
||||
public class BreakPoint {
|
||||
int number;
|
||||
String type;
|
||||
String disposition;
|
||||
boolean enabled;
|
||||
int address;
|
||||
String what;
|
||||
int times;
|
||||
}
|
||||
|
||||
public MIBreakListInfo(MIResultRecord rr) {
|
||||
super(rr);
|
||||
}
|
||||
|
||||
int getCount() {
|
||||
return 0;
|
||||
}
|
||||
|
||||
BreakPoint[] getBreakPoints() {
|
||||
return null;
|
||||
}
|
||||
}
|
|
@ -0,0 +1,20 @@
|
|||
package org.eclipse.cdt.debug.mi.core;
|
||||
|
||||
import org.eclipse.cdt.debug.mi.core.output.MIResultRecord;
|
||||
|
||||
/**
|
||||
*/
|
||||
public class MIBreakWatchInfo extends MIInfo {
|
||||
|
||||
public MIBreakWatchInfo(MIResultRecord rr) {
|
||||
super(rr);
|
||||
}
|
||||
|
||||
public int getNumber () {
|
||||
return 0;
|
||||
}
|
||||
|
||||
public String getExpression() {
|
||||
return null;
|
||||
}
|
||||
}
|
|
@ -0,0 +1,36 @@
|
|||
package org.eclipse.cdt.debug.mi.core;
|
||||
|
||||
import org.eclipse.cdt.debug.mi.core.output.MIResultRecord;
|
||||
|
||||
/**
|
||||
*/
|
||||
public class MIBreakpointHitInfo extends MIInfo {
|
||||
|
||||
public MIBreakpointHitInfo(MIResultRecord record) {
|
||||
super(record);
|
||||
}
|
||||
|
||||
int getBreakNumber() {
|
||||
return 0;
|
||||
}
|
||||
|
||||
String getFunction() {
|
||||
return null;
|
||||
}
|
||||
|
||||
int getAddress() {
|
||||
return 0;
|
||||
}
|
||||
|
||||
String getFileName() {
|
||||
return null;
|
||||
}
|
||||
|
||||
int getLineNumber() {
|
||||
return 0;
|
||||
}
|
||||
|
||||
String[] getArguments () {
|
||||
return null;
|
||||
}
|
||||
}
|
|
@ -1,34 +1,32 @@
|
|||
package org.eclipse.cdt.debug.mi.core;
|
||||
|
||||
import org.eclipse.cdt.debug.mi.core.output.MIResultRecord;
|
||||
|
||||
/**
|
||||
* @author alain
|
||||
*
|
||||
*/
|
||||
public class MIBreakpointInfo extends MIInfo {
|
||||
|
||||
int line, number;
|
||||
String function, file;
|
||||
|
||||
public MIBreakpointInfo(int no, String func, String filename, int lineno) {
|
||||
number = no;
|
||||
function = func;
|
||||
file = filename;
|
||||
line = lineno;
|
||||
public MIBreakpointInfo(MIResultRecord record) {
|
||||
super(record);
|
||||
}
|
||||
|
||||
public int getNumber() {
|
||||
return number;
|
||||
int getBreakNumber() {
|
||||
return 0;
|
||||
}
|
||||
|
||||
public String getFunction() {
|
||||
return function;
|
||||
String getFunction() {
|
||||
return null;
|
||||
}
|
||||
|
||||
public String getFile() {
|
||||
return file;
|
||||
int getAddress() {
|
||||
return 0;
|
||||
}
|
||||
|
||||
public int getLineNumber() {
|
||||
return line;
|
||||
String getFileName() {
|
||||
return null;
|
||||
}
|
||||
|
||||
int getLineNumber() {
|
||||
return 0;
|
||||
}
|
||||
}
|
||||
|
|
|
@ -0,0 +1,29 @@
|
|||
package org.eclipse.cdt.debug.mi.core;
|
||||
|
||||
import org.eclipse.cdt.debug.mi.core.output.MIResultRecord;
|
||||
|
||||
/**
|
||||
*/
|
||||
public class MIDataDisassembleInfo extends MIInfo {
|
||||
|
||||
public class ASM {
|
||||
int address;
|
||||
String function;
|
||||
int offset;
|
||||
String instruction;
|
||||
int line;
|
||||
String file;
|
||||
}
|
||||
|
||||
public MIDataDisassembleInfo(MIResultRecord rr) {
|
||||
super(rr);
|
||||
}
|
||||
|
||||
public int getCount() {
|
||||
return 0;
|
||||
}
|
||||
|
||||
public ASM[] getData() {
|
||||
return null;
|
||||
}
|
||||
}
|
|
@ -0,0 +1,16 @@
|
|||
package org.eclipse.cdt.debug.mi.core;
|
||||
|
||||
import org.eclipse.cdt.debug.mi.core.output.MIResultRecord;
|
||||
|
||||
/**
|
||||
*/
|
||||
public class MIDataEvaluateExpressionInfo extends MIInfo{
|
||||
|
||||
public MIDataEvaluateExpressionInfo(MIResultRecord rr) {
|
||||
super(rr);
|
||||
}
|
||||
|
||||
public String getValue() {
|
||||
return null;
|
||||
}
|
||||
}
|
|
@ -0,0 +1,16 @@
|
|||
package org.eclipse.cdt.debug.mi.core;
|
||||
|
||||
import org.eclipse.cdt.debug.mi.core.output.MIResultRecord;
|
||||
|
||||
/**
|
||||
*/
|
||||
public class MIDataListChangedRegistersInfo extends MIInfo {
|
||||
|
||||
public MIDataListChangedRegistersInfo(MIResultRecord rr) {
|
||||
super(rr);
|
||||
}
|
||||
|
||||
int [] getRegisters () {
|
||||
return null;
|
||||
}
|
||||
}
|
|
@ -0,0 +1,21 @@
|
|||
package org.eclipse.cdt.debug.mi.core;
|
||||
|
||||
import org.eclipse.cdt.debug.mi.core.output.MIResultRecord;
|
||||
|
||||
/**
|
||||
*/
|
||||
public class MIDataListRegisterValuesInfo extends MIInfo {
|
||||
|
||||
public class Register {
|
||||
int number;
|
||||
int value;
|
||||
}
|
||||
|
||||
public MIDataListRegisterValuesInfo(MIResultRecord rr) {
|
||||
super(rr);
|
||||
}
|
||||
|
||||
Register [] getRegistersValues () {
|
||||
return null;
|
||||
}
|
||||
}
|
|
@ -0,0 +1,16 @@
|
|||
package org.eclipse.cdt.debug.mi.core;
|
||||
|
||||
import org.eclipse.cdt.debug.mi.core.output.MIResultRecord;
|
||||
|
||||
/**
|
||||
*/
|
||||
public class MIDataListRegistersNamesInfo extends MIInfo {
|
||||
|
||||
public MIDataListRegistersNamesInfo(MIResultRecord rr) {
|
||||
super(rr);
|
||||
}
|
||||
|
||||
String[] getRegistersNames () {
|
||||
return null;
|
||||
}
|
||||
}
|
|
@ -0,0 +1,50 @@
|
|||
package org.eclipse.cdt.debug.mi.core;
|
||||
|
||||
import org.eclipse.cdt.debug.mi.core.output.MIResultRecord;
|
||||
|
||||
/**
|
||||
*/
|
||||
public class MIDataReadMemoryInfo extends MIInfo {
|
||||
|
||||
public class Memory {
|
||||
int addr;
|
||||
int [] data;
|
||||
String ascii;
|
||||
}
|
||||
|
||||
public MIDataReadMemoryInfo(MIResultRecord rr) {
|
||||
super(rr);
|
||||
}
|
||||
|
||||
int getAddress() {
|
||||
return 0;
|
||||
}
|
||||
|
||||
int getBytesNumber() {
|
||||
return 0;
|
||||
}
|
||||
|
||||
int getTotalBytes() {
|
||||
return 0;
|
||||
}
|
||||
|
||||
int getNextRow() {
|
||||
return 0;
|
||||
}
|
||||
|
||||
int getPreviousRow() {
|
||||
return 0;
|
||||
}
|
||||
|
||||
int getNextPage() {
|
||||
return 0;
|
||||
}
|
||||
|
||||
int getPreviousPage() {
|
||||
return 0;
|
||||
}
|
||||
|
||||
Memory[] getMemories() {
|
||||
return null;
|
||||
}
|
||||
}
|
|
@ -12,17 +12,14 @@ import org.eclipse.core.runtime.IStatus;
|
|||
/**
|
||||
*
|
||||
* A checked exception representing a failure.
|
||||
*
|
||||
* @author Mikhail Khodjaiants
|
||||
* @since Jul 11, 2002
|
||||
*
|
||||
*/
|
||||
public class MIException extends CoreException
|
||||
{
|
||||
/**
|
||||
* Constructor for MIException.
|
||||
*/
|
||||
public MIException( IStatus status )
|
||||
{
|
||||
super( status );
|
||||
public MIException(IStatus status) {
|
||||
super(status);
|
||||
}
|
||||
}
|
||||
|
|
|
@ -1,12 +1,18 @@
|
|||
package org.eclipse.cdt.debug.mi.core;
|
||||
|
||||
import org.eclipse.cdt.debug.mi.core.output.MIResultRecord;
|
||||
|
||||
/**
|
||||
* @author alain
|
||||
*
|
||||
* To change this generated comment edit the template variable "typecomment":
|
||||
* Window>Preferences>Java>Templates.
|
||||
* To enable and disable the creation of type comments go to
|
||||
* Window>Preferences>Java>Code Generation.
|
||||
*/
|
||||
public class MIInfo {
|
||||
|
||||
MIResultRecord resultRecord;
|
||||
|
||||
public MIInfo(MIResultRecord record) {
|
||||
resultRecord = record;
|
||||
}
|
||||
|
||||
MIResultRecord getResultRecord () {
|
||||
return resultRecord;
|
||||
}
|
||||
}
|
||||
|
|
|
@ -1,5 +1,8 @@
|
|||
package org.eclipse.cdt.debug.mi.core;
|
||||
|
||||
import java.io.InputStream;
|
||||
import java.io.OutputStream;
|
||||
|
||||
import org.eclipse.core.runtime.IPluginDescriptor;
|
||||
import org.eclipse.core.runtime.Plugin;
|
||||
|
||||
|
@ -34,7 +37,7 @@ public class MIPlugin extends Plugin {
|
|||
/**
|
||||
* Create a MI Session.
|
||||
*/
|
||||
public MISession createSession(Process proc) {
|
||||
return new MISession(proc);
|
||||
public MISession createMISession(InputStream in, OutputStream out) {
|
||||
return new MISession(in, out);
|
||||
}
|
||||
}
|
||||
|
|
|
@ -2,7 +2,7 @@ package org.eclipse.cdt.debug.mi.core;
|
|||
|
||||
import java.io.InputStream;
|
||||
import java.io.OutputStream;
|
||||
import java.io.Writer;
|
||||
import java.io.Reader;
|
||||
|
||||
import org.eclipse.cdt.debug.mi.core.output.MIOutput;
|
||||
|
||||
|
@ -11,54 +11,42 @@ import org.eclipse.cdt.debug.mi.core.output.MIOutput;
|
|||
*/
|
||||
public class MISession {
|
||||
|
||||
Process process;
|
||||
Writer consoleStreamOutput = null;
|
||||
Writer targetStreamOutput = null;
|
||||
Writer logStreamOutput = null;
|
||||
InputStream in;
|
||||
OutputStream out;
|
||||
Reader consoleStream = null;
|
||||
Reader targetStream = null;
|
||||
Reader logStream = null;
|
||||
|
||||
/**
|
||||
* The constructor.
|
||||
*/
|
||||
MISession(Process proc) {
|
||||
process = proc;
|
||||
MISession(InputStream i, OutputStream o) {
|
||||
in = i;
|
||||
out = o;
|
||||
}
|
||||
|
||||
/**
|
||||
* Set Console Stream.
|
||||
*/
|
||||
public void setConsoleStreamOutput(Writer consoleOutput) {
|
||||
consoleStreamOutput = consoleOutput;
|
||||
public void setConsoleStream(Reader console) {
|
||||
consoleStream = console;
|
||||
}
|
||||
|
||||
/**
|
||||
* Set Target Stream.
|
||||
*/
|
||||
public void setTargetStreamOutput(Writer targetOutput) {
|
||||
targetStreamOutput = targetOutput;
|
||||
public void setTargetStreamOutput(Reader target) {
|
||||
targetStream = target;
|
||||
}
|
||||
|
||||
/**
|
||||
* Set Log Stream
|
||||
*/
|
||||
public void setLogStreamOutput(Writer logOutput) {
|
||||
logStreamOutput = logOutput;
|
||||
public void setLogStreamOutput(Reader log) {
|
||||
logStream = log;
|
||||
}
|
||||
|
||||
MIOutput parse(String buffer) {
|
||||
return null;
|
||||
}
|
||||
|
||||
OutputStream getSessionInputStream() {
|
||||
if (process != null) {
|
||||
process.getOutputStream();
|
||||
}
|
||||
return null;
|
||||
}
|
||||
|
||||
InputStream getSessionOutputStream() {
|
||||
if (process != null) {
|
||||
process.getInputStream();
|
||||
}
|
||||
return null;
|
||||
}
|
||||
}
|
||||
|
|
|
@ -7,7 +7,7 @@
|
|||
package org.eclipse.cdt.debug.mi.core.command;
|
||||
|
||||
import org.eclipse.cdt.debug.mi.core.MIInfo;
|
||||
import org.eclipse.cdt.debug.mi.core.output.MIOutput;
|
||||
import org.eclipse.cdt.debug.mi.core.output.MIResultRecord;
|
||||
|
||||
/**
|
||||
*
|
||||
|
@ -31,7 +31,7 @@ public class CLICommand extends Command
|
|||
return "";
|
||||
}
|
||||
|
||||
public MIInfo parse (MIOutput out) {
|
||||
return new MIInfo();
|
||||
public MIInfo getInfo (MIResultRecord rr) {
|
||||
return new MIInfo(rr);
|
||||
}
|
||||
}
|
||||
|
|
|
@ -7,7 +7,7 @@
|
|||
package org.eclipse.cdt.debug.mi.core.command;
|
||||
|
||||
import org.eclipse.cdt.debug.mi.core.MIInfo;
|
||||
import org.eclipse.cdt.debug.mi.core.output.MIOutput;
|
||||
import org.eclipse.cdt.debug.mi.core.output.MIResultRecord;
|
||||
|
||||
/**
|
||||
*
|
||||
|
@ -27,5 +27,5 @@ public abstract class Command
|
|||
|
||||
public abstract String toString();
|
||||
|
||||
public abstract MIInfo parse(MIOutput out);
|
||||
public abstract MIInfo getInfo(MIResultRecord rr);
|
||||
}
|
||||
|
|
|
@ -50,11 +50,51 @@ package org.eclipse.cdt.debug.mi.core.command;
|
|||
*/
|
||||
public class MIBreakInsert extends MICommand
|
||||
{
|
||||
public MIBreakInsert(String[] params) {
|
||||
super("-break-insert", params);
|
||||
public MIBreakInsert(boolean isTemporary, boolean isHardware,
|
||||
String condition, int ignoreCount, String line) {
|
||||
super("-break-insert");
|
||||
|
||||
int i = 0;
|
||||
if (isTemporary || isHardware) {
|
||||
i++;
|
||||
}
|
||||
if (condition != null) {
|
||||
i += 2;
|
||||
}
|
||||
if (ignoreCount > 0) {
|
||||
i += 2;
|
||||
}
|
||||
|
||||
String[] opts = new String[i];
|
||||
|
||||
i = 0;
|
||||
if (isTemporary) {
|
||||
opts[i] = "-t";
|
||||
i++;
|
||||
} else if (isHardware) {
|
||||
opts[i] = "-h";
|
||||
i++;
|
||||
}
|
||||
if (condition != null) {
|
||||
opts[i] = "-c";
|
||||
i++;
|
||||
opts[i] = condition;
|
||||
i++;
|
||||
}
|
||||
if (ignoreCount > 0) {
|
||||
opts[i] = "-i";
|
||||
i++;
|
||||
opts[i] = Integer.toString(ignoreCount);
|
||||
i++;
|
||||
}
|
||||
|
||||
if (opts.length > 0) {
|
||||
setOptions(opts);
|
||||
}
|
||||
setParameters(new String[]{line});
|
||||
}
|
||||
|
||||
public MIBreakInsert(String[] opts, String[] params) {
|
||||
super("-break-insert", opts, params);
|
||||
public MIBreakInsert(String regex) {
|
||||
super("-break-insert", new String[]{"-r"}, new String[]{regex});
|
||||
}
|
||||
}
|
||||
|
|
|
@ -21,10 +21,17 @@ package org.eclipse.cdt.debug.mi.core.command;
|
|||
*/
|
||||
public class MIBreakWatch extends MICommand
|
||||
{
|
||||
public MIBreakWatch (String[] opts, String expr) {
|
||||
super("-break-watch", opts, new String[]{expr});
|
||||
}
|
||||
public MIBreakWatch (String expr) {
|
||||
super("-break-watch", new String[]{expr});
|
||||
public MIBreakWatch (boolean access, boolean read, String expr) {
|
||||
super("-break-watch");
|
||||
String[] opts = null;
|
||||
if (access) {
|
||||
opts = new String[] {"-a"};
|
||||
} else if (read) {
|
||||
opts = new String[] {"-r"};
|
||||
}
|
||||
if (opts != null) {
|
||||
setOptions(opts);
|
||||
}
|
||||
setParameters(new String[]{expr});
|
||||
}
|
||||
}
|
||||
|
|
|
@ -7,7 +7,7 @@
|
|||
package org.eclipse.cdt.debug.mi.core.command;
|
||||
|
||||
import org.eclipse.cdt.debug.mi.core.MIInfo;
|
||||
import org.eclipse.cdt.debug.mi.core.output.MIOutput;
|
||||
import org.eclipse.cdt.debug.mi.core.output.MIResultRecord;
|
||||
|
||||
/**
|
||||
*
|
||||
|
@ -102,7 +102,7 @@ public class MICommand extends Command
|
|||
token = t;
|
||||
}
|
||||
|
||||
public MIInfo parse (MIOutput out) {
|
||||
return new MIInfo();
|
||||
public MIInfo getInfo (MIResultRecord rr) {
|
||||
return new MIInfo(rr);
|
||||
}
|
||||
}
|
||||
|
|
|
@ -1,28 +0,0 @@
|
|||
/*
|
||||
*(c) Copyright QNX Software Systems Ltd. 2002.
|
||||
* All Rights Reserved.
|
||||
*
|
||||
*/
|
||||
|
||||
package org.eclipse.cdt.debug.mi.core.command;
|
||||
|
||||
import org.eclipse.cdt.debug.mi.core.MIException;
|
||||
|
||||
/**
|
||||
*
|
||||
* Allows clients to communicate with the debug engine by posting
|
||||
* MI requests.
|
||||
*
|
||||
* @author Mikhail Khodjaiants
|
||||
* @since Jul 11, 2002
|
||||
*/
|
||||
public interface MICommandManager
|
||||
{
|
||||
/**
|
||||
* Posts request to the debug engine.
|
||||
*
|
||||
* @param request - the request to post
|
||||
* @throws MIException if this method fails. Reasons include:
|
||||
*/
|
||||
void postRequest (Command request) throws MIException;
|
||||
}
|
|
@ -61,11 +61,24 @@ package org.eclipse.cdt.debug.mi.core.command;
|
|||
*/
|
||||
public class MIDataDisassemble extends MICommand
|
||||
{
|
||||
public MIDataDisassemble(String[] params) {
|
||||
super("-data-disassemble", params);
|
||||
public MIDataDisassemble(String start, String end, boolean mode) {
|
||||
super("-data-disassemble");
|
||||
setOptions(new String[]{"-s", start, "-e", end});
|
||||
String mixed = "0";
|
||||
if (mode) {
|
||||
mixed = "1";
|
||||
}
|
||||
setParameters(new String[]{mixed});
|
||||
}
|
||||
|
||||
public MIDataDisassemble(String[] opts, String[] params) {
|
||||
super("-data-disassemble", opts, params);
|
||||
public MIDataDisassemble(String file, int linenum, int lines, boolean mode) {
|
||||
super("-data-disassemble");
|
||||
setOptions(new String[]{"-f", file, "-l",
|
||||
Integer.toString(linenum), "-n", Integer.toString(lines)});
|
||||
String mixed = "0";
|
||||
if (mode) {
|
||||
mixed = "1";
|
||||
}
|
||||
setParameters(new String[]{mixed});
|
||||
}
|
||||
}
|
||||
|
|
|
@ -47,11 +47,20 @@ package org.eclipse.cdt.debug.mi.core.command;
|
|||
public class MIDataReadMemory extends MICommand
|
||||
{
|
||||
|
||||
public MIDataReadMemory(String[] params) {
|
||||
super("-data-read-memory", params);
|
||||
}
|
||||
|
||||
public MIDataReadMemory(String[] opts, String[] params) {
|
||||
super("-data-read-memory", opts, params);
|
||||
public MIDataReadMemory (int offset, String address,
|
||||
String wordFormat, int wordSize,
|
||||
int rows, int cols, Character asChar) {
|
||||
super("-data-read-memory");
|
||||
if (offset != 0) {
|
||||
setOptions(new String[]{"-o", Integer.toString(offset)});
|
||||
}
|
||||
if (asChar != null) {
|
||||
setParameters(new String[]{wordFormat, Integer.toString(wordSize),
|
||||
Integer.toString(rows), Integer.toString(cols)});
|
||||
} else {
|
||||
setParameters(new String[]{wordFormat, Integer.toString(wordSize),
|
||||
Integer.toString(rows), Integer.toString(cols),
|
||||
asChar.toString()});
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
|
@ -1,28 +0,0 @@
|
|||
/*
|
||||
*(c) Copyright QNX Software Systems Ltd. 2002.
|
||||
* All Rights Reserved.
|
||||
*
|
||||
*/
|
||||
|
||||
package org.eclipse.cdt.debug.mi.core.command;
|
||||
|
||||
import org.eclipse.cdt.debug.mi.core.MIException;
|
||||
|
||||
/**
|
||||
*
|
||||
* Allows clients to communicate with the debug engine by posting
|
||||
* MI requests.
|
||||
*
|
||||
* @author Mikhail Khodjaiants
|
||||
* @since Jul 11, 2002
|
||||
*/
|
||||
public interface MIRequestManager
|
||||
{
|
||||
/**
|
||||
* Posts request to the debug engine.
|
||||
*
|
||||
* @param request - the request to post
|
||||
* @throws MIException if this method fails. Reasons include:
|
||||
*/
|
||||
void postRequest (Command request) throws MIException;
|
||||
}
|
Loading…
Add table
Reference in a new issue