See the archives above for more.

Very Sleepy is a free C/C++ CPU profiler for Windows systems.

Originally started as a fork of Nick Chapman's sleepy, many people have since contributed to add considerable improvements.

It supports any native Windows app, if it has standard PDB or DWARF2 debugging information. No recompilation is necessary – it can just attach to any app as it's running.

Both 32-bit x86 and 64-bit x64 systems are fully supported, and Very Sleepy will work with both Visual Studio or gcc/mingw compilers.

Profiling results are displayed in full call-graph format, and can additionally be saved and exported to CSV format.

Very Sleepy is released under the GNU Public License, so you're guaranteed the right to the source code and to change it how you wish.

For support, bug reports, and to help contribute, please visit our GitHub page.

Download

Latest Version 0.90-CS – 12.23.2014 Installer

Combined Windows x86/64 installer. Source code

.ZIP of the source tree. GitHub page

Access to development versions and bug reports. Changes This release is only possible due to the tireless efforts of Vladimir Panteleev, resulting in the merge of the Very Sleepy CS fork back into the mainline. Redesign parts of the file format and internal database representation, to allow more exact late symbol loading, as well as a disassembler view in the future

Add an "Address" column to all function lists For the call stack and callers view, the address specifies the address past the call instruction

Several fixes to the crash reporter

Use wxWidgets 2.9.5

Fix problems caused by dbghelp.dll hijacking

Fix handling of symbols containing whitespace characters

More user interface improvements

Contributed by Michael Vance: Add CSV export for the callstack view UI fixes and code cleanup



Release History

0.90-CS • installer • source • 12.23.2014 Merged fork back into the mainline. Redesign parts of the file format and internal database representation, to allow more exact late symbol loading, as well as a disassembler view in the future Add an "Address" column to all function lists For the call stack and callers view, the address specifies the address past the call instruction Several fixes to the crash reporter Use wxWidgets 2.9.5 Fix problems caused by dbghelp.dll hijacking Fix handling of symbols containing whitespace characters More user interface improvements Contributed by Michael Vance: Add CSV export for the callstack view UI fixes and code cleanup

0.83-CS • installer • source • 8.22.2013 Rename fork to "Very Sleepy CS" Numerous user interface performance, responsiveness and usability improvements Allow specifying additional symbol search paths Add Back and Forward menu items and hotkeys for function list navigation Improve overall performance Add late symbol loading by saving a minidump during profiling Install 32-bit version alongside 64-bit version Contributed by Richard Munn: Added a time limit option to the interface Added function highlighting and filtering

0.82 • installer • source • 1.4.2012 Bugfix release – fixed crash with long symbol names causing a buffer overflow.

0.81 • installer • source • 11.21.2011 Bugfix release – fixed crash on systems with non-English localisation. Added a crash reporter.

0.8 • installer • source • 11.15.2011 Support for GCC/mingw. You can now profile executables with embedded DWARF2 data and it should work. No special options are required for this, just compile with "-g" to make sure you have symbols present. You may also wish to use "-fno-omit-frame-pointer" to ensure correct callstacks, although Sleepy will generally work either way. You don't need to use "-pg" or any rubbish. It can even walk correct stacks between a Microsoft DLL into a GCC one, which was harder than you'd think. Symbol server support. Just click the 'download' button and it will automatically fetch any symbols from the configured symbol server (by default, Microsoft's public server). You can select a different one from the options dialog. Unicode support, so you can now have unicode snowmen in your filenames. Pause and resume while capturing. Output from the DBGHELP library is now captured and displayed in a log window, to aid tracking down mysterious PDB errors. Sleepy will now automatically search in the same directory as the EXE when looking for PDB files, as well as in the configured symbol cache. Speed throttle, in case you wish to capture over a very long time with a lower profiler overhead. Fixed bug where it would not load on Windows 2000. Launching executables from inside Sleepy now has a higher chance of actually working. You can restrict the tree to start from a given subset, for example, if you're only profiling one part of your program and want to throw out all the unrelated stuff. Just right-click on the symbol. Fixed a bug where the window settings could get screwed up sometimes.

0.7 • installer • source• 10.13.2010 64-bit support (hooray!). ×64 only, no Itanium. A new view for showing whole callstacks at once. Automatic collapsing of internal Windows kernel functions. More accurate time measurement when sampling deep callstacks. Profiling statistics (filename, date, duration, etc) are written into the .sleepy file. Syntax highlighting for the source view. Automatically find Microsoft CRT source paths. Added PID display to the process selector. Export data to a CSV file. Ability to select the working directory when launching an EXE.

0.6 • installer • source • 8.8.2009 Stops correctly upon process/thread termination. Added ability to launch an EXE, both from the GUI and the command line. Thread picker list now shows the function each thread is executing. Fixed module sorting (thanks to aras-p). Debug privilege patch (again thanks to aras-p). New capture progress window. Fixed bug where red margin counts would often not add up to 100%. Fixed callees count for some recursive functions. Upgraded to latest DBGHELP.DLL. Fixed SuspendThread problem when debugger is attached. Added helpful hint for system calls. Unknown functions now get the address shown. Delete temporary capture files on exit. Fixed bug where high CPU load would kill profile sampling rate. Many threading improvements. Rewrote CallStack class to not allocate memory all over the place.

0.5 • installer • source • 3.25.2009 multi-thread support

0.4 • installer • source• 4.10.2008 you can sort columns (hooray!) better handling of recursive functions remembers window position, and other small tweaks (you'll need to uninstall any old versions first, sorry)

0.3 • installer • source • 26.1.2008 doesn't throw an error if the process stops early better installer (installs correct CRT, I hope)

0.2 • installer • source • 26.7.2007 revamped UI call-graph profiling load-save

