blob: 47eacacd635ce59e6b0855793214a5e76fa806f4 [file] [log] [blame]
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include "MIList.h"
#include "MIString.h"
#include "MISession.h"
#include "MIError.h"
#include "MIResultRecord.h"
#include "MIBreakpoint.h"
void
cmd_callback(MIResultRecord *rr, void *sess)
{
MIString *str = MIResultRecordToString(rr);
printf("res> %s\n", MIStringToCString(str));
MIStringFree(str);
}
void
console_callback(char *str)
{
printf("cons> %s\n", str);
}
void
log_callback(char *str)
{
printf("log> %s\n", str);
}
void
sendcmd_wait(MISession *sess, MICommand *cmd)
{
MISessionSendCommand(sess, cmd);
do {
MISessionProgress(sess);
} while (!MICommandCompleted(cmd));
}
int main(int argc, char *argv[])
{
MISession *sess;
MICommand *cmd;
MIList *bpts;
MIBreakpoint *bpt;
sess = MISessionNew();
MISessionSetDebug(1);
if (MISessionStartLocal(sess, "test_mi") < 0) {
fprintf(stderr, "%s", MIGetErrorStr());
return 1;
}
MISessionRegisterConsoleCallback(sess, console_callback);
MISessionRegisterLogCallback(sess, log_callback);
printf("help command\n");
cmd = MICommandNew("help", MIResultRecordDONE);
MICommandRegisterCallback(cmd, cmd_callback, sess);
sendcmd_wait(sess, cmd);
if (!MICommandResultOK(cmd))
fprintf(stderr, "command failed\n");
MICommandFree(cmd);
printf("set command\n");
cmd = MIGDBSet("confirm", "off");
MICommandRegisterCallback(cmd, cmd_callback, sess);
sendcmd_wait(sess, cmd);
if (!MICommandResultOK(cmd))
fprintf(stderr, "command failed\n");
MICommandFree(cmd);
printf("break command\n");
cmd = MIBreakInsert(0, 0, NULL, 0, "4", 0);
MICommandRegisterCallback(cmd, cmd_callback, sess);
sendcmd_wait(sess, cmd);
if (!MICommandResultOK(cmd))
fprintf(stderr, "command failed\n");
bpts = MIBreakpointGetBreakInsertInfo(cmd);
if (bpts != NULL)
for (MIListSet(bpts); (bpt = (MIBreakpoint *)MIListGet(bpts)) != NULL; )
printf("bpt id = %d\n", bpt->number);
MICommandFree(cmd);
printf("quit command\n");
cmd = MIGDBExit();
MICommandRegisterCallback(cmd, cmd_callback, sess);
sendcmd_wait(sess, cmd);
if (!MICommandResultOK(cmd))
fprintf(stderr, "command failed\n");
MICommandFree(cmd);
return 0;
}