allow gdbstub control from command line

This commit is contained in:
Dave Murphy 2016-01-30 01:33:34 +00:00
parent 3ab6d77c20
commit 9dc4f46c7f

View File

@ -34,25 +34,40 @@
static void PrintHelp() static void PrintHelp()
{ {
std::cout << "Usage: citra <filename>" << std::endl; std::cout << "Usage: citra [options] <filename>" << std::endl;
std::cout << "--help, -h Display this information" << std::endl;
std::cout << "--gdbport, -g number Enable gdb stub on port number" << std::endl;
} }
/// Application entry point /// Application entry point
int main(int argc, char **argv) { int main(int argc, char **argv) {
int option_index = 0; int option_index = 0;
u32 gdb_port = 0;
char *endarg;
std::string boot_filename; std::string boot_filename;
static struct option long_options[] = { static struct option long_options[] = {
{ "help", no_argument, 0, 'h' }, { "help", no_argument, 0, 'h' },
{ "gdbport", required_argument, 0, 'g' },
{ 0, 0, 0, 0 } { 0, 0, 0, 0 }
}; };
while (optind < argc) { while (optind < argc) {
char arg = getopt_long(argc, argv, ":h", long_options, &option_index); char arg = getopt_long(argc, argv, ":hg:", long_options, &option_index);
if (arg != -1) { if (arg != -1) {
switch (arg) { switch (arg) {
case 'h': case 'h':
PrintHelp(); PrintHelp();
return 0; return 0;
case 'g':
errno = 0;
gdb_port = strtoul(optarg, &endarg, 0);
if (endarg == optarg) errno = EINVAL;
if (errno != 0) {
perror("--gdbport");
exit(1);
}
break;
} }
} else { } else {
boot_filename = argv[optind]; boot_filename = argv[optind];
@ -73,8 +88,10 @@ int main(int argc, char **argv) {
Config config; Config config;
log_filter.ParseFilterString(Settings::values.log_filter); log_filter.ParseFilterString(Settings::values.log_filter);
GDBStub::ToggleServer(Settings::values.use_gdbstub); if (gdb_port != 0) {
GDBStub::SetServerPort(static_cast<u32>(Settings::values.gdbstub_port)); GDBStub::ToggleServer(true);
GDBStub::SetServerPort(gdb_port);
}
EmuWindow_GLFW* emu_window = new EmuWindow_GLFW; EmuWindow_GLFW* emu_window = new EmuWindow_GLFW;