X-Git-Url: http://git.tdb.fi/?a=blobdiff_plain;f=source%2Fcommandinterpreter.cpp;h=abc9dda60b07bc83d5125eac1612f8096d5e25eb;hb=2f49929fc383eab718b5fb64d966535b753e7024;hp=36c3b3c18752e32ed2bb2197683a571fc5308ef4;hpb=ee7f1e3a5912789664648ac5be85127e62c1cda5;p=gldbg.git diff --git a/source/commandinterpreter.cpp b/source/commandinterpreter.cpp index 36c3b3c..abc9dda 100644 --- a/source/commandinterpreter.cpp +++ b/source/commandinterpreter.cpp @@ -6,6 +6,7 @@ Distributed under the GPL */ #include +#include #include #include #include @@ -47,8 +48,10 @@ CommandInterpreter::CommandInterpreter(GlDbg &d): commands["trace"] = Command(&CommandInterpreter::cmd_trace, "Traces GL function calls", - "trace >FILE\n" - " Send trace output to FILE. As a special case, - means stdout.\n\n" + "trace\n" + " Send trace output to stdout.\n" + "trace FILE\n" + " Send trace output to FILE (- for stdout).\n\n" "trace {off|on}\n" " Temporarily suspend or resume trace without closing the file.\n\n" "trace end\n" @@ -153,43 +156,49 @@ void CommandInterpreter::cmd_kill(const string &) void CommandInterpreter::cmd_exit(const string &) { - gldbg.quit(); + if(gldbg.get_process().get_state()!=Process::INACTIVE) + { + IO::print("Program is still running. Kill it?\n"); + char *answer = readline("[y/n] "); + if(answer[0]=='y') + { + gldbg.get_process().kill(); + gldbg.quit(true); + } + else + IO::print("Not confirmed.\n"); + } + else + gldbg.quit(false); } void CommandInterpreter::cmd_trace(const string &args) { Tracer &tracer = gldbg.get_tracer(); - if(args[0]=='>') + if(args.empty() || args=="-") { - string fn = args.substr(1); - if(fn=="-") - { - tracer.set_output(IO::cout); - IO::print("Tracing to stdout\n"); - } - else - { - tracer.set_output(new IO::File(fn, IO::M_WRITE)); - IO::print("Tracing to %s\n", fn); - } + tracer.set_output(IO::cout); + IO::print("Tracing to stdout\n"); + } + else if(args=="on") + { + tracer.enable(); + IO::print("Tracing enabled\n"); + } + else if(args=="off") + { + tracer.disable(); + IO::print("Tracing disabled\n"); + } + else if(args=="end") + { + tracer.set_output(0); + IO::print("Tracing terminated\n"); } else { - if(args=="on") - { - tracer.enable(); - IO::print("Tracing enabled\n"); - } - else if(args=="off") - { - tracer.disable(); - IO::print("Tracing disabled\n"); - } - else if(args=="end") - { - tracer.set_output(0); - IO::print("Tracing terminated\n"); - } + tracer.set_output(new IO::File(args, IO::M_WRITE)); + IO::print("Tracing to %s\n", args); } }