diff --git a/Applications/Debugger/main.cpp b/Applications/Debugger/main.cpp index 893126d6e2e..ded418d17af 100644 --- a/Applications/Debugger/main.cpp +++ b/Applications/Debugger/main.cpp @@ -31,6 +31,7 @@ #include #include #include +#include #include #include #include @@ -45,12 +46,6 @@ static Line::Editor editor {}; -static int usage() -{ - printf("usage: sdb [command...]\n"); - return 1; -} - OwnPtr g_debug_session; static void handle_sigint(int) @@ -183,18 +178,16 @@ int main(int argc, char** argv) return 1; } - if (argc == 1) - return usage(); + const char* command = nullptr; + Core::ArgsParser args_parser; + args_parser.add_positional_argument(command, + "The program to be debugged, along with its arguments", + "program", Core::ArgsParser::Required::Yes); + args_parser.parse(argc, argv); - StringBuilder command; - command.append(argv[1]); - for (int i = 2; i < argc; ++i) { - command.appendf("%s ", argv[i]); - } - - auto result = DebugSession::exec_and_attach(command.to_string()); + auto result = DebugSession::exec_and_attach(command); if (!result) { - fprintf(stderr, "Failed to start debugging session for: \"%s\"\n", command.to_string().characters()); + fprintf(stderr, "Failed to start debugging session for: \"%s\"\n", command); exit(1); } g_debug_session = result.release_nonnull();