#include <string>
 
+#include "arch/remote_gdb.hh"
 #include "base/intmath.hh"
 #include "base/loader/object_file.hh"
 #include "base/loader/symtab.hh"
     int myIndex = threadContexts.size();
     threadContexts.push_back(tc);
 
+    RemoteGDB *rgdb = new RemoteGDB(system, tc);
+    GDBListener *gdbl = new GDBListener(rgdb, 7000 + myIndex);
+    gdbl->listen();
+    //gdbl->accept();
+
+    remoteGDB.push_back(rgdb);
+
     // return CPU number to caller
     return myIndex;
 }
 
 class PageTable;
 class TranslatingPort;
 class System;
+class GDBListener;
+namespace TheISA
+{
+    class RemoteGDB;
+}
 
 void
 copyStringArray(std::vector<std::string> &strings, Addr array_ptr,
     // thread contexts associated with this process
     std::vector<ThreadContext *> threadContexts;
 
+    // remote gdb objects
+    std::vector<TheISA::RemoteGDB *> remoteGDB;
+    std::vector<GDBListener *> gdbListen;
+    bool breakpoint();
+
     // number of CPUs (esxec contexts, really) assigned to this process.
     unsigned int numCpus() { return threadContexts.size(); }