Releases: KDAB/hotspot
continuous
The newest version directly from the master branch. THIS IS BLEEDING ENDGE AND WILL MOST LIKELY CONTAIN UNKOWN BUGS.
v1.5.1 - bug fix release
This fixes an issue with an outdated version of elfutils in the appimage.
Features
Bug Fixes
- add a wrapper for std::valarray to catch out of range access (d8de369), closes #629
- can't select directory in unwind->sysroot (f6a4e8f), closes #645
- clear flamegraph background in 5.15.12 (8e54107), closes #624
- crash in disassembler on hover (4cfdd11), closes #642
- don't show ansi escape sequences in tooltip (ed8cf88)
- update elfutils to 0.190 (e4ac31e)
qt-kde-debuginfo
Qt and KDE debug symbols
v1.5.0
ChangeLog for hotspot v1.5.0
The hotspot v1.5.0 release is finally here 🎉
It comes packed with a wealth of code cleanups, bug fixes and new functionality.
Most notably, the disassembly view has been further improved with better searching,
highlighting and faster performance.
Furthermore, we reworked the authentication mechanism to allow perf record
get
run directly with elevated priveleges via pkexec
, obsoleting the error prone
old mechanism (see also https://nvd.nist.gov/vuln/detail/CVE-2023-28144).
We now also fully support Qt6 and KF6, while keeping compatibility with Qt5
and KF5. The AppImage below is still build with Qt5 but it might be the last
time that we do this. The next version might become Qt6 only.
Many thanks to the various contributors that help build this software, both
by writing code as well as reporting bugs.
Happy profiling everyone 🚀
What's Changed
- perfdata added to file open list by @GitMensch in #443
- split README by @GitMensch in #447
- add command line options to README by @GitMensch in #449
- make syntax highlighting customizeable by @lievenhey in #448
- run tests on ubuntu 20.04 ci runner by @lievenhey in #456
- extend appimage debugging notes by @GitMensch in #459
- use non-deprecated function KX11Extras::activeWindow by @lievenhey in #458
- Make libdebugd check in perfparser.cmake take into account library status by @DarkDefender in #465
- Add: QAction to restore default layout by @Da-Viper in #479
- fix sorting order of location in caller callee view by @lievenhey in #468
- improvements for the disassembler by @lievenhey in #457
- allow hotspot to run without gui if --exportTo is supplied by @lievenhey in #481
- Test disassembler highlighting by @lievenhey in #471
- Add link to Fedora repo by @bkmgit in #491
- fix kddockwidgets warning by @lievenhey in #487
- Set source path by @lievenhey in #486
- add search function for source code was: cache source code in vector for easier access in search function by @lievenhey in #470
- New elevate system by @lievenhey in #493
- add option to set custom source paths by @lievenhey in #497
- Set source path fixes by @lievenhey in #499
- remove unused includes by @lievenhey in #504
- remove query stuff from record page by @lievenhey in #454
- use upstream for PrefixTickLabels by @lievenhey in #507
- Search improvements by @lievenhey in #503
- Perf map select by @lievenhey in #510
- add copy function to disassembly views by @lievenhey in #509
- shove flamegraph controls into QToolBar by @lievenhey in #512
- Adjust to KF6 KNotification API change by @kbroulik in #511
- check if perf support libtraceevent by @lievenhey in #520
- add specific version of kf5 to appimage by @lievenhey in #514
- Update perfparser and use configure_file to generate config-perfparser.h by @dfaure-kdab in #517
- fix out of range access by @lievenhey in #530
- Disable branches by @lievenhey in #518
- use python 3.11 to run pre-commit on the ci by @lievenhey in #547
- adjustments to objdump call by @GitMensch in #535
- Small fixups by @lievenhey in #546
- make clang-tidy happy by @lievenhey in #550
- minor typo correction: unknown by @GitMensch in #540
- run hotspot without GUI for any command-line only option by @GitMensch in #549
- initial gitpod configuration by @GitMensch in #445
- Fix KF6 build by @nicolasfella in #562
- exclude objdump.indexed_start_internal.txt from pre-commit by @lievenhey in #565
- extend old binary filter instead of replacing it by @GitMensch in #559
- don't include non-working context-menu entries by @GitMensch in #558
- limit assembly highlighters by @lievenhey in #567
- add option to hide hexdump by @lievenhey in #566
- peek into file before open by @GitMensch in #539
- add support for kddockwidgets 2.0 by @lievenhey in #570
- use QString overload for KConfigGroup by @lievenhey in #572
- [enhancement] cut 60% time for PerfParser::filterResults by @MuchToMyDelight in #574
- Better asm syntax highlighting by @lievenhey in #538
- add include guard to frequency dock access by @lievenhey in #587
- Disable disassembly of inline functions by @lievenhey in #568
- Enable position independent code for these tests by @amantia in #590
- added test for PERF_FORMAT_LOST attribute by @GitMensch in #579
- CallerCallee add jump to source location in disassembly by @lievenhey in #573
- Fix disassembly navigation by @lievenhey in #593
- Remove the date range from KDAB copyrights by @winterz in #596
- fix jump to disassembly in location view by @lievenhey in #592
- add ci test for non optional build by @lievenhey in #598
- fix wrong source code shown by @lievenhey in #599
- Add error message when exporting a flamegraph that hasn't been opened by @redstrate in #588
- update ci files by @lievenhey in #603
- add vscode applications to the predefined IDEs for "Open in Editor" by @GitMensch in #606
- Fix too many parallel build jobs in appimage build by @Jordan474 in #608
- HighlightedText: Check m_highlighter for nullptr by @kbroulik in #616
- fix typo in disassemblyoutput.h by @lievenhey in #618
- fix multiline highlighting was
add ci test for non optional buildby @lievenhey in #594 - fix source code search by @lievenhey in #595
New Contributors
- @DarkDefender made their first contribution in #465
- @Da-Viper made their first contribution in #479
- @bkmgit made their first contribution in #491
- @kbroulik made their first contribution in #511
- @MuchToMyDelight made their first contribution in #574
- @amantia made their first contribution in #590
- @winterz made their first contribution in #596
- @redstrate made their first contribution in #588
- @Jordan474 made their first contribution in #608
Full Changelog: v1.4.1...v1.5.0
NOTE: GitHub does not allow me to upload the AppImage directly anymore, you need to gunzip
the compressed AppImage.gz
first 🤷
v1.4.1 - minor packaging bugfixes
This release fixes an issue with the AppImage when trying to export data to the .perfparser
format. Additionally, packager builds from the tarballs should now work properly.
v1.4.0 - better disassembly view and more
This feature release contains close to 400 commits since the last stable v1.3.0 release. It comes with its usual assorted list of bug fixes and performance improvements. Additionally, there are some new noteworthy features:
- a greatly improved disassembly view with a godbolt-like source code annotation
- the self cost columns for tracepoints are now hidden by default, as they would always show 0 except for the function that contains the tracepoint. the inclusive cost column is much more useful
- more flexible window layouting with KDDockWidgets
- you can export and import data from hotspot in a custom format that is efficient to load and self-contained, meaning exported data can be read on any other machine with hotspot and does not require access to the original client application code for unwinding anymore
note: this feature is broken in this release when using the AppImage, see #441 and stay tuned for a 1.4.1 release that will contain a fix for this issue - analysis data can be grouped by thread, process or CPU
- demangling for the D programming language
- a new frequency page that shows how often certain events got measured, which can also indicate the CPU frequency scaling when
cycles
are measured - new GitHub actions based CI and continuous AppImage build
v1.3.0 - performance improvements, zstd compression and rust demangling support
Hotspot became much faster at interpreting data for large complex applications: Analyzing perf.data
files for firefox
e.g. with its monster libxul
is now magnitudes faster than it was previously.
On top of that, we now properly support analysis of zstd compressed data files, i.e. those obtained via perf record -z
. This feature easily reduces the size of the perf.data
files by one to two orders of magnitude.
The timeline has been improved and now shows tick marks on the time axes, as well as smart time unit prefixes when zoomed in.
Additionally, hotspot can now demangle rustc
symbols. And finally the perfparser submodule was updated with tons of fixes and improvements, such as better support for fork-based parallelism.
Fixed issues in this release:
- #116: Unable to widen "Symbol" column in Top Down view
- #173: Feature Request: Support gksu for "Profile System" in AppImage
- #189: better formatting of times and trace costs in flamegraph and tooltips
- #190: fix time formatting
- #192: Loading a trace is much slower in 1.2 than in 1.1
- #197: Perfparser exits with code 1 (TCP Socket error) when opening a perf.data file
- #205: feature: open editor on function
- #220: group threads by process
- #224: android simpleperf support
- #230: Timeline part takes too much space
- #234: Profile system is broken
- #236: README required dependencies (QT5) out of date with master branch cmake
- #237: proper rust symbol demangling
- #239: enable rust demangling for appimages
- #241: Perfparser/Hotspot cannot unwind the stack for fork() of created processes
- #243: feature: auto-expand bottom-up tree
v1.2.0 - adds off-CPU profiling support
Hotspot can now be used to analyze off-CPU time, i.e. time where your application is switched out and not running. This can be used to find heavy lock contention, synchronous I/O wait time and more. The record page offers a simple check box to enable this feature. If you run perf record
directly from the command line and only use hotspot to visualize the results, make sure to pass the following flags:
perf record --call-graph dwarf -e cycles -e sched:sched_switch --switch-events --sample-cpu ...
The record page in hotspot now also has the capability to elevate your user permissions temporarily using kdesu
, to allow recording of e.g. off-CPU data even as non-root.
The v1.2.0 release also adds quite a few bug fixes, performance improvements and also some other new features. Notable is the addition of a per-CPU core event timeline, which depends on the --sample-cpu
flag being passed to perf record
. Furthermore, you can now filter events by symbols: Right click on any of the data tables or views and then select the 'filter in/out by symbol` action.
v1.1.0 - adds event timeline and record page
Hey all,
I have the pleasure to finally announce the availability of hotspot v1.1.0. Hotspot is a GUI for Linux perf. Right now, it's a drop-in replacement for (parts of) perf report
. It aims to be easier to use, but comes with powerful features to analyze the profiler data. This release adds
- event time line with advanced filtering capabilities
- record page to run perf on newly launched applications or to attach to running processes
- AppImage for easier consumption, esp. on older distros
The full release announcement contains pretty screenshots:
https://www.kdab.com/hotspot-v1-1-0-adds-timeline-recording-features/
Thanks, hope you like it. If so, please consider contributing:
Patches: https://github.com/KDAB/hotspot/pulls
Bug Reports: https://github.com/KDAB/hotspot/issues
NOTE: The GitHub-provided source tarballs do not contain the required perfparser
submodule. Either download that separately, or directly use one of the hotspot-v1.1.0.{tar.gz,zip}
source packages, which should be self-contained.
md5sum:
52eed6f8a78451ef6c44e541624de947 hotspot-v1.1.0.tar.gz
273cb3d6a5508254caed6ee5296689e6 hotspot-v1.1.0-x86_64.AppImage
09b3b90a18936bed58558955113d0135 hotspot-v1.1.0.zip
sha1sum:
3cef6822da0f29fb5f37b272f3d4154217628214 hotspot-v1.1.0.tar.gz
143131ff5a0a071740d7401c9ca24a9f3497b7d9 hotspot-v1.1.0-x86_64.AppImage
2d22a815c90102437cf7f3449c2469afa5b8df4f hotspot-v1.1.0.zip
Cheers
v1.0.0 - first public release
Hey all,
I have the pleasure to finally announce the availability of hotspot v1.0.0. Hotspot is a GUI for Linux perf. Right now, it's a drop-in replacement for (parts of) perf report
. It aims to be easier to use, but comes with powerful features to analyze the profiler data:
- summary view
- bottom-up, top-down and caller/callee aggregations
- tooltips, searching, sorting etc. as expected from an interactive GUI
- integrated flamegraph (probably the most important feature)
- ability to show multiple event metrics side-by-side
The full release announcement contains pretty screenshots:
https://www.kdab.com/hotspot-gui-linux-perf-profiler/
Thanks, hope you like it. If so, please consider contributing:
Patches: https://github.com/KDAB/hotspot/pulls
Bug Reports: https://github.com/KDAB/hotspot/issues
NOTE: The GitHub-provided source tarballs do not contain the required perfparser
submodule. Either download that separately, or directly use one of the hotspot-v1.0.0.{tar.gz,zip}
source packages, which should be self-contained.
Cheers