• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1 #include <stdio.h>
2 #include <stdlib.h>
3 #include <inttypes.h>
4 #include "trace_reader.h"
5 
main(int argc,char ** argv)6 int main(int argc, char **argv) {
7   if (argc != 2) {
8     fprintf(stderr, "Usage: %s trace_file\n", argv[0]);
9     exit(1);
10   }
11 
12   char *trace_filename = argv[1];
13   TraceReaderBase *trace = new TraceReaderBase;
14   trace->Open(trace_filename);
15 
16   while (1) {
17     PidEvent event;
18     if (trace->ReadPidEvent(&event))
19       break;
20     switch (event.rec_type) {
21       case kPidFork:
22         printf("t%lld fork tgid %d pid %d\n", event.time, event.tgid, event.pid);
23         break;
24       case kPidClone:
25         printf("t%lld clone tgid %d pid %d\n", event.time, event.tgid, event.pid);
26         break;
27       case kPidSwitch:
28         printf("t%lld switch %d\n", event.time, event.pid);
29         break;
30       case kPidExit:
31         printf("t%lld exit %d\n", event.time, event.pid);
32         break;
33       case kPidMmap:
34         printf("t%lld mmap %08x - %08x, offset %08x '%s'\n",
35                event.time, event.vstart, event.vend, event.offset, event.path);
36         delete[] event.path;
37         break;
38       case kPidMunmap:
39         printf("t%lld munmap %08x - %08x\n",
40                event.time, event.vstart, event.vend);
41         break;
42       case kPidSymbolAdd:
43         printf("t%lld add sym %08x '%s'\n",
44                event.time, event.vstart, event.path);
45         delete[] event.path;
46         break;
47       case kPidSymbolRemove:
48         printf("t%lld remove %08x\n", event.time, event.vstart);
49         break;
50       case kPidExec:
51         printf("t%lld argc: %d\n", event.time, event.argc);
52         for (int ii = 0; ii < event.argc; ++ii) {
53           printf("  argv[%d]: %s\n", ii, event.argv[ii]);
54           delete[] event.argv[ii];
55         }
56         delete[] event.argv;
57         break;
58       case kPidKthreadName:
59         printf("t%lld kthread tgid %d pid %d %s\n",
60                event.time, event.tgid, event.pid, event.path);
61         delete[] event.path;
62         break;
63       case kPidName:
64         printf("t%lld name %d %s\n",
65                event.time, event.pid, event.path);
66         delete[] event.path;
67         break;
68     }
69   }
70   return 0;
71 }
72