Commit Graph

3967 Commits

Author SHA1 Message Date
4a668f6860 libsysprof: ignore empty paths 2023-08-31 14:15:57 -07:00
453b3c3f24 libsysprof: fix some unused variables 2023-08-31 14:15:49 -07:00
b2ed132b12 libsysprof: typo fix 2023-08-31 14:14:48 -07:00
33f3a96cce manifest: ensure we have access to ~/.local/share/flatpak/
That is the common path for a --user installation, and it gets filtered
from us even if we have --filesystem=home. Specifically enforce adding it
in our manifest so that we can read it.

This seems to fix loading a bunch of symbols from Flatpak'd Sysprof for me.

Fixes GNOME/gnome-builder#2090
2023-08-31 14:14:29 -07:00
64bc9e42ba libsysprof: include binary-path for fallback symbol 2023-08-31 13:25:59 -07:00
6032d24aa3 Update Ukrainian translation 2023-08-31 19:29:29 +00:00
ab026a973e sysprof: sort before filter and make incremental
Doing this in reverse *and* making it incremental seems to work better than
just making them incremental. So do that so the UI stays responsive even
if it flickers to an empty set momentarily.
2023-08-31 12:24:38 -07:00
c451cd0e19 sysprof: change Filter Events to Filter Messages 2023-08-31 12:24:38 -07:00
ff82331952 sysprof: move search filter for dbus to bottom 2023-08-31 12:24:38 -07:00
1b853b1623 sysprof: add search bar to the D-Bus view
For now this only supports searching in the sender, destination, path,
interface and method fields. And will match if any of these fields
contain the search term as substring. In the future it may be nice to
allow searching individual fields as well as filter based on enum
fields.
2023-08-31 12:24:38 -07:00
27bf90c287 Update Ukrainian translation 2023-08-31 19:16:31 +00:00
c80e8080c3 elfparser: ensure returned string is owned by GLib
Technically, it's very likely that this will fall through to free() anyway,
but there aren't necessarily guarantees of that yet afaik.
2023-08-31 11:58:59 -07:00
cd1398671f Update Turkish translation 2023-08-31 18:55:24 +00:00
35532b0343 elfparser: ignore -Wdeclaration-after-statement 2023-08-31 11:45:31 -07:00
9d30b8612c Merge branch 'rust_demangle' into 'master'
libsysprof: Support demangling rust symbols using the v0 scheme

See merge request GNOME/sysprof!78
2023-08-31 18:44:15 +00:00
3994635a2a libsysprof: Support demangling rust symbols using the v0 scheme
This doesn't add support for the legacy symbol mangling scheme which is
currently the default pending support in tools for the v0 symbol
mangling scheme. The legacy symbol mangling scheme is similar enough to
C++'s symbol mangling scheme that demangling them using the C++
demangler generally produces readable symbols. The v0 scheme is entirely
custom and due to backreferences and encoding all generic arguments not
very readable when mangled, so supporting it is more important than
supporting the legacy scheme.
2023-08-31 19:41:16 +02:00
bfc989c6c0 build: add sysprof-diff tool
This is not installed currently. It's for testing now but we can start
installing it if/when people want to use it. We could also try to make
it part of sysprof-cli someday.

This tool prints the difference of two trees giving you a -/+ change of
the number of hits incurred on that frame-pointer.
2023-08-30 16:27:50 -07:00
f1234280aa sysprof: setup various cursors
This makes it more obvious that you can select in the time scrubber.
2023-08-30 16:27:50 -07:00
fa8858ebcf libsysprof: add helper to list functions by sample hits 2023-08-30 16:27:50 -07:00
85e085b975 libsysprof: try both short and long-form debubdir
While fixing things for Flatpak (which have a path deduplicating some
of the path parts) works there, it breaks locating the debuglink in
other places such as GNOME OS.

This tries both forms, using the long form first and then the short
form second, since Flatpak is likely a subset of everything that needs
to be located.
2023-08-30 16:27:50 -07:00
9396def931 Update POTFILES.in 2023-08-30 18:52:50 +02:00
c995081ea1 Update Basque translation 2023-08-30 16:34:09 +00:00
2dc6b1b7a5 libsysprof: truncate common prefix using debug dir
If we have a path like /app/bin/gnome-builder and the debug prefix is
/app/lib/debug then we don't want to end up with /app/lib/debug/app/bin
as the real data directory is /app/lib/debug/bin.

This often works with /usr because /usr/lib/debug/usr can link back to it's
parent. But we should try to do the right thing instead of relying on that
anyway.
2023-08-29 13:41:49 -07:00
6ed1317012 libsysprof: avoid some GError creation 2023-08-29 13:40:06 -07:00
9839d18238 libsysprof: include /app/lib/debug debug dir 2023-08-29 13:21:47 -07:00
501e35803a Merge branch 'set_cwd' into 'master'
sysprof: add option to set the working directory

See merge request GNOME/sysprof!76
2023-08-29 19:01:16 +00:00
e788e1ed2a sysprof: add option to set the working directory
This is often essential for running non-graphical programs.
2023-08-29 20:58:01 +02:00
7468b80241 sysprof: bind utility traceables to samples view stack child
We want the traceables to match the selection in either the callgraph or
the flamegraph, depending which is visible. The summary is not currently
implemented for flamegraph as it is already naturally a summary by virtue
of it's colorization.

Fixes #95
2023-08-29 11:55:24 -07:00
2ed8c319c0 sysprof: add SysprofFlameGraph:utility-traceables property
This will get updated when a node is clicked/updated. The goal here is to
bind it from the SysprofSamplesSection so that the sidebar will update.

Related #95
2023-08-29 11:33:23 -07:00
b46fe4dd75 libsysprof: allow listing traceables from a node
This will allow use from the flamegraph which does not use
SysprofCallgraphFrame objects.

Related #95
2023-08-29 11:26:41 -07:00
e5413f7fd8 sysprof: show spinner when document is processing
If the document is doing asynchronous work after it has been loaded (which
we use a progressbar to denote), then show a spinner for the activity.

Fixes #94
2023-08-29 09:52:12 -07:00
480543fe87 libsysprof: add SysprofDocument:busy property
This currently only toggles on/off when a callgraph is being generated or
the document is being saved.

See #94
2023-08-29 09:51:24 -07:00
2c0fd400a1 Update Galician translation 2023-08-29 06:51:54 +00:00
f3b4e1ca92 libsysprof: propagate devices to processinfo
We need access to this from the process info but can share the instance.
It sucks to walk the hashtable here, but the alternative is to make these
recursive so that we can check a parent mount namespace.

Until then, take the hit and iterate all the pids to populate them with
the additional device.

Related GNOME/gnome-builder#2090
2023-08-28 21:56:56 -07:00
7d17e29f39 libsysprof: ignore irq/ kernel tasks 2023-08-28 20:47:58 -07:00
cd64b81cc8 Update Georgian translation 2023-08-29 03:15:26 +00:00
c2a8a86b8a build: fix unwind check 2023-08-28 17:32:23 -07:00
0539497886 libsysprof: attempt to new spawned process information
If a new process is spawned after the recording has started (processes
spawned *by* sysprof are done before recording starts) then try to extract
information about that process and append it to the recording.

The goal here is to get enough process information to actually decode the
process without creating fork()/exec() amplification.

Related GNOME/gnome-builder#2090
2023-08-28 17:27:18 -07:00
31547de795 libsysprof: rename follow_fork() to follow_process()
This is more of what we want to be doing anyway, we don't care about all
the forks in existence.

Additionally, include the comm[] with the pid so that instruments can take
action based on it.
2023-08-28 17:24:27 -07:00
8aa55a7b2d sysprof: attempt to highlight to root of flamegraph 2023-08-28 15:44:41 -07:00
279e8ae397 sysprof: leave process 0 visible
This can be a number of samples, and is worthwhile for debugging unless
toggled off in the view options.
2023-08-28 15:03:56 -07:00
7150db0045 sysprof: add ui to toggle ignoring kernel processes 2023-08-28 15:03:56 -07:00
c4e96bb314 libsysprof: add flag to ignore kernel processes 2023-08-28 15:03:56 -07:00
8f26c0037d libsysprof: sniff various forms of kernel process names
This is by no means perfect, but it gets the kernel tasks running on my
machine out of the profiles. We will no doubt need to add more in the
future, or find a way to record a flag for that in the capture format.
2023-08-28 15:03:53 -07:00
fd980eca68 libsysprof: always create pid0 info
That way we don't risk showing "Unknown Process" if we get stack traces
recorded with a 0 pid (which can happen from Perf).
2023-08-28 14:55:43 -07:00
310e43f166 sysprof: add various action symbolic icons
We *should* be able to rely on these icons but not everyone has an up to
date system, particularly if not running GNOME.

Related #93
2023-08-28 14:22:45 -07:00
88dc13d869 sysprof: scroll to the bottom of the flame graph
Unfortunately we don't have a good way to do this in GtkScrolledWindow
where you have an initial gravity pulling you to the bottom of a viewport.

We might be able to fake it with a focusable widget, but that sounds like
more work than just animating to the bottom of the viewport.

Related #93
2023-08-28 14:13:59 -07:00
dc15089133 sysprof: add animation helpers
Reluctantly adding animation helpers so we can do some automated scrolling.
2023-08-28 14:12:43 -07:00
a60bc04de2 sysprof: add UI to toggle merge-similar-processes flags
Related #93
2023-08-28 13:34:11 -07:00
cdfae5f7b9 libsysprof: add callgraph flag to merge similar processes
This is the backing implementation to allow for merging multiple processes
which have identical comm[] fields.
2023-08-28 13:34:11 -07:00