Home | History | Annotate | Download | only in qtools
      1 #include <stdio.h>
      2 #include <unistd.h>
      3 #include <stdlib.h>
      4 #include <inttypes.h>
      5 #include <string.h>
      6 #include "trace_reader.h"
      7 #include "parse_options.h"
      8 
      9 typedef TraceReader<> TraceReaderType;
     10 
     11 #include "parse_options-inl.h"
     12 
     13 void Usage(const char *program)
     14 {
     15     fprintf(stderr, "Usage: %s [options] trace_file\n", program);
     16     OptionsUsage();
     17 }
     18 
     19 int main(int argc, char **argv) {
     20     // Parse the options
     21     ParseOptions(argc, argv);
     22     if (argc - optind != 1) {
     23         Usage(argv[0]);
     24         exit(1);
     25     }
     26 
     27     char *trace_filename = argv[optind];
     28     TraceReader<> *trace = new TraceReader<>;
     29     trace->Open(trace_filename);
     30     trace->SetRoot(root);
     31 
     32     while (1) {
     33         BBEvent event, ignored;
     34         symbol_type *dummy_sym;
     35 
     36         if (GetNextValidEvent(trace, &event, &ignored, &dummy_sym))
     37             break;
     38     }
     39 
     40     int num_procs;
     41     ProcessState *processes = trace->GetProcesses(&num_procs);
     42 
     43     ProcessState *pstate = &processes[0];
     44     for (int ii = 0; ii < num_procs; ++ii, ++pstate) {
     45         if (pstate->name == NULL)
     46             pstate->name = "";
     47         ProcessState *manager = pstate->addr_manager;
     48         printf("pid %d regions: %d %s",
     49                pstate->pid, manager->nregions, pstate->name);
     50         for (int jj = 1; jj < pstate->argc; ++jj) {
     51             printf(" %s", pstate->argv[jj]);
     52         }
     53         printf("\n");
     54         trace->DumpRegions(stdout, pstate);
     55     }
     56 
     57     delete trace;
     58     return 0;
     59 }
     60