77
88int arg_opt_e = 0 ;
99int arg_opt_p = 0 ;
10+ int arg_opt_o = 0 ;
1011int arg_opt_m = 0 ;
1112int arg_opt_s = 0 ;
1213int arg_opt_v = 0 ;
1314int arg_opt_n = 0 ;
1415
1516char * * arg_execve_argv = NULL ;
1617char * arg_popen = NULL ;
18+ int arg_pid = -1 ;
1719
1820char * * parsing_execve_str (char * cmd )
1921{
@@ -48,12 +50,13 @@ char **parsing_execve_str(char *cmd)
4850
4951int help ()
5052{
51- fprintf (stderr , "Usage: debug-server [-hmsvn] [-e CMD] [-p CMD]\n"
53+ fprintf (stderr , "Usage: debug-server [-hmsvn] [-e CMD] [-p PID] [-o CMD]\n"
5254 "\n"
5355 "debug-server " VERSION "\n"
5456 "General:\n"
5557 " -e CMD service argv\n"
56- " -p CMD get pid by popen\n"
58+ " -p PID attach to PID\n"
59+ " -o CMD get pid by popen\n"
5760 " -h print help message\n"
5861 " -m enable multi-service\n"
5962 " -s halt at entry point\n"
@@ -66,14 +69,17 @@ int help()
6669int parsing_argv (int argc , char * argv [])
6770{
6871 int opt ;
69- while ((opt = getopt (argc , argv , "e:p:hmsvn" )) != -1 ) {
72+ while ((opt = getopt (argc , argv , "e:p:o: hmsvn" )) != -1 ) {
7073 switch (opt ) {
7174 case 'e' :
7275 arg_opt_e = 1 ;
7376 arg_execve_argv = parsing_execve_str (optarg );
7477 break ;
7578 case 'p' :
7679 arg_opt_p = 1 ;
80+ arg_pid = atoi (optarg );
81+ case 'o' :
82+ arg_opt_o = 1 ;
7783 arg_popen = optarg ;
7884 break ;
7985 case 'h' :
@@ -96,9 +102,9 @@ int parsing_argv(int argc, char *argv[])
96102 break ;
97103 }
98104 }
99- if (!(arg_opt_e || arg_opt_p ))
105+ if (!(arg_opt_e || arg_opt_p || arg_opt_o ))
100106 {
101- fprintf (stderr , "debug-server: must have -e CMD or -p CMD\n" );
107+ fprintf (stderr , "debug-server: must have -e CMD or -p PID or -o CMD\n" );
102108 help ();
103109 }
104110 return 0 ;
0 commit comments