Usage: sudo perf record -e intel_pt//u --filter='filter 0x400000 / 0x1000 @./a.out' ./a.out 123
a.out is my program (for loop, call using function pointer and use of longjump) and 123 is the argument. Output: [ perf record: Woken up 1 times to write data ] [ perf record: Captured and wrote 1.171 MB perf.data ] Output contains mostly MTC packets and no TNT or TIP packets. I am on the latest mainline version of kernel (b67be92) and perf version perf version 4.8.gb67be9. What could be the problem? I am using it wrong? Thanks
#include <iostream> #include <setjmp.h> jmp_buf go; int foo() { return 5; } int bar() { longjmp(go,1); return 6; } int main(int argc, char* argv[]) { bool jumped = false; int (*ptr) (); // if arg then long jump if (argc != 2) { ptr = foo; } else { ptr = bar; } for (int i = 0; i < 50000000; ++i) { ++i; --i; } setjmp(go); if (!jumped) { jumped = true; ptr(); } else { std::cout << "AFTER long jump." << std::endl; } return 0; }
a.out
Description: Binary data