Very Sleepy 0.8 has been released!
Well, this is certainly something I should have done a long time ago. I feel I should apologise to the approximately 7 billion people who have sent me patches over the past year or so, which I have been slack in integrating.
But now, at long last, here it is.
Download it here.
- New features in 0.8:
- 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.
You’ve never had it so good!
twitter:
Nice work!
I’ll have a look soon, been busy doing Java work but soon enough.
Dan
· Nov 15, 11:39 PM · #
Thank you so much for your work, and congratulations!
· Nov 16, 08:25 AM · #
Thank you very much!
· Nov 16, 01:37 PM · #
Really great! Has saved me a bunch of times!
· Nov 16, 02:14 PM · #
Great, Thank you.
· Nov 17, 03:51 AM · #
Thank you for great profiler! Unfortunately, it doesn’t work properly on my computer. I use 64-bit tdm gcc 4.6.1 and after profiling it crashes, when Sleepy writes “Please wait while the profile database is scanned…”. I compiled my app with and without -g, with no difference.
· Nov 20, 10:19 AM · #
Hi,
I downloaded tdm gcc 4.6.1 to see if I could replicate the problem, but unfortunately it seems to work fine here :-/
· Nov 20, 01:26 PM · #
I have the same problem and I’ve found it’s caused by the regional settings. If you don’t use ‘.’ as the decimal separator, Very Sleepy crashes while trying to read the stats. I think it is independent of the compiler, because I use VS2005.
· Nov 21, 02:31 AM · #
Thanks gusanje!
You’re absolutely right, that’s exactly what it was.
I have posted a new version with a fix for this.
· Nov 21, 08:54 PM · #
Thank you Kayamon for fixing it :)
· Nov 27, 04:00 AM · #
Not sure 0.81 fixed the locale issue?
I downloaded and tried it – it crashed every time after stopping the profiling.
When I changed my locale to UK it worked.
· Nov 30, 01:50 AM · #
Anders – really? that’s odd.
What locale were you using beforehand?
· Nov 30, 01:58 AM · #
My conclusion was premature – I get craches with UK locale too. Must be something else.
· Nov 30, 05:49 AM · #
I’ve been running under a debugger and it found a buffer overflow in SymbolInfo::getProcForAddr() when calling SymFromAddrW(). If you can compile your own, try changing:
symbol_info->MaxNameLen = sizeof(buffer) – sizeof(SYMBOL_INFOW) + 1;
to:
symbol_info->MaxNameLen = ((sizeof(buffer) – sizeof(SYMBOL_INFOW)) / sizeof(WCHAR)) + 1;
I’ve tried mailing Kayamon but I’ve not heard anything yet. I’ve got some extra tweaks to optimize the interface – hopefully he can take a look!
Hope this helps,
· Dec 1, 12:38 PM · #
If I include the pdb file, I keep getting crashes after profiling. If I don’t, it works, but obviously without resolving anything. Tried downloading the source and applying Rich’s fix, but seeing that I didn’t have wxWidgets installed and didn’t want to go through that, I gave up. Please fix if you have a chance. Great product btw.
· Dec 13, 03:09 AM · #
Thanks for very sleepy—it has become a staple to my profiling in windows.
· Dec 15, 06:29 PM · #