1. A method for generating high compression program flow trace data, comprising: generating first program flow trace data whenever a conditional branch instruction of a program is executed by a central processing unit (CPU); generating second program flow trace data whenever an indirect branch instruction of a subset of indirect branch instructions is executed by the CPU, the subset of indirect branch instructions excluding a RETURN (RET) indirect branch instruction of a function or a subroutine of the program for which a stack for storing instruction addresses of the program is not manipulated after a CALL instruction to the function or subroutine is executed by the CPU and before the RET instruction is executed by the CPU; and generating third program flow trace data whenever the stack for storing instruction addresses of the program is manipulated, the manipulation occurring after the CALL instruction to the function or subroutine is executed by the CPU and before the RET instruction is executed by the CPU.