more debugging support
base/trace.cc: code to set/clear/print trace flags from the debugger. --HG-- extra : convert_revision : f2a549e9af05c4a177186b9f1792a0493ce15c95
This commit is contained in:
parent
2272164d66
commit
45f377bcd8
1 changed files with 63 additions and 0 deletions
|
@ -319,3 +319,66 @@ echoTrace(bool on)
|
|||
}
|
||||
}
|
||||
}
|
||||
|
||||
extern "C"
|
||||
void
|
||||
printTraceFlags()
|
||||
{
|
||||
using namespace Trace;
|
||||
for (int i = 0; i < numFlagStrings; ++i)
|
||||
if (flags[i])
|
||||
cprintf("%s\n", flagStrings[i]);
|
||||
}
|
||||
|
||||
void
|
||||
tweakTraceFlag(const char *string, bool value)
|
||||
{
|
||||
using namespace Trace;
|
||||
std::string str(string);
|
||||
|
||||
for (int i = 0; i < numFlagStrings; ++i) {
|
||||
if (str != flagStrings[i])
|
||||
continue;
|
||||
|
||||
int idx = i;
|
||||
|
||||
if (idx < NumFlags) {
|
||||
flags[idx] = value;
|
||||
} else {
|
||||
idx -= NumFlags;
|
||||
if (idx >= NumCompoundFlags) {
|
||||
ccprintf(cerr, "Invalid compound flag");
|
||||
return;
|
||||
}
|
||||
|
||||
const Flags *flagVec = compoundFlags[idx];
|
||||
|
||||
for (int j = 0; flagVec[j] != -1; ++j) {
|
||||
if (flagVec[j] >= NumFlags) {
|
||||
ccprintf(cerr, "Invalid compound flag");
|
||||
return;
|
||||
}
|
||||
flags[flagVec[j]] = value;
|
||||
}
|
||||
}
|
||||
|
||||
cprintf("flag %s was %s\n", string, value ? "set" : "cleared");
|
||||
return;
|
||||
}
|
||||
|
||||
cprintf("could not find flag %s\n", string);
|
||||
}
|
||||
|
||||
extern "C"
|
||||
void
|
||||
setTraceFlag(const char *string)
|
||||
{
|
||||
tweakTraceFlag(string, true);
|
||||
}
|
||||
|
||||
extern "C"
|
||||
void
|
||||
clearTraceFlag(const char *string)
|
||||
{
|
||||
tweakTraceFlag(string, false);
|
||||
}
|
||||
|
|
Loading…
Reference in a new issue