]> git.tdb.fi Git - gldbg.git/commitdiff
Make trace command more straightforward
authorMikko Rasa <tdb@tdb.fi>
Sat, 19 Dec 2009 14:51:58 +0000 (14:51 +0000)
committerMikko Rasa <tdb@tdb.fi>
Sat, 19 Dec 2009 14:51:58 +0000 (14:51 +0000)
Set process state to running when killed

source/commandinterpreter.cpp
source/process.cpp

index 36c3b3c18752e32ed2bb2197683a571fc5308ef4..9660aaa0ec8940487feae23a8c1aa74258d8fd9e 100644 (file)
@@ -47,8 +47,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"
@@ -159,37 +161,30 @@ void CommandInterpreter::cmd_exit(const string &)
 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);
        }
 }
 
index ebc0b955e1b64b13680d621fafe16a0ee9e89aca..0fc9e98f6410e0b6657a50106a1d2459385d594e 100644 (file)
@@ -100,6 +100,8 @@ void Process::kill()
        if(state==INACTIVE)
                throw InvalidState("Program is not running");
        ptrace(PTRACE_KILL, 0, 0);
+       // Make the debugger wait() for us
+       state = RUNNING;
 }
 
 long Process::ptrace(int req, void *addr, void *data)