A new version 1.8.1 is available from the SamplingProfiler page.
This minor updates fixes the displayed source code for samples gathered on a generic method (“Show Source Location” option) and other minor fixes.
Change log is as follows:
- Delphi XE4 path added to options.
- Display correct file for samples on generic methods.
- New Icon, cosmetic tweaks, fixed french text in popup menu.
The mini-guide Help is now compiled with Help’N Doc, and there is now an online version of the Sampling Profiler mini-guide (this was actually done sometime this summer, but somehow ended up in the proverbial back burner).
15 thoughts on “SamplingProfiler 1.8.1”
It will be very handy to attach/detach to/from running delphi process, just as asm profiler does.
Great… Just today I was going to experiment a bit with your sampling profiler.
My first impressions from multi-threaded profiling:
When using the OutputDebugString to add a Thread-ID I think I manged to lock up the profiler and had to kill it.
The Monte-Carlo Samples Gathering seems to work fine – and I don’t have to manage the Thread-IDs myself.
Great addition for my delphi tools!
I am probably missing something, but how do I profile a Delphi dll loaded by a non-Delphi application?
Without a true profiler, no true optimization!
Why not add our .mab format to the list of symbols?
I suspect our format may be smaller (and faster to open) than others.
See SynCommons.pas unit.
What about 64 bit ? Oh and XE5 🙂
@A.Bouchez Will check, though ZJDBG is fairly small (usually abgout 15 times smaller than the map file).
Would it happen to work with FreePascal debug info? It’s something I don’t support yet, and would really like to have, but just haven’t had the time to investigate.
@David Last Delphi 64bit I have is XE2, and its debugger no longer works in Win8, so Delphi 64 just isn’t a practical proposition anymore for me outside of small tests. Porting SamplingProfiler to FreePascal isn’t going to be straightforward at the moment (too many dependencies, too little time). XE5 support in next update (will be “guessed support”, can’t test)
@Dmitry Place your DLL debug information (map, jdbg) alongside the main executable of the other application, and run with the profiler.
You’ll get a message about having only rough profiling info (which will be the case for the main exe), but DLLs the application uses that have debug info will get detailed sampling information.
Well *if* you would opensource it. Support for 64 bit would be added instantly. 🙂
does the Delphi need need to be placed in the same directory as the exe? The dll is an in-proc COM library, which means the main exe never statically binds to it; it is loaded when a particular COM object is created using CoCreateInstance().
@Dmitry Dynamic loading should work as well. Map file of a dll needs to be alongside dll, or you can used JDBG/ZJDBG and embed the info in the dll. If that doesn’t work, could you provide a sample/simple test case?
I’m getting Assertion failure (S:\x-libs\JCL\source\windows\JclTD32.pas, line1489). I have XE3 compiled app, using jdbg map file.
@Marko Any chance of sending me a sample that would reproduce the issue? (pre-compiled exe, jdbg & map, as I don’t have XE3 to compile on)
@Eric, just found out compiled exe hits assertion failure when running with release configuration, but with debug configuration it works okay. Anyway its not useful running profiler with release config 🙂 So where I can send pre-compiled exe + jdbg ?
@Eric, Sorry, But now its really weird issue. I enabled Debug information in Linking, compiled project and change it back to false. And now suddenly it works, huh. Other options are the same when I got that assertion failure.
Comments are closed.