1. A method comprising: receiving, by a processing device, a recorded state of a program, the recorded state comprising a base address of the program, an exception handling table of the program, and a standalone stack frame comprising an executable address for a call instruction of a function of the program; determining, by the processing device, a list of functions in view of the recorded state of the program; determining, by the processing device, a function start offset and a function end offset for the standalone stack frame in view of the exception handling table of the program; receiving a translation of the function; determining an operand from the translation; generating a fingerprint from the operand; creating, by the processing device, a stack trace in view of the list of functions and the fingerprint without using debugging symbols; and updating the recorded state of the program to include the function start offset and the function end offset.