Very Sleepy 0.7, now with added 64-bitness

Wednesday October 13, 2010

Very Sleepy 0.7 has been released!

The 0.7 release now has 64-bit support. The installer will automatically install the correct version for your machine. This work not be possible without the tireless effort of Johan Köhler, and his threats to open a can of surströmming if I didn’t upload it.

NOTE: Users of XP64 will not be able to profile 32-bit processes using the 64-bit build, due to the way WoW64 works. It will work correctly on Vista and above though.

If you have a 64-bit machine, and are already using the 32-bit version, you should uninstall that first before upgrading.

  • 0.7 changes:
    • 64-bit support (hooray!). x64 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.
— Kayamon
---

Wednesday October 13, 2010

  1. Just tried it, looks good. However there might be a bug in the call graph code as for instance it reports foo() is called from bar() which isn’t the case at all.

    foo() and bar() come from different dlls.

    When I have time, I’ll try to come up with mockup dlls and test program so that I can make a proper report.

    — Gregory
    ---

    · Oct 14, 09:40 AM · #

  2. Sorry for the false report.

    Very Sleepy 0.6 failed to uninstall for some reason so I was still using this version (launched through Launchy).

    Now version 0.7 works great.

    Thank you again for all your efforts

    — Gregory
    ---

    · Oct 14, 10:00 AM · #

  3. The Surströmming is just a defensive measure against the Marmite.

    — Johan Köhler
    ---

    · Oct 14, 10:48 AM · #

  4. It’s me again.

    Compiling my test program in 32bits and profiling it makes Very Sleepy 0.7 report it spends 89% of the time in free(); for some obscure reason.

    Compiling the same program in 64bits and profiling it with Very Sleepy 0.7 reports a more coherent profile: free() is no more the top called function in the profile (and I know it’s not the case in the program).

    — Gregory
    ---

    · Oct 15, 01:02 AM · #

  5. Gregory

    Send me an email. exe’s and pdb’s should do it. Source would be nice, but not necessary.

    Because of spam bots: its waykohler on google’s mail service.

    — Johan Köhler
    ---

    · Oct 15, 02:22 PM · #

  6. Wow, a very useful tool, especially the ease of use compared to other profilers.
    Thank you for the work.

    — Norman
    ---

    · Nov 10, 01:33 PM · #

  7. Thank you for this tool.
    It was very useful for me today.

    — Asaf
    ---

    · Jan 3, 08:22 AM · #

  8. Very Sleepy 0.7 rocks! Well done.

    The only thing I’m missing is a way to see where the cache misses occur.

    — ponce
    ---

    · Mar 6, 06:21 AM · #

  9. Very handy tool. One tip for Windows 7 users: use “Run as Administrator” for Very Sleepy. That allows it to see and profile all processes.

    — Steve
    ---

    · Mar 10, 10:08 AM · #

  10. Hello,
    I am on win7 64 bits. I used very sleepy intensively,worked great and all of a sudden, it is not able to display the profiling results. I tried to display saved profiling datas (.SLEEPY), but it has the same behavior as when trying the program in “live” mode. Any idea ?

    — Gilles
    ---

    · Apr 19, 02:13 AM · #

  11. Exactly the same thing happened to me (suddenly not able to display results on win7 64bit). Is there any fix for this? Thanks alot!

    — Peter
    ---

    · May 25, 07:09 AM · #

  12. Thank you for a great software! It often helps me to find bottlenecks in code and fix them.

    Unfortunately at some point i think i’ve met the same problem as Gilles and Peter had – software stopped to being able to display results after profiling or when opening saved file. I have done some investigations here and found that some crazy values have been saved in registry, in fields responsible for location and position of main window. So if someone meets the same problem – you could try to go to HKCU/Software/codernotes.com/ and delete all Very Sleepy subkeys under it. That resolved problem for me.

    Hope this is useful.

    — Alex
    ---

    · Jun 4, 01:17 AM · #

  13. Hey thanks Alex!

    I’m not really sure what could cause it to suddenly do that, but I’m glad you found the cause.

    — Kayamon
    ---

    · Jun 4, 02:52 AM · #

  14. Hi Kayamon,

    I can’t guarantee that this is a cause of the problems other people met, but in my case i think it happened after i had to close software when it was processing a pretty big ammount of data. I was trying to measure a pretty big usecase (i think total duration was more than a few minutes) for a huge project with a lot of debug info to be parsed. At some point while waiting when VerySleepy will process all data and display main window, i understood that i forget something, so i decided to close very sleepy by, i think, pressing right button in task bar and selecting close.

    From a code point of view – i think the problem may be related to fact that constructor of MainWin already executed, but window didn’t really finished initalization. So when destructor executes – GetScreenPosition may be returning some random values. In fact i’m using wxWidgets in my project, and i had a bit similar problems once (not completely the same of course, i was using 2-stage initialization, i.e. constructor + Create call). So may be assert in destructor is a place to take a look.

    But this is kind of guess..

    Best Regards,

    — Alex
    ---

    · Jun 4, 07:34 AM · #

  15. Very nice tool, I like it. Unfortunately Very Sleepy does not seem to load the symbol files. I execute and profile the application on a separate PC (can’t do it on my own due to limited hardware support of the software). Application and pdb files are located under C:\AppXYZ, but Very Sleepy only shows cryptical names. Have tried to save the file and open it on the development machine, but still no luck.

    Any hints what I’m doing wrong?

    — Markus
    ---

    · Sep 2, 02:53 AM · #

  16. One thing is to try putting the exe and pdb files in the same directory path that you compiled it in. Visual studio likes to bake the PDB filename hardcoded into the EXE.

    If you have Visual Studio installed on the target machine, try debugging the EXE in that and seeing if you get any symbols. It might give more information.

    — Kayamon
    ---

    · Sep 2, 02:58 AM · #

  17. Under Windows 7 with Very Sleepy 0.7 I get on launch a

    Profile Error: Error: SymbolInfoExcep: SymInitialize faild.

    Then my program and Sleepy starts. When I press OK to stop profiling, Sleepy shuts down.

    Can you help me?

    — Christof
    ---

    · Sep 9, 04:16 AM · #

  18. I was getting the same SymbolInfoExcep error when I launched an exe. If found that if I added a backslash (”\”) to the end of the working directory, then it worked.

    — Brian
    ---

    · Sep 21, 01:18 PM · #

  19. Very Sleepy 0.7 crashes on startup when runing on Windows 2000.
    The cause seems to be a call of null function pointer on following lines in osutils.cpp:
    IsWow64ProcessPtr = (IsWow64Process_t *)GetProcAddress(GetModuleHandle(“kernel32”),“IsWow64Process”);
    #ifndef _WIN64
    IsWow64ProcessPtr(GetCurrentProcess(),&isOn64BitOs);
    #endif

    — jhe
    ---

    · Sep 22, 06:21 PM · #

  20. Could it be possible to give a link to a repository for verysleepy, like github or bitbucket? It would be way more easy to add new features.

    — Drahakar
    ---

    · Oct 30, 08:12 PM · #

  21. A feature suggestion (if you have time / care enough)…

    It would be nice to be able to right-click on a function in the profile and say “Ignore this”. It would then remove it from the profile and re-calculate the inclusive/exclusive percentages with that function excluded.

    The reason I suggest it is that there’s often functions like WaitForSingleObject that appear to be taking a lot of time but are actually harmless. Then all of the functions I actually care about show up as taking 0.06% or something. I’d love to be able to just “chop out” a couple of non-interesting items and focus on whatevers left.

    Anyway, its a great tool, very easy to use, thanks for your work!

    — moo
    ---

    · Nov 15, 09:12 AM · #

(optional, only used to notify you of replies)
(optional)
 
---