Late Symbol Resolution - VerySleepy/verysleepy GitHub Wiki

Very Sleepy optionally supports late symbol resolution, which means that debugging symbols do not need to be present during the profiled program's execution. This is useful if the profiled program needs to be executed on a computer which does not (or may not) have the program's debugging information.

Late symbol resolution is implemented by saving a minidump (.mdmp) file during profiling. The minidump records a snapshot of the information about loaded modules and their addresses, and can be used with the Microsoft debug engine to look up debug symbols at a later time.

The workflow to use late symbol resolution is as follows:

  • On the user's computer:
    • The user starts Very Sleepy
    • In Very Sleepy's options, the user enables the Save minidump after... checkbox
    • The user profiles the target program, either by running a new instance, or attaching to an existing instance
    • In the profiling results window, the user saves the results to a .sleepy file, and sends the file to the developer.
  • On the developer's computer:
    • In Very Sleepy's options, the developer configures the symbol search paths to include the path containing debug information for the profiled program
    • The developer loads the .sleepy file received from the user
    • In the profiling results window, the developer selects the FileLoad symbols from minidump. Very Sleepy will load the minidump file contained in the .sleepy file, and use it to initiate a post-mortem debugging session to look up symbol information.

Note: minidumps of 32-bit processes saved by 64-bit processes will most likely not be saved correctly. Therefore, to profile a 32-bit program, always use the 32-bit version of Very Sleepy on the user's computer.