Skip to content
GitLab
Menu
Projects
Groups
Snippets
Loading...
Help
Help
Support
Community forum
Keyboard shortcuts
?
Submit feedback
Contribute to GitLab
Sign in / Register
Toggle navigation
Menu
Open sidebar
ruanhaishen
redis
Commits
5535784b
Commit
5535784b
authored
Nov 17, 2015
by
antirez
Browse files
Lua debugger: redis-cli can restart Lua debugging sessions.
parent
79c6e689
Changes
1
Show whitespace changes
Inline
Side-by-side
src/redis-cli.c
View file @
5535784b
...
...
@@ -1106,6 +1106,12 @@ static void repl(void) {
strcasecmp(argv[0],"exit") == 0)
{
exit(0);
} else if (strcasecmp(argv[0],"restart") == 0) {
if (config.eval_ldb) {
return; /* Return to evalMode to restart the session. */
} else {
printf("Use 'restart' only in Lua debugging mode.");
}
} else if (argc == 3 && !strcasecmp(argv[0],"connect")) {
sdsfree(config.hostip);
config.hostip = sdsnew(argv[1]);
...
...
@@ -1169,12 +1175,28 @@ static int noninteractive(int argc, char **argv) {
*--------------------------------------------------------------------------- */
static int evalMode(int argc, char **argv) {
sds script =
sdsempty()
;
sds script =
NULL
;
FILE *fp;
char buf[1024];
size_t nread;
char **argv2;
int j, got_comma = 0, keys = 0;
int j, got_comma, keys;
int retval = REDIS_OK;
while(1) {
if (config.eval_ldb) {
printf(
"Lua debugging session started, please use:\n"
"quit -- End the session.\n"
"restart -- Restart the script in debug mode again.\n"
"help -- Show Lua script debugging commands.\n\n"
);
}
sdsfree(script);
script = sdsempty();
got_comma = 0;
keys = 0;
/* Load the script from the file, as an sds string. */
fp = fopen(config.eval,"r");
...
...
@@ -1191,7 +1213,8 @@ static int evalMode(int argc, char **argv) {
/* If we are debugging a script, enable the Lua debugger. */
if (config.eval_ldb) {
redisReply *reply = redisCommand(context,
config.eval_ldb_sync ? "SCRIPT DEBUG sync": "SCRIPT DEBUG yes");
config.eval_ldb_sync ?
"SCRIPT DEBUG sync": "SCRIPT DEBUG yes");
if (reply) freeReplyObject(reply);
}
...
...
@@ -1211,7 +1234,7 @@ static int evalMode(int argc, char **argv) {
/* Call it */
int eval_ldb = config.eval_ldb; /* Save it, may be reverteed. */
int
retval = issueCommand(argc+3-got_comma, argv2);
retval = issueCommand(argc+3-got_comma, argv2);
if (eval_ldb) {
if (!config.eval_ldb) {
/* If the debugging session ended immediately, there was an
...
...
@@ -1219,9 +1242,16 @@ static int evalMode(int argc, char **argv) {
* the REPL at all. */
printf("Eval debugging session can't start:\n");
cliReadReply(0);
break; /* Return to the caller. */
} else {
strncpy(config.prompt,"lua debugger> ",sizeof(config.prompt));
repl();
/* Restart the session if repl() returned. */
cliConnect(1);
printf("\n");
}
} else {
break; /* Return to the caller. */
}
}
return retval;
...
...
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
.
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment