| Version | Date | Change |
|---|---|---|
| 1.0 | 2011-11-11 | Initial |
The service provides access to "dynamic printf" output stream that is generated by invocations of '$printf' function by the Expressions service on the remote target.
The function has same arguments as the C library function int printf(const char * format, ...). While '$printf' is most usefull as a breakpoint action, any debugger expression can call the function.
The service uses standard format for error reports, see Error Report Format.
C • <token> • DPrintf • open • <object: stream properties> •
Open "dynamic printf" stream. If the stream is already open, just return its ID.
Stream properties are optional and can be null. No standard stream properties are defined yet.
Reply:
R • <token> • <error report> • <string: stream ID> •
Reply contains ID of the stream. The stream is accessible through the Streams service.
C • <token> • DPrintf • close •
Close "dynamic printf" stream.
Reply:
R • <token> • <error report> •
/**
* DPrintf service provides access to "dynamic printf" output stream that is generated by invocations of
* '$printf' function on the remote target. '$printf' is usually used as a breakpoint action.
*
* @noimplement This interface is not intended to be implemented by clients.
*/
public interface IDPrintf extends IService {
/**
* This service name, as it appears on the wire - a TCF name of the service.
*/
static final String NAME = "DPrintf";
/**
* Open "dynamic printf" stream and get ID of the stream.
* The service maintains one such stream per client.
* The stream is managed by Streams service.
* @param properties - optional stream properties.
* @param done - command result call back object.
* @return - pending command handle.
*/
IToken open(Map<String,Object>[] properties, DoneCommandOpen done);
interface DoneCommandOpen {
void doneCommandOpen(IToken token, Exception error, String id);
}
/**
* Close "dynamic printf" stream.
* Further '$printf' output will be discarded.
* @param done - command result call back object.
* @return - pending command handle.
*/
IToken close(DoneCommandClose done);
interface DoneCommandClose {
void doneCommandClose(IToken token, Exception error);
}
}