1. A method, comprising: detecting a call to a subroutine via at least one comparison of at least one instruction; in response to said detecting the call to the subroutine, generating a program trace correlation message; sending the program trace correlation message to a trace port; sampling data associated with an execution of the subroutine; starting at least one performance monitor; generating at least one of an ownership trace message and an in-circuit trace message; and sending the at least one of the ownership trace message and the in-circuit trace message to the trace port; wherein said sampling the data associated with the execution of the subroutine includes sampling the at least one performance monitor; sending the sampled data to the trace port; detecting a return from the subroutine; in response to said detecting the return from the subroutine, generating a trace message; sending the trace message to the trace port; and correlating the sampled data to the subroutine using a boundary for the subroutine determined from the program trace correlation message and the trace message; wherein the execution of the subroutine is not interrupted by at least said sampling the data, said sending the sampled data, said detecting the return from the subroutine, and said correlating the sampled data.