diff options
author | Nathan Binkert <binkertn@umich.edu> | 2007-02-21 22:25:48 -0800 |
---|---|---|
committer | Nathan Binkert <binkertn@umich.edu> | 2007-02-21 22:25:48 -0800 |
commit | c003dda793b5cc6fb9d9953fa1477849ddc42944 (patch) | |
tree | 326742a4934c9d279f740678bc6428fbdc9fed6d | |
parent | fa4c3d74fe7eb9627119d17542fbde18eb10423e (diff) | |
download | gem5-c003dda793b5cc6fb9d9953fa1477849ddc42944.tar.xz |
Make it easier to turn off the remote debugger
--HG--
extra : convert_revision : d88784736df5f9b498770fb7e98f52715669c0e1
-rw-r--r-- | src/sim/system.cc | 36 |
1 files changed, 21 insertions, 15 deletions
diff --git a/src/sim/system.cc b/src/sim/system.cc index f6febe4b1..1a87e1754 100644 --- a/src/sim/system.cc +++ b/src/sim/system.cc @@ -142,6 +142,7 @@ System::~System() } int rgdb_wait = -1; +int rgdb_enable = true; void System::setMemoryMode(MemoryMode mode) @@ -152,7 +153,9 @@ System::setMemoryMode(MemoryMode mode) bool System::breakpoint() { - return remoteGDB[0]->breakpoint(); + if (remoteGDB.size()) + return remoteGDB[0]->breakpoint(); + return false; } int @@ -174,22 +177,24 @@ System::registerThreadContext(ThreadContext *tc, int id) threadContexts[id] = tc; numcpus++; - RemoteGDB *rgdb = new RemoteGDB(this, tc); - GDBListener *gdbl = new GDBListener(rgdb, 7000 + 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(); + if (rgdb_enable) { + RemoteGDB *rgdb = new RemoteGDB(this, tc); + GDBListener *gdbl = new GDBListener(rgdb, 7000 + 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(); + + if (remoteGDB.size() <= id) { + remoteGDB.resize(id + 1); + } - if (remoteGDB.size() <= id) { - remoteGDB.resize(id + 1); + remoteGDB[id] = rgdb; } - remoteGDB[id] = rgdb; - return id; } @@ -210,7 +215,8 @@ System::replaceThreadContext(ThreadContext *tc, int id) } threadContexts[id] = tc; - remoteGDB[id]->replaceThreadContext(tc); + if (id < remoteGDB.size()) + remoteGDB[id]->replaceThreadContext(tc); } #if !FULL_SYSTEM |