/verysleepy

Very Sleepy, a sampling CPU profiler for Windows

Primary LanguageC++GNU General Public License v2.0GPL-2.0

Very Sleepy Build status

This is Very Sleepy, a sampling CPU profiler for Windows with a wxWidgets-based GUI.

Very Sleepy screenshot

Features

Documentation

Very Sleepy documentation is available on the GitHub project wiki.

Download

Official releases can be downloaded from the project's website, or from the GitHub releases page.

For the latest development version, you can download the latest AppVeyor artifact.

History

Version 0.92 (under development):
  • Do not include time while paused in sample durations
  • Add command-line switch /d to wait before starting profiler
  • Contributed by aaalexandrov:
    • Add sample filtering by thread (#86)
    • Profile new threads as they are created (#88)
Version 0.91 (2021-08-19):
  • Rename project back to Very Sleepy (this fork repository is now the official repository)
  • Use Dr. MinGW to resolve MinGW symbols by default
  • Update Wine DbgHelp for Windows
  • Improve and greatly simplify build process (#40)
  • Add continuous integration via AppVeyor
  • Improve Visual Studio 2015 support (#28)
  • More user interface fixes and improvements
  • Contributed by Bernat Muñoz Garcia:
    • Use Scintilla for syntax highlighting (#16)
  • Contributed by Ashod:
    • 64-bit fixes (#21)
  • Contributed by k4hvd1:
    • Added command-line option /a to profile an existing process by its process ID (#30)
  • Contributed by Markus Gaisbauer:
    • Added "Total CPU time" column (#37)
    • Improved handling of processes with many threads (#38)
  • Contributed by Bernhard Schelling:
    • Added Callgrind format file export feature (#46)
    • Fixed symbols (PDB files) not being unloaded after detaching (#57)
    • Improved jumping to source lines from list views (#58)
  • Contributed by rammerchoi:
    • Added command-line switch '/mt' and '/mbt' (#48)
  • Contributed by Graeme Kelly:
    • Added display of thread names on threads lists (#60)
    • Added column headers to exported CSV files (#62)
  • Contributed by Yujiang Wang:
    • Fixed missing buttons for very long paths (#65)
    • Updated DbgHelp to 10.0.17763.1 (#65)
  • Contributed by djdron:
    • Improved HDPI support (#74)
    • Fixed some memory leaks (#75)
    • Updated Dr.MinGW (#77)
Version 0.90 (2014-12-23):
  • 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 Unknown W. Brackets:
    • 64-bit fixes (#6)
  • Contributed by Michael Vance:
    • Add CSV export for the callstack view
    • UI fixes and code cleanup
Version 0.83 (2013-08-22):
  • 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 (#1)
    • Added function highlighting and filtering (#2)
    • Interface improvements (#3)
First fork release (2013-01-11):
  • GitHub repository created
  • Fix several issues with the /r command-line option
  • Various UI improvements
  • Don't completely abort due to one failed GetThreadContext call (fixes "Error: ProfilerExcep: GetThreadContext failed." errors by ignoring the occasional seemingly-harmless error condition)
Older changes

Changes before this repository's creation can be found on the project's website.

Building

Prerequisites

  • Visual C++ 2010 or newer
  • CMake (for Dr. MinGW)
  • 7-Zip (for unpacking MinGW)
  • InnoSetup 5 (for building an installer)

Instructions

Third party dependencies are registered using git submodules, so you will need to either clone with the --recursive flag, or run git submodule update --init after cloning.

The build.cmd batch file will attempt to build Very Sleepy and its dependencies.

Alternatively, you can build Dr. MinGW using the thirdparty/drmingw_build_mingw.cmd batch file, then use the Visual Studio solution file (sleepy.sln) to build everything else.

Contributing

If you'd like to contribute a patch, please open a pull request. I'll try to review and merge it as soon as my time will allow.

Bug reports and feature requests are welcome as well -- please file them as GitHub issues.