trace: [linux-user] Commandline arguments to control tracing
[Changed const char *trace_file to char *trace_file since it's a heap-allocated string that needs to be freed. This type is also returned by trace_opt_parse() and used in vl.c. --Stefan] Signed-off-by: Lluís Vilanova <vilanova@ac.upc.edu> Message-id: 146860251784.30668.17339867835129075077.stgit@fimbulvetr.bsc.es Signed-off-by: Stefan Hajnoczi <stefanha@redhat.com>
This commit is contained in:
		
							parent
							
								
									3913d3707e
								
							
						
					
					
						commit
						6533dd6e11
					
				@ -24,6 +24,7 @@
 | 
				
			|||||||
#include "qapi/error.h"
 | 
					#include "qapi/error.h"
 | 
				
			||||||
#include "qemu.h"
 | 
					#include "qemu.h"
 | 
				
			||||||
#include "qemu/path.h"
 | 
					#include "qemu/path.h"
 | 
				
			||||||
 | 
					#include "qemu/config-file.h"
 | 
				
			||||||
#include "qemu/cutils.h"
 | 
					#include "qemu/cutils.h"
 | 
				
			||||||
#include "qemu/help_option.h"
 | 
					#include "qemu/help_option.h"
 | 
				
			||||||
#include "cpu.h"
 | 
					#include "cpu.h"
 | 
				
			||||||
@ -33,6 +34,8 @@
 | 
				
			|||||||
#include "qemu/envlist.h"
 | 
					#include "qemu/envlist.h"
 | 
				
			||||||
#include "elf.h"
 | 
					#include "elf.h"
 | 
				
			||||||
#include "exec/log.h"
 | 
					#include "exec/log.h"
 | 
				
			||||||
 | 
					#include "trace/control.h"
 | 
				
			||||||
 | 
					#include "glib-compat.h"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
char *exec_path;
 | 
					char *exec_path;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
@ -4001,6 +4004,13 @@ static void handle_arg_version(const char *arg)
 | 
				
			|||||||
    exit(EXIT_SUCCESS);
 | 
					    exit(EXIT_SUCCESS);
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					static char *trace_file;
 | 
				
			||||||
 | 
					static void handle_arg_trace(const char *arg)
 | 
				
			||||||
 | 
					{
 | 
				
			||||||
 | 
					    g_free(trace_file);
 | 
				
			||||||
 | 
					    trace_file = trace_opt_parse(arg);
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
struct qemu_argument {
 | 
					struct qemu_argument {
 | 
				
			||||||
    const char *argv;
 | 
					    const char *argv;
 | 
				
			||||||
    const char *env;
 | 
					    const char *env;
 | 
				
			||||||
@ -4048,6 +4058,8 @@ static const struct qemu_argument arg_table[] = {
 | 
				
			|||||||
     "",           "log system calls"},
 | 
					     "",           "log system calls"},
 | 
				
			||||||
    {"seed",       "QEMU_RAND_SEED",   true,  handle_arg_randseed,
 | 
					    {"seed",       "QEMU_RAND_SEED",   true,  handle_arg_randseed,
 | 
				
			||||||
     "",           "Seed for pseudo-random number generator"},
 | 
					     "",           "Seed for pseudo-random number generator"},
 | 
				
			||||||
 | 
					    {"trace",      "QEMU_TRACE",       true,  handle_arg_trace,
 | 
				
			||||||
 | 
					     "",           "[[enable=]<pattern>][,events=<file>][,file=<file>]"},
 | 
				
			||||||
    {"version",    "QEMU_VERSION",     false, handle_arg_version,
 | 
					    {"version",    "QEMU_VERSION",     false, handle_arg_version,
 | 
				
			||||||
     "",           "display version information and exit"},
 | 
					     "",           "display version information and exit"},
 | 
				
			||||||
    {NULL, NULL, false, NULL, NULL, NULL}
 | 
					    {NULL, NULL, false, NULL, NULL, NULL}
 | 
				
			||||||
@ -4237,8 +4249,15 @@ int main(int argc, char **argv, char **envp)
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
    srand(time(NULL));
 | 
					    srand(time(NULL));
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    qemu_add_opts(&qemu_trace_opts);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    optind = parse_args(argc, argv);
 | 
					    optind = parse_args(argc, argv);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    if (!trace_init_backends()) {
 | 
				
			||||||
 | 
					        exit(1);
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					    trace_init_file(trace_file);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    /* Zero out regs */
 | 
					    /* Zero out regs */
 | 
				
			||||||
    memset(regs, 0, sizeof(struct target_pt_regs));
 | 
					    memset(regs, 0, sizeof(struct target_pt_regs));
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
				
			|||||||
		Loading…
	
	
			
			x
			
			
		
	
		Reference in New Issue
	
	Block a user