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")
# Tracing options
set_group("Trace Options")
internal.stats.initText(options.stats_file)
# set debugging options
+ internal.debug.setRemoteGDBPort(options.remote_gdb_port)
for when in options.debug_break:
internal.debug.schedBreakCycle(int(when))
%module debug
%{
-// include these files when compiling debug_wrap.cc
#include "sim/host.hh"
+#include "sim/debug.hh"
%}
%include "stdint.i"
%include "sim/host.hh"
-
-%inline %{
-extern void schedBreakCycle(Tick when);
-%}
+%include "sim/debug.hh"
%wrapper %{
// fix up module name to reflect the fact that it's inside the m5 package
mainEventQueue.dump();
}
+
+int remote_gdb_base_port = 7000;
+
+int
+getRemoteGDBPort()
+{
+ return remote_gdb_base_port;
+}
+
+// Set remote GDB base port. 0 means disable remote GDB.
+// Callable from python.
+void
+setRemoteGDBPort(int port)
+{
+ remote_gdb_base_port = port;
+}
+
#ifndef __DEBUG_HH__
#define __DEBUG_HH__
+#include "sim/host.hh"
+
+void schedBreakCycle(Tick when);
void debug_break();
+int getRemoteGDBPort();
+// Remote gdb base port. 0 disables remote gdb.
+void setRemoteGDBPort(int port);
+
#endif // __DEBUG_HH__
#include "mem/translating_port.hh"
#include "params/Process.hh"
#include "params/LiveProcess.hh"
+#include "sim/debug.hh"
#include "sim/process.hh"
#include "sim/process_impl.hh"
#include "sim/stats.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();
+ int port = getRemoteGDBPort();
+ if (port) {
+ RemoteGDB *rgdb = new RemoteGDB(system, tc);
+ GDBListener *gdbl = new GDBListener(rgdb, port + myIndex);
+ gdbl->listen();
- remoteGDB.push_back(rgdb);
+ remoteGDB.push_back(rgdb);
+ }
// return CPU number to caller
return myIndex;
#include "mem/physical.hh"
#include "sim/byteswap.hh"
#include "sim/system.hh"
+#include "sim/debug.hh"
#if FULL_SYSTEM
#include "arch/vtophys.hh"
#include "kern/kernel_stats.hh"
threadContexts[id] = tc;
numcpus++;
- if (rgdb_enable) {
+ int port = getRemoteGDBPort();
+ if (rgdb_enable && port) {
RemoteGDB *rgdb = new RemoteGDB(this, tc);
- GDBListener *gdbl = new GDBListener(rgdb, 7000 + id);
+ GDBListener *gdbl = new GDBListener(rgdb, port + id);
gdbl->listen();
/**
* Uncommenting this line waits for a remote debugger to