read_pid.cpp revision 55a2c71f27d3e0b8344597c7f281e687cb7aeb1b
155a2c71f27d3e0b8344597c7f281e687cb7aeb1bThe Android Open Source Project#include <stdio.h> 255a2c71f27d3e0b8344597c7f281e687cb7aeb1bThe Android Open Source Project#include <stdlib.h> 355a2c71f27d3e0b8344597c7f281e687cb7aeb1bThe Android Open Source Project#include <inttypes.h> 455a2c71f27d3e0b8344597c7f281e687cb7aeb1bThe Android Open Source Project#include "trace_reader.h" 555a2c71f27d3e0b8344597c7f281e687cb7aeb1bThe Android Open Source Project 655a2c71f27d3e0b8344597c7f281e687cb7aeb1bThe Android Open Source Projectint main(int argc, char **argv) { 755a2c71f27d3e0b8344597c7f281e687cb7aeb1bThe Android Open Source Project if (argc != 2) { 855a2c71f27d3e0b8344597c7f281e687cb7aeb1bThe Android Open Source Project fprintf(stderr, "Usage: %s trace_file\n", argv[0]); 955a2c71f27d3e0b8344597c7f281e687cb7aeb1bThe Android Open Source Project exit(1); 1055a2c71f27d3e0b8344597c7f281e687cb7aeb1bThe Android Open Source Project } 1155a2c71f27d3e0b8344597c7f281e687cb7aeb1bThe Android Open Source Project 1255a2c71f27d3e0b8344597c7f281e687cb7aeb1bThe Android Open Source Project char *trace_filename = argv[1]; 1355a2c71f27d3e0b8344597c7f281e687cb7aeb1bThe Android Open Source Project TraceReaderBase *trace = new TraceReaderBase; 1455a2c71f27d3e0b8344597c7f281e687cb7aeb1bThe Android Open Source Project trace->Open(trace_filename); 1555a2c71f27d3e0b8344597c7f281e687cb7aeb1bThe Android Open Source Project 1655a2c71f27d3e0b8344597c7f281e687cb7aeb1bThe Android Open Source Project while (1) { 1755a2c71f27d3e0b8344597c7f281e687cb7aeb1bThe Android Open Source Project PidEvent event; 1855a2c71f27d3e0b8344597c7f281e687cb7aeb1bThe Android Open Source Project if (trace->ReadPidEvent(&event)) 1955a2c71f27d3e0b8344597c7f281e687cb7aeb1bThe Android Open Source Project break; 2055a2c71f27d3e0b8344597c7f281e687cb7aeb1bThe Android Open Source Project switch (event.rec_type) { 2155a2c71f27d3e0b8344597c7f281e687cb7aeb1bThe Android Open Source Project case kPidFork: 2255a2c71f27d3e0b8344597c7f281e687cb7aeb1bThe Android Open Source Project printf("t%lld fork tgid %d pid %d\n", event.time, event.tgid, event.pid); 2355a2c71f27d3e0b8344597c7f281e687cb7aeb1bThe Android Open Source Project break; 2455a2c71f27d3e0b8344597c7f281e687cb7aeb1bThe Android Open Source Project case kPidClone: 2555a2c71f27d3e0b8344597c7f281e687cb7aeb1bThe Android Open Source Project printf("t%lld clone tgid %d pid %d\n", event.time, event.tgid, event.pid); 2655a2c71f27d3e0b8344597c7f281e687cb7aeb1bThe Android Open Source Project break; 2755a2c71f27d3e0b8344597c7f281e687cb7aeb1bThe Android Open Source Project case kPidSwitch: 2855a2c71f27d3e0b8344597c7f281e687cb7aeb1bThe Android Open Source Project printf("t%lld switch %d\n", event.time, event.pid); 2955a2c71f27d3e0b8344597c7f281e687cb7aeb1bThe Android Open Source Project break; 3055a2c71f27d3e0b8344597c7f281e687cb7aeb1bThe Android Open Source Project case kPidExit: 3155a2c71f27d3e0b8344597c7f281e687cb7aeb1bThe Android Open Source Project printf("t%lld exit %d\n", event.time, event.pid); 3255a2c71f27d3e0b8344597c7f281e687cb7aeb1bThe Android Open Source Project break; 3355a2c71f27d3e0b8344597c7f281e687cb7aeb1bThe Android Open Source Project case kPidMmap: 3455a2c71f27d3e0b8344597c7f281e687cb7aeb1bThe Android Open Source Project printf("t%lld mmap %08x - %08x, offset %08x '%s'\n", 3555a2c71f27d3e0b8344597c7f281e687cb7aeb1bThe Android Open Source Project event.time, event.vstart, event.vend, event.offset, event.path); 3655a2c71f27d3e0b8344597c7f281e687cb7aeb1bThe Android Open Source Project delete[] event.path; 3755a2c71f27d3e0b8344597c7f281e687cb7aeb1bThe Android Open Source Project break; 3855a2c71f27d3e0b8344597c7f281e687cb7aeb1bThe Android Open Source Project case kPidMunmap: 3955a2c71f27d3e0b8344597c7f281e687cb7aeb1bThe Android Open Source Project printf("t%lld munmap %08x - %08x\n", 4055a2c71f27d3e0b8344597c7f281e687cb7aeb1bThe Android Open Source Project event.time, event.vstart, event.vend); 4155a2c71f27d3e0b8344597c7f281e687cb7aeb1bThe Android Open Source Project break; 4255a2c71f27d3e0b8344597c7f281e687cb7aeb1bThe Android Open Source Project case kPidSymbolAdd: 4355a2c71f27d3e0b8344597c7f281e687cb7aeb1bThe Android Open Source Project printf("t%lld add sym %08x '%s'\n", 4455a2c71f27d3e0b8344597c7f281e687cb7aeb1bThe Android Open Source Project event.time, event.vstart, event.path); 4555a2c71f27d3e0b8344597c7f281e687cb7aeb1bThe Android Open Source Project delete[] event.path; 4655a2c71f27d3e0b8344597c7f281e687cb7aeb1bThe Android Open Source Project break; 4755a2c71f27d3e0b8344597c7f281e687cb7aeb1bThe Android Open Source Project case kPidSymbolRemove: 4855a2c71f27d3e0b8344597c7f281e687cb7aeb1bThe Android Open Source Project printf("t%lld remove %08x\n", event.time, event.vstart); 4955a2c71f27d3e0b8344597c7f281e687cb7aeb1bThe Android Open Source Project break; 5055a2c71f27d3e0b8344597c7f281e687cb7aeb1bThe Android Open Source Project case kPidExec: 5155a2c71f27d3e0b8344597c7f281e687cb7aeb1bThe Android Open Source Project printf("t%lld argc: %d\n", event.time, event.argc); 5255a2c71f27d3e0b8344597c7f281e687cb7aeb1bThe Android Open Source Project for (int ii = 0; ii < event.argc; ++ii) { 5355a2c71f27d3e0b8344597c7f281e687cb7aeb1bThe Android Open Source Project printf(" argv[%d]: %s\n", ii, event.argv[ii]); 5455a2c71f27d3e0b8344597c7f281e687cb7aeb1bThe Android Open Source Project delete[] event.argv[ii]; 5555a2c71f27d3e0b8344597c7f281e687cb7aeb1bThe Android Open Source Project } 5655a2c71f27d3e0b8344597c7f281e687cb7aeb1bThe Android Open Source Project delete[] event.argv; 5755a2c71f27d3e0b8344597c7f281e687cb7aeb1bThe Android Open Source Project break; 5855a2c71f27d3e0b8344597c7f281e687cb7aeb1bThe Android Open Source Project case kPidKthreadName: 5955a2c71f27d3e0b8344597c7f281e687cb7aeb1bThe Android Open Source Project printf("t%lld kthread tgid %d pid %d %s\n", 6055a2c71f27d3e0b8344597c7f281e687cb7aeb1bThe Android Open Source Project event.time, event.tgid, event.pid, event.path); 6155a2c71f27d3e0b8344597c7f281e687cb7aeb1bThe Android Open Source Project delete[] event.path; 6255a2c71f27d3e0b8344597c7f281e687cb7aeb1bThe Android Open Source Project break; 6355a2c71f27d3e0b8344597c7f281e687cb7aeb1bThe Android Open Source Project case kPidName: 6455a2c71f27d3e0b8344597c7f281e687cb7aeb1bThe Android Open Source Project printf("t%lld name %d %s\n", 6555a2c71f27d3e0b8344597c7f281e687cb7aeb1bThe Android Open Source Project event.time, event.pid, event.path); 6655a2c71f27d3e0b8344597c7f281e687cb7aeb1bThe Android Open Source Project delete[] event.path; 6755a2c71f27d3e0b8344597c7f281e687cb7aeb1bThe Android Open Source Project break; 6855a2c71f27d3e0b8344597c7f281e687cb7aeb1bThe Android Open Source Project } 6955a2c71f27d3e0b8344597c7f281e687cb7aeb1bThe Android Open Source Project } 7055a2c71f27d3e0b8344597c7f281e687cb7aeb1bThe Android Open Source Project return 0; 7155a2c71f27d3e0b8344597c7f281e687cb7aeb1bThe Android Open Source Project} 72