Minor remote GDB cleanup.

Expand the help text on the --remote-gdb-port option so
people know you can use it to disable remote gdb without
reading the source code, and thus don't waste any time
trying to add a separate option to do that.
Clean up some gdb-related cruft I found while looking
for where one would add a gdb disable option, before
I found the comment that told me that I didn't need
to do that.
This commit is contained in:
Steve Reinhardt 2010-06-03 16:54:26 -07:00
parent 4a3ce94386
commit f92e91e853
7 changed files with 10 additions and 24 deletions

View file

@ -54,9 +54,6 @@ namespace TheISA
class Processor;
class PhysicalMemory;
class RemoteGDB;
class GDBListener;
#else
class Process;

View file

@ -58,9 +58,6 @@ namespace TheISA
class PhysicalMemory;
class MemoryController;
class RemoteGDB;
class GDBListener;
namespace TheISA {
namespace Kernel {
class Statistics;

View file

@ -76,7 +76,6 @@
#include "arch/stacktrace.hh"
#include "arch/tlb.hh"
#include "arch/vtophys.hh"
#include "base/remote_gdb.hh"
#else // !FULL_SYSTEM
#include "mem/mem_object.hh"
#endif // FULL_SYSTEM

View file

@ -63,9 +63,6 @@ class Process;
#endif // FULL_SYSTEM
class RemoteGDB;
class GDBListener;
namespace TheISA
{
class Predecoder;

View file

@ -101,7 +101,7 @@ set_group("Debugging Options")
add_option("--debug-break", metavar="TIME[,TIME]", action='append', split=',',
help="Cycle to create a breakpoint")
add_option("--remote-gdb-port", type='int', default=7000,
help="Remote gdb base port")
help="Remote gdb base port (set to 0 to disable listening)")
# Tracing options
set_group("Trace Options")

View file

@ -91,11 +91,6 @@ class Process : public SimObject
// thread contexts associated with this process
std::vector<int> contextIds;
// remote gdb objects
std::vector<BaseRemoteGDB *> remoteGDB;
std::vector<GDBListener *> gdbListen;
bool breakpoint();
// number of CPUs (esxec contexts, really) assigned to this process.
unsigned int numCpus() { return contextIds.size(); }

View file

@ -151,9 +151,6 @@ System::~System()
#endif // FULL_SYSTEM}
}
int rgdb_wait = -1;
int rgdb_enable = true;
void
System::setMemoryMode(Enums::MemoryMode mode)
{
@ -168,6 +165,13 @@ bool System::breakpoint()
return false;
}
/**
* Setting rgdb_wait to a positive integer waits for a remote debugger to
* connect to that context ID before continuing. This should really
be a parameter on the CPU object or something...
*/
int rgdb_wait = -1;
int
System::registerThreadContext(ThreadContext *tc, int assigned)
{
@ -193,14 +197,11 @@ System::registerThreadContext(ThreadContext *tc, int assigned)
_numContexts++;
int port = getRemoteGDBPort();
if (rgdb_enable && port) {
if (port) {
RemoteGDB *rgdb = new RemoteGDB(this, tc);
GDBListener *gdbl = new GDBListener(rgdb, port + id);
gdbl->listen();
/**
* Uncommenting this line waits for a remote debugger to
* connect to the simulator before continuing.
*/
if (rgdb_wait != -1 && rgdb_wait == id)
gdbl->accept();