sim: don't ignore SIG_TRAP
By ignoring SIG_TRAP, using --debug-break <N> when not connected to a debugger becomes a no-op. Apparently this was intended to be a feature, though the rationale is not clear. If we don't ignore SIG_TRAP, then using --debug-break <N> when not connected to a debugger causes the simulation process to terminate at tick N. This is occasionally useful, e.g., if you just want to collect a trace for a specific window of execution then you can combine this with --debug-start to do exactly that. In addition to not ignoring the signal, this patch also updates the --debug-break help message and deletes a handful of unprotected calls to Debug::breakpoint() that relied on the prior behavior.
This commit is contained in:
parent
fcfe6e798d
commit
28a0e5a165
5 changed files with 5 additions and 16 deletions
|
@ -271,11 +271,6 @@ ISA::setIpr(int idx, uint64_t val, ThreadContext *tc)
|
|||
break;
|
||||
|
||||
case IPR_IPLR:
|
||||
#ifdef DEBUG
|
||||
if (break_ipl != -1 && break_ipl == (int)(val & 0x1f))
|
||||
Debug::breakpoint();
|
||||
#endif
|
||||
|
||||
// only write least significant five bits - interrupt level
|
||||
ipr[idx] = val & 0x1f;
|
||||
if (tc->getKernelStats())
|
||||
|
|
|
@ -951,7 +951,6 @@ NSGigE::cpuIntrPost(Tick when)
|
|||
|
||||
intrTick = when;
|
||||
if (intrTick < curTick()) {
|
||||
Debug::breakpoint();
|
||||
intrTick = curTick();
|
||||
}
|
||||
|
||||
|
@ -1725,7 +1724,6 @@ NSGigE::txKick()
|
|||
tcp->sum(cksum(tcp));
|
||||
txTcpChecksums++;
|
||||
} else {
|
||||
Debug::breakpoint();
|
||||
warn_once("TCPPKT set, but not UDP!\n");
|
||||
}
|
||||
}
|
||||
|
@ -1735,7 +1733,6 @@ NSGigE::txKick()
|
|||
ip->sum(cksum(ip));
|
||||
txIpChecksums++;
|
||||
} else {
|
||||
Debug::breakpoint();
|
||||
warn_once("IPPKT set, but not UDP!\n");
|
||||
}
|
||||
}
|
||||
|
|
|
@ -527,7 +527,6 @@ Base::cpuIntrPost(Tick when)
|
|||
|
||||
intrTick = when;
|
||||
if (intrTick < curTick()) {
|
||||
Debug::breakpoint();
|
||||
intrTick = curTick();
|
||||
}
|
||||
|
||||
|
|
|
@ -94,14 +94,15 @@ def parse_options():
|
|||
|
||||
# Debugging options
|
||||
group("Debugging Options")
|
||||
option("--debug-break", metavar="TIME[,TIME]", action='append', split=',',
|
||||
help="Tick to create a breakpoint")
|
||||
option("--debug-break", metavar="TICK[,TICK]", action='append', split=',',
|
||||
help="Create breakpoint(s) at TICK(s) " \
|
||||
"(kills process if no debugger attached)")
|
||||
option("--debug-help", action='store_true',
|
||||
help="Print help on debug flags")
|
||||
option("--debug-flags", metavar="FLAG[,FLAG]", action='append', split=',',
|
||||
help="Sets the flags for debug output (-FLAG disables a flag)")
|
||||
option("--debug-start", metavar="TIME", type='int',
|
||||
help="Start debug output at TIME (must be in ticks)")
|
||||
option("--debug-start", metavar="TICK", type='int',
|
||||
help="Start debug output at TICK (must be in ticks)")
|
||||
option("--debug-file", metavar="FILE", default="cout",
|
||||
help="Sets the output file for debug [Default: %default]")
|
||||
option("--debug-ignore", metavar="EXPR", action='append', split=':',
|
||||
|
|
|
@ -178,9 +178,6 @@ initSignals()
|
|||
// ignore them
|
||||
signal(SIGFPE, SIG_IGN);
|
||||
|
||||
// We use SIGTRAP sometimes for debugging
|
||||
signal(SIGTRAP, SIG_IGN);
|
||||
|
||||
// Dump intermediate stats
|
||||
installSignalHandler(SIGUSR1, dumpStatsHandler);
|
||||
|
||||
|
|
Loading…
Reference in a new issue