sdk/tools/heaptrack.git
7 years agoCall libc and libstdc++ freeres functions in heaptrack_preload on exit
Milian Wolff [Mon, 17 Apr 2017 19:14:15 +0000 (21:14 +0200)]
Call libc and libstdc++ freeres functions in heaptrack_preload on exit

These functions are used by Valgrind already and can be used to force
a clean shutdown of libc and libstdc++. Both usually don't bother
freeing their global resources, which used to be reported as memory
leaks by heaptrack. By calling the freeres functions we now get a
clean shutdown of the libc_leaks.c example without any memory leaks
reported.

Thanks to Maxim Golov for pointing out this hidden functionality and
providing a test case.

BUG: 378765

7 years agoDisable signal handling in timer thread
Milian Wolff [Fri, 7 Apr 2017 12:07:31 +0000 (14:07 +0200)]
Disable signal handling in timer thread

When the host application sets up a custom signal handler thread
only that thread is supposed to handle the signals. But heaptrack
spawns up the timer thread on initialization, i.e. when it
first encounters a memory allocation. This usually happens before
the host application has setup the signal mask. As such, our timer
thread would still receive e.g. SIGTERM and then shutdown the whole
application.

Now, we disable signal handling in the helper thread to fix this
behavior for applications that rely on it.

BUG: 378494

7 years agoAdd missing include directory
Erwin Jansen [Wed, 5 Apr 2017 17:15:22 +0000 (10:15 -0700)]
Add missing include directory

Boost headers are at $BOOST_ROOT which might not be on the default
include path. Use Boost_INCLUDE_DIRS to add that path.

7 years agoPrefer $lib.debug files over $lib files, if available
Milian Wolff [Tue, 4 Apr 2017 15:38:34 +0000 (17:38 +0200)]
Prefer $lib.debug files over $lib files, if available

This is the first step towards supporting split-debug files. This
patch alone will at least improve the situation when you are using
heaptrack on a binary that has split debug information in a file
with the ".debug" suffix. In such cases, we used to be unable to
resolve the file/line information. Now, we properly resolve those
too. Note that Qt 5 QMake uses this split file configuration by
default since some time.

7 years agoAdd a script to anonymize profiling data
Maxim Golov [Tue, 4 Apr 2017 07:32:15 +0000 (09:32 +0200)]
Add a script to anonymize profiling data

Allow Heaptrack users to anonymise their stack traces
and application command line before submitting a bug report.

Reviewed By: mwolff
Differential Revision: https://phabricator.kde.org/D5288

7 years agoAdd .arcconfig file
Milian Wolff [Tue, 4 Apr 2017 07:31:36 +0000 (09:31 +0200)]
Add .arcconfig file

7 years agoProperly fail to parse lines of two or one chars
Milian Wolff [Sun, 2 Apr 2017 18:54:34 +0000 (20:54 +0200)]
Properly fail to parse lines of two or one chars

When we encountered e.g. a line with the contents 'c ', we did
not advance the char iterator to the end of the string and kept
it instead at the beginning of the line. Then, when we tried to
parse the timestamp, we would interpret the 'c' as 0xc == 12.
This then lead to breakage when we try to compute the chart model:
There, we would improperly use 12 as the maximum timestamp and
then essentially drop our time filter, instead trying to visualize
all charts and with wrong timestamps too.

This patch fixes this issue, we now fail to parse the 'c ' line
and thus simply omit the last timestamp and do not get confused
when building the chart model data.

7 years agoEnable rubber-band zooming in charts
Milian Wolff [Sun, 12 Mar 2017 19:59:28 +0000 (20:59 +0100)]
Enable rubber-band zooming in charts

Left-click and hold to create a rubber band zoom area which will
then be shown. Right-click to undo the last zoom change.

Note that this does not (yet) influence the other data aggregations.

7 years agoFix -Wexpansion-to-defined warning from Clang 3.9
Kevin Funk [Mon, 6 Mar 2017 14:35:10 +0000 (15:35 +0100)]
Fix -Wexpansion-to-defined warning from Clang 3.9

Fixed:

```
/home/kfunk/devel/src/kf5/heaptrack/tests/manual/test.cpp:65:5: warning:
macro expansion producing 'defined' has undefined behavior
[-Wexpansion-to-defined]
  #if HAVE_ALIGNED_ALLOC
      ^
/home/kfunk/devel/src/kf5/heaptrack/tests/manual/test.cpp:4:28: note:
expanded from macro 'HAVE_ALIGNED_ALLOC'
  #define HAVE_ALIGNED_ALLOC defined(_ISOC11_SOURCE)
```

7 years agoUpdate .gitignore with something more versatile
Kevin Funk [Mon, 6 Mar 2017 14:34:58 +0000 (15:34 +0100)]
Update .gitignore with something more versatile

7 years agoMerge remote-tracking branch 'origin/1.0'
Anton Anikin [Mon, 6 Mar 2017 07:29:52 +0000 (15:29 +0800)]
Merge remote-tracking branch 'origin/1.0'

7 years agoAdd gitignore file
Anton Anikin [Mon, 6 Mar 2017 07:28:39 +0000 (15:28 +0800)]
Add gitignore file

7 years agoMerge remote-tracking branch 'origin/1.0'
Anton Anikin [Mon, 6 Mar 2017 02:25:44 +0000 (10:25 +0800)]
Merge remote-tracking branch 'origin/1.0'

7 years agoFix "Uninitialized struct member" cppcheck error
Anton Anikin [Mon, 6 Mar 2017 02:20:13 +0000 (10:20 +0800)]
Fix "Uninitialized struct member" cppcheck error

Reviewers: mwolff

Reviewed By: mwolff

Differential Revision: https://phabricator.kde.org/D4888

7 years agoMerge branch '1.0'
Milian Wolff [Sun, 5 Mar 2017 23:42:21 +0000 (00:42 +0100)]
Merge branch '1.0'

Conflicts:
    src/analyze/gui/org.kde.heaptrack.desktop

7 years agoUpdate README.md
muo jp [Fri, 3 Mar 2017 02:05:38 +0000 (11:05 +0900)]
Update README.md

This `s` matters when specifying `--with-libraries` option on
boost's bootstrap.sh.

7 years agoOnly decrease leaked allocations counter for known allocations
Milian Wolff [Sun, 5 Mar 2017 21:52:23 +0000 (22:52 +0100)]
Only decrease leaked allocations counter for known allocations

When we runtime-attach heaptrack, we may encounter frees for
allocations that we did not track, i.e. those that happened before
we attached. In such cases, we used to decrase the leaked allocation
counter, and that potentially underflowed then. This is fixed now.

7 years agoImprove cleanup after detaching heaptrack
Milian Wolff [Sun, 5 Mar 2017 21:44:37 +0000 (22:44 +0100)]
Improve cleanup after detaching heaptrack

We now stop heaptrack explicitly via GDB before breaking the pipe.
This improves the stability of the unload process of heaptrack
after runtime-injection. It is still somewhat shaky though. I still
see crashes on shutdown of the debuggee now, long after heaptrack
was stopped. Similarly, I see tons of issues when I try to unload
libheaptrack_inject via __libc_dlclose, so I'm keeping the library
loaded for now.

I've added an explicit warning now to the `-p` option, saying that
runtime-attaching is unstable and can crash the debuggee.

BUG: 377143

7 years agoSVN_SILENT made messages (.desktop file) - always resolve ours
l10n daemon script [Sat, 4 Mar 2017 07:09:59 +0000 (08:09 +0100)]
SVN_SILENT made messages (.desktop file) - always resolve ours

In case of conflict in i18n, keep the version of the branch "ours"
To resolve a particular conflict, "git checkout --ours path/to/file.desktop"

7 years agoGIT_SILENT made messages (after extraction)
l10n daemon script [Sat, 4 Mar 2017 06:13:43 +0000 (07:13 +0100)]
GIT_SILENT made messages (after extraction)

7 years agoTypo
Montel Laurent [Wed, 1 Mar 2017 08:26:13 +0000 (09:26 +0100)]
Typo

7 years agoExclude unresolved functions from recursion detection.
Milian Wolff [Sun, 26 Feb 2017 21:05:20 +0000 (22:05 +0100)]
Exclude unresolved functions from recursion detection.

Previously, when we encountered a stack with two consecutive frames
with missing debug information, we thought it would indicate recursion
and then collapsed all frames beneath. Now, we exclude frames with
missing debug information and don't collapse the stacks anymore.

7 years agoRemove now-dead code
Milian Wolff [Sun, 26 Feb 2017 20:50:35 +0000 (21:50 +0100)]
Remove now-dead code

7 years agoMerge branch '1.0'
Milian Wolff [Sun, 26 Feb 2017 20:35:54 +0000 (21:35 +0100)]
Merge branch '1.0'

7 years agoImprove the bottom-up conversion to top-down and caller/callee data
Milian Wolff [Sun, 26 Feb 2017 20:25:15 +0000 (21:25 +0100)]
Improve the bottom-up conversion to top-down and caller/callee data

When we encounter broken backtraces, we may not go all the way up
to main. In such cases, a non-leaf frame may actually have a cost
higher than the sum of its children. In these cases, we also have
to hande the difference in cost just like for a normal leaf node.

The manual test I added does not cover this properly, as the
unwinding is too reliable and thus we do not run into the corner case.
In real-world profiles though, this does occur and adds some errors.
This is now fixed and the caller/callee and top-down view become
more reliable.

7 years agoSVN_SILENT made messages (.desktop file) - always resolve ours
l10n daemon script [Sun, 26 Feb 2017 06:51:10 +0000 (07:51 +0100)]
SVN_SILENT made messages (.desktop file) - always resolve ours

In case of conflict in i18n, keep the version of the branch "ours"
To resolve a particular conflict, "git checkout --ours path/to/file.desktop"

7 years agoGIT_SILENT made messages (after extraction)
l10n daemon script [Sun, 26 Feb 2017 05:46:07 +0000 (06:46 +0100)]
GIT_SILENT made messages (after extraction)

7 years agoSVN_SILENT made messages (.desktop file) - always resolve ours
l10n daemon script [Sun, 26 Feb 2017 04:53:32 +0000 (05:53 +0100)]
SVN_SILENT made messages (.desktop file) - always resolve ours

In case of conflict in i18n, keep the version of the branch "ours"
To resolve a particular conflict, "git checkout --ours path/to/file.desktop"

7 years agoGIT_SILENT made messages (after extraction)
l10n daemon script [Sun, 26 Feb 2017 02:52:22 +0000 (03:52 +0100)]
GIT_SILENT made messages (after extraction)

7 years agoSVN_SILENT made messages (.desktop file) - always resolve ours
l10n daemon script [Sat, 25 Feb 2017 05:18:19 +0000 (06:18 +0100)]
SVN_SILENT made messages (.desktop file) - always resolve ours

In case of conflict in i18n, keep the version of the branch "ours"
To resolve a particular conflict, "git checkout --ours path/to/file.desktop"

7 years agoGIT_SILENT made messages (after extraction)
l10n daemon script [Sat, 25 Feb 2017 02:54:49 +0000 (03:54 +0100)]
GIT_SILENT made messages (after extraction)

7 years agoEnable alternating row colors for caller/callee view
Milian Wolff [Thu, 23 Feb 2017 09:27:09 +0000 (10:27 +0100)]
Enable alternating row colors for caller/callee view

7 years agoMove top-view properties to .ui file, enable alternating row colors
Milian Wolff [Thu, 23 Feb 2017 09:25:59 +0000 (10:25 +0100)]
Move top-view properties to .ui file, enable alternating row colors

7 years agoSVN_SILENT made messages (.desktop file) - always resolve ours
l10n daemon script [Thu, 23 Feb 2017 07:13:09 +0000 (08:13 +0100)]
SVN_SILENT made messages (.desktop file) - always resolve ours

In case of conflict in i18n, keep the version of the branch "ours"
To resolve a particular conflict, "git checkout --ours path/to/file.desktop"

7 years agoGIT_SILENT made messages (after extraction)
l10n daemon script [Thu, 23 Feb 2017 06:13:29 +0000 (07:13 +0100)]
GIT_SILENT made messages (after extraction)

7 years agoSVN_SILENT made messages (.desktop file) - always resolve ours
l10n daemon script [Thu, 23 Feb 2017 05:11:51 +0000 (06:11 +0100)]
SVN_SILENT made messages (.desktop file) - always resolve ours

In case of conflict in i18n, keep the version of the branch "ours"
To resolve a particular conflict, "git checkout --ours path/to/file.desktop"

7 years agoGIT_SILENT made messages (after extraction)
l10n daemon script [Thu, 23 Feb 2017 03:01:02 +0000 (04:01 +0100)]
GIT_SILENT made messages (after extraction)

7 years agoMerge branch '1.0'
Milian Wolff [Wed, 22 Feb 2017 12:40:40 +0000 (13:40 +0100)]
Merge branch '1.0'

7 years agoFix action enabled state
Milian Wolff [Wed, 22 Feb 2017 12:38:38 +0000 (13:38 +0100)]
Fix action enabled state

- only enable Open when we are not showing the open page already
- only disable Open and Close when we are not currently parsing a file

7 years agoFix compile with older KF5, as e.g. available on Ubuntu 16.04
Milian Wolff [Wed, 22 Feb 2017 12:36:25 +0000 (13:36 +0100)]
Fix compile with older KF5, as e.g. available on Ubuntu 16.04

7 years agoMerge branch '1.0'
Milian Wolff [Tue, 21 Feb 2017 08:42:31 +0000 (09:42 +0100)]
Merge branch '1.0'

7 years agoEnable wordwrap in summary labels
Milian Wolff [Tue, 21 Feb 2017 08:23:13 +0000 (09:23 +0100)]
Enable wordwrap in summary labels

When we encounter long debuggee command lines, we used to put them
into one line. This increased the minimal width of the mainwindow,
which could even expand beyond the screen dimensions, making parts
of the window invisible.

By enabling wordwrap, we can break the command line after every
argument. Additionally, to cope with extremely long arguments,
we add zero-width spaces after every 50 word characters, to enable
word wrap at these places.

BUG: 376741

7 years agoMerge branch '1.0'
Milian Wolff [Tue, 21 Feb 2017 07:57:02 +0000 (08:57 +0100)]
Merge branch '1.0'

 Conflicts:
src/analyze/gui/org.kde.heaptrack.appdata.xml
src/analyze/gui/org.kde.heaptrack.desktop

7 years agoDocument how to contribute to heaptrack
Milian Wolff [Tue, 21 Feb 2017 07:54:13 +0000 (08:54 +0100)]
Document how to contribute to heaptrack

7 years agoSVN_SILENT made messages (.desktop file) - always resolve ours
l10n daemon script [Mon, 20 Feb 2017 06:39:42 +0000 (07:39 +0100)]
SVN_SILENT made messages (.desktop file) - always resolve ours

In case of conflict in i18n, keep the version of the branch "ours"
To resolve a particular conflict, "git checkout --ours path/to/file.desktop"

7 years agoGIT_SILENT made messages (after extraction)
l10n daemon script [Mon, 20 Feb 2017 05:45:04 +0000 (06:45 +0100)]
GIT_SILENT made messages (after extraction)

7 years agoSVN_SILENT made messages (.desktop file) - always resolve ours
l10n daemon script [Mon, 20 Feb 2017 04:54:14 +0000 (05:54 +0100)]
SVN_SILENT made messages (.desktop file) - always resolve ours

In case of conflict in i18n, keep the version of the branch "ours"
To resolve a particular conflict, "git checkout --ours path/to/file.desktop"

7 years agoGIT_SILENT made messages (after extraction)
l10n daemon script [Mon, 20 Feb 2017 02:52:26 +0000 (03:52 +0100)]
GIT_SILENT made messages (after extraction)

7 years agoSVN_SILENT made messages (.desktop file) - always resolve ours
l10n daemon script [Sun, 19 Feb 2017 06:37:47 +0000 (07:37 +0100)]
SVN_SILENT made messages (.desktop file) - always resolve ours

In case of conflict in i18n, keep the version of the branch "ours"
To resolve a particular conflict, "git checkout --ours path/to/file.desktop"

7 years agoSVN_SILENT made messages (.desktop file) - always resolve ours
l10n daemon script [Sun, 19 Feb 2017 04:52:02 +0000 (05:52 +0100)]
SVN_SILENT made messages (.desktop file) - always resolve ours

In case of conflict in i18n, keep the version of the branch "ours"
To resolve a particular conflict, "git checkout --ours path/to/file.desktop"

7 years agoGIT_SILENT made messages (after extraction)
l10n daemon script [Sun, 19 Feb 2017 02:50:07 +0000 (03:50 +0100)]
GIT_SILENT made messages (after extraction)

7 years agoSVN_SILENT made messages (.desktop file) - always resolve ours
l10n daemon script [Sat, 18 Feb 2017 06:55:48 +0000 (07:55 +0100)]
SVN_SILENT made messages (.desktop file) - always resolve ours

In case of conflict in i18n, keep the version of the branch "ours"
To resolve a particular conflict, "git checkout --ours path/to/file.desktop"

7 years agoGIT_SILENT made messages (after extraction)
l10n daemon script [Sat, 18 Feb 2017 06:01:16 +0000 (07:01 +0100)]
GIT_SILENT made messages (after extraction)

7 years agoSVN_SILENT made messages (.desktop file) - always resolve ours
l10n daemon script [Sat, 18 Feb 2017 05:11:41 +0000 (06:11 +0100)]
SVN_SILENT made messages (.desktop file) - always resolve ours

In case of conflict in i18n, keep the version of the branch "ours"
To resolve a particular conflict, "git checkout --ours path/to/file.desktop"

7 years agoGIT_SILENT made messages (after extraction)
l10n daemon script [Sat, 18 Feb 2017 02:49:16 +0000 (03:49 +0100)]
GIT_SILENT made messages (after extraction)

7 years agoMerge branch '1.0'
Milian Wolff [Fri, 17 Feb 2017 23:22:14 +0000 (00:22 +0100)]
Merge branch '1.0'

7 years agoSVN_SILENT made messages (.desktop file) - always resolve ours
l10n daemon script [Fri, 17 Feb 2017 06:27:36 +0000 (07:27 +0100)]
SVN_SILENT made messages (.desktop file) - always resolve ours

In case of conflict in i18n, keep the version of the branch "ours"
To resolve a particular conflict, "git checkout --ours path/to/file.desktop"

7 years agoGIT_SILENT made messages (after extraction)
l10n daemon script [Fri, 17 Feb 2017 05:43:37 +0000 (06:43 +0100)]
GIT_SILENT made messages (after extraction)

7 years agoSVN_SILENT made messages (.desktop file) - always resolve ours
l10n daemon script [Thu, 16 Feb 2017 06:38:37 +0000 (07:38 +0100)]
SVN_SILENT made messages (.desktop file) - always resolve ours

In case of conflict in i18n, keep the version of the branch "ours"
To resolve a particular conflict, "git checkout --ours path/to/file.desktop"

7 years agoGIT_SILENT made messages (after extraction)
l10n daemon script [Thu, 16 Feb 2017 05:45:11 +0000 (06:45 +0100)]
GIT_SILENT made messages (after extraction)

7 years agoSVN_SILENT made messages (.desktop file) - always resolve ours
l10n daemon script [Thu, 16 Feb 2017 04:56:32 +0000 (05:56 +0100)]
SVN_SILENT made messages (.desktop file) - always resolve ours

In case of conflict in i18n, keep the version of the branch "ours"
To resolve a particular conflict, "git checkout --ours path/to/file.desktop"

7 years agoGIT_SILENT made messages (after extraction)
l10n daemon script [Thu, 16 Feb 2017 02:51:13 +0000 (03:51 +0100)]
GIT_SILENT made messages (after extraction)

7 years agoSVN_SILENT made messages (.desktop file) - always resolve ours
l10n daemon script [Wed, 15 Feb 2017 07:00:01 +0000 (08:00 +0100)]
SVN_SILENT made messages (.desktop file) - always resolve ours

In case of conflict in i18n, keep the version of the branch "ours"
To resolve a particular conflict, "git checkout --ours path/to/file.desktop"

7 years agoGIT_SILENT made messages (after extraction)
l10n daemon script [Wed, 15 Feb 2017 06:02:53 +0000 (07:02 +0100)]
GIT_SILENT made messages (after extraction)

7 years agoSVN_SILENT made messages (.desktop file) - always resolve ours
l10n daemon script [Wed, 15 Feb 2017 05:12:24 +0000 (06:12 +0100)]
SVN_SILENT made messages (.desktop file) - always resolve ours

In case of conflict in i18n, keep the version of the branch "ours"
To resolve a particular conflict, "git checkout --ours path/to/file.desktop"

7 years agoGIT_SILENT made messages (after extraction)
l10n daemon script [Wed, 15 Feb 2017 03:00:13 +0000 (04:00 +0100)]
GIT_SILENT made messages (after extraction)

7 years agoDon't build the flamegraph twice on initial load
Milian Wolff [Mon, 13 Feb 2017 23:41:43 +0000 (00:41 +0100)]
Don't build the flamegraph twice on initial load

We get a resize event followed by a show event, both of which
used to trigger a rebuild of the flame graph. Now, we only react
once to that.

7 years agoEnsure the brushes are properly initialized in a thread-safe way
Milian Wolff [Mon, 13 Feb 2017 23:31:08 +0000 (00:31 +0100)]
Ensure the brushes are properly initialized in a thread-safe way

Fixes a crash under some circumstances, when multiple graphs
are build in parallel - something that needs to be investigated
separately.

7 years agoSet context menu policy on flamegraph main widget
Milian Wolff [Mon, 13 Feb 2017 23:29:33 +0000 (00:29 +0100)]
Set context menu policy on flamegraph main widget

Unbreaks the context menu, since the actions are set on the
main widget, but the policy was set on the view.

7 years agoUse KStandardAction for flamegraph forward/back actions.
Milian Wolff [Mon, 13 Feb 2017 23:25:11 +0000 (00:25 +0100)]
Use KStandardAction for flamegraph forward/back actions.

7 years agoUse i18n in favor of QObject::tr
Milian Wolff [Mon, 13 Feb 2017 23:25:45 +0000 (00:25 +0100)]
Use i18n in favor of QObject::tr

7 years agoapply clang-format
Milian Wolff [Mon, 13 Feb 2017 23:16:43 +0000 (00:16 +0100)]
apply clang-format

7 years agoAdd open/open new/close/quit actions to file menu
Milian Wolff [Mon, 13 Feb 2017 23:16:02 +0000 (00:16 +0100)]
Add open/open new/close/quit actions to file menu

7 years agoAdd .desktop and appdata files
Milian Wolff [Mon, 13 Feb 2017 22:14:12 +0000 (23:14 +0100)]
Add .desktop and appdata files

7 years agoPass explicit parent to QAction ctor, fixes build on Ubuntu Xenial.
Milian Wolff [Sun, 12 Feb 2017 12:31:06 +0000 (13:31 +0100)]
Pass explicit parent to QAction ctor, fixes build on Ubuntu Xenial.

Seems like the default of `= nullptr` has been added recently to Qt.

BUG: 376247

7 years agoOptimize aggregation of caller/callee data
Milian Wolff [Mon, 30 Jan 2017 20:55:19 +0000 (21:55 +0100)]
Optimize aggregation of caller/callee data

Previously, we did that on the unmerged data which means we had
to traverse way more stacks. Now, we instead use the merged data
as input and thereby can get rid of ~50% of the hash allocations
alone used for the recursion guard. This is the #1 hotspot when
it comes to allocation numbers so far, so that boils down to easily
millions of allocations.

7 years agoShow whether data comes from a runtime attached profile in GUI
Milian Wolff [Sun, 29 Jan 2017 19:41:37 +0000 (20:41 +0100)]
Show whether data comes from a runtime attached profile in GUI

7 years agoremove empty line
Milian Wolff [Sun, 29 Jan 2017 19:35:30 +0000 (20:35 +0100)]
remove empty line

7 years agoAdd format_sources for use with KDevelop's reformat-sources action.
Milian Wolff [Sun, 29 Jan 2017 19:32:29 +0000 (20:32 +0100)]
Add format_sources for use with KDevelop's reformat-sources action.

Note: this depends on clang-format and moreutils' sponge

7 years agoCleanup: add Elf namespace with typedefs for ElfW types
Milian Wolff [Sun, 29 Jan 2017 19:31:06 +0000 (20:31 +0100)]
Cleanup: add Elf namespace with typedefs for ElfW types

This looks much nicer in the C++ code below, and plays better with
clang-format as well.

7 years agoFix warning about undefined behavior when expanding macro
Milian Wolff [Sun, 29 Jan 2017 19:25:42 +0000 (20:25 +0100)]
Fix warning about undefined behavior when expanding macro

See e.g. https://reviews.llvm.org/D15866 for more information

7 years agoremove dead code
Milian Wolff [Sun, 29 Jan 2017 19:24:29 +0000 (20:24 +0100)]
remove dead code

7 years agoSet word-wrap-column to 120, like in clang-format config
Milian Wolff [Sat, 28 Jan 2017 22:46:10 +0000 (23:46 +0100)]
Set word-wrap-column to 120, like in clang-format config

7 years agoAdd clang-format configuration and reformat src/ and test/ sources
Milian Wolff [Sat, 28 Jan 2017 22:41:50 +0000 (23:41 +0100)]
Add clang-format configuration and reformat src/ and test/ sources

7 years agoRemove libunwind-specific defines from global config
Milian Wolff [Sat, 28 Jan 2017 21:51:33 +0000 (22:51 +0100)]
Remove libunwind-specific defines from global config

We have libunwind_config.h for that purpose.

7 years agoFix detection of unw_set_cache_size and adapt to upstream changes
Milian Wolff [Sat, 28 Jan 2017 21:49:09 +0000 (22:49 +0100)]
Fix detection of unw_set_cache_size and adapt to upstream changes

unw_set_cache_size is actually a define so we can detect it directly
in C++ without the need for CMake to detect it for us. Using the
define also makes sure we can detect it once for all platforms, the
symbol is mangled by libunwind to support multiple architectures.

7 years agoMove code to setup caller/callee view into separate function
Milian Wolff [Sat, 28 Jan 2017 20:56:11 +0000 (21:56 +0100)]
Move code to setup caller/callee view into separate function

7 years agoShare code to setup the TreeModel views
Milian Wolff [Sat, 28 Jan 2017 20:52:51 +0000 (21:52 +0100)]
Share code to setup the TreeModel views

7 years agoDecouple heaptrack version from file format version.
Milian Wolff [Sat, 28 Jan 2017 20:41:59 +0000 (21:41 +0100)]
Decouple heaptrack version from file format version.

This allows us to set the version again to 1.0.0 in preparation of
the first release. The file format is set to version 1 as well.
We are still able to read the old data files from profile runs
with current versions of heaptrack.

7 years agoNever show raw addresses in output.
Milian Wolff [Sun, 22 Jan 2017 11:59:08 +0000 (12:59 +0100)]
Never show raw addresses in output.

This information is pretty useless, imho. Always returning a shared
<unresolved function> string as function name instead of the
stringified adress speeds up the code significantly and reduces
memory as more stack branches can get merged.

7 years agoRemove empty lines
Milian Wolff [Sun, 22 Jan 2017 11:55:45 +0000 (12:55 +0100)]
Remove empty lines

7 years agoSpeed up GUI analysis significantly by adding a location index cache
Milian Wolff [Sun, 22 Jan 2017 11:37:34 +0000 (12:37 +0100)]
Speed up GUI analysis significantly by adding a location index cache

Perf showed that quite a lot of time is consumed finding the interned
location for a given InstructionPointer. By adding a cache in front
of this lookup that uses the IpIndex as key, the parse step speeds
up significantly, as indicated by the following perf stat calls,
which got measured by adding an `exit(0)` after buildSizeHistogram:

Before:

 Performance counter stats for 'heaptrack_gui ./heaptrack.kwrite.27247.gz' (5 runs):

       1384.265399      task-clock (msec)         #    1.019 CPUs utilized            ( +-  0.91% )
               898      context-switches          #    0.649 K/sec                    ( +-  1.44% )
                77      cpu-migrations            #    0.055 K/sec                    ( +- 23.67% )
            27,747      page-faults               #    0.020 M/sec                    ( +-  0.41% )
     4,287,486,004      cycles                    #    3.097 GHz                      ( +-  0.90% )
     5,965,906,048      instructions              #    1.39  insn per cycle           ( +-  0.07% )
     1,298,988,220      branches                  #  938.395 M/sec                    ( +-  0.03% )
        17,667,331      branch-misses             #    1.36% of all branches          ( +-  0.04% )

       1.358443950 seconds time elapsed                                          ( +-  1.02% )

After:

 Performance counter stats for 'heaptrack_gui ./heaptrack.kwrite.27247.gz' (5 runs):

        969.782341      task-clock (msec)         #    1.023 CPUs utilized            ( +-  1.27% )
               844      context-switches          #    0.870 K/sec                    ( +-  6.82% )
                98      cpu-migrations            #    0.101 K/sec                    ( +-  5.30% )
            27,590      page-faults               #    0.028 M/sec                    ( +-  0.46% )
     3,000,707,304      cycles                    #    3.094 GHz                      ( +-  1.22% )
     4,374,580,309      instructions              #    1.46  insn per cycle           ( +-  0.03% )
       911,989,553      branches                  #  940.406 M/sec                    ( +-  0.03% )
        14,788,489      branch-misses             #    1.62% of all branches          ( +-  0.17% )

       0.947570109 seconds time elapsed                                          ( +-  1.34% )

7 years agoFix CMake warning about minimum version when trying to find KF5
Milian Wolff [Sun, 22 Jan 2017 00:01:08 +0000 (01:01 +0100)]
Fix CMake warning about minimum version when trying to find KF5

Disable even trying to build the GUI when we deal with a CMake older
than 2.8.12.

CMake Warning (dev) at /home/milian/projects/compiled/kf5/share/ECM/modules/ECMFindModuleHelpers.cmake:133 (message):
  Your project should require at least CMake 2.8.12 to use FindKF5.cmake
Call Stack (most recent call first):
  /home/milian/projects/compiled/kf5/share/ECM/find-modules/FindKF5.cmake:52 (ecm_find_package_version_check)
  CMakeLists.txt:35 (find_package)
This warning is for project developers.  Use -Wno-dev to suppress it.

7 years agoUpdate copyright header in two more places
Milian Wolff [Sat, 21 Jan 2017 23:57:17 +0000 (00:57 +0100)]
Update copyright header in two more places

7 years agoElide text of flamegraph items
Milian Wolff [Sat, 21 Jan 2017 23:42:23 +0000 (00:42 +0100)]
Elide text of flamegraph items

This prevents the flickering when hovering an item with a long text.
That lead the label to wordwrap, increasing the height of the label,
decreasing the height of the view, moving the scene, thus the mouse
points to a different view and we would repeat again.

Now we simply elide the text on the right of the label. This works,
but it's cutting of the text too soon, since it cannot cope with
the HTML and thinks all of these chars will get painted...

7 years agoUse new LocationData::Ptr typedef everywhere
Milian Wolff [Sat, 21 Jan 2017 22:48:46 +0000 (23:48 +0100)]
Use new LocationData::Ptr typedef everywhere

7 years agoAdd context menu to open file location to model views
Milian Wolff [Sat, 21 Jan 2017 22:46:24 +0000 (23:46 +0100)]
Add context menu to open file location to model views

This just goes through QDesktopServices and does not yet allow
the user to configure what editor he wants to use to open the file.

7 years agoProperly connect filters to corresponding view proxy model
Milian Wolff [Sat, 21 Jan 2017 18:35:44 +0000 (19:35 +0100)]
Properly connect filters to corresponding view proxy model

7 years agomove Messages.sh to follow code changes
Burkhard Lück [Sat, 21 Jan 2017 16:29:29 +0000 (17:29 +0100)]
move Messages.sh to follow code changes

7 years agoMake it possible to run heaptrack from the build folder
Milian Wolff [Sat, 21 Jan 2017 12:58:21 +0000 (13:58 +0100)]
Make it possible to run heaptrack from the build folder

By setting the correct CMake properties, the libraries, shell runner
and executables land in the correct folder layout in the build
directory. This way, we can run heaptrack directly from the build
dir, i.e.:

cd heaptrack/build
make
./bin/heaptrack <your app>
./bin/heaptrack_gui <data file>