Commit Graph

2497 Commits

Author SHA1 Message Date
15585d2803 libsysprof: improve symbol categorization a bit 2024-02-08 14:47:44 -08:00
802c298e95 libsysprof: allow hex for device major/minor
Noticed by Fabrice Bellet in #104
2024-02-06 12:02:40 -08:00
8bc77e5ba6 window: add context for "Left Heavy"
Fixes #111
2024-01-22 09:40:46 -08:00
9eca469402 categories: mark gtk_css_style_snapshot_* as as paint 2024-01-20 08:04:00 -08:00
bc92ead2f1 sysprof: clear column view models before chaining up dispose
This works around an issue caused by GNOME/gtk!6758 which has caused
an infloop of warnings trying to cleanup GtkColumnView.
2024-01-15 20:45:52 -08:00
5f013318c8 sysprof: allow 5000 samples in mark chart rows
This still seems to load dense data fine without reaching the maximum
GL command queue size.
2023-11-16 13:01:17 -08:00
32897e57f1 sysprof: add max-items property to marks chart
and bind it to the mark chart item so that we can tweak this from the ui
file as we deem neceessary.
2023-11-16 12:59:38 -08:00
5b7292b928 sysprof: sample items for mark chart row
This ensures that the row itself is filtered. I thought we had got this
done earlier but it did not apply to the marks in the series.
2023-11-16 12:49:39 -08:00
d0f132ee64 sysprof: use "pointer" cursor instead of "hand"
https://gitlab.gnome.org/GNOME/adwaita-icon-theme/-/issues/251
2023-11-12 23:45:24 +07:00
0bed511430 libsysprof: demangle rust kernel symbols 2023-11-06 20:04:49 -08:00
d852115de1 libsysprof: fallback to software perf counters
If we fail to enable hardware perf counters, fallback to software perf
counters. This fixes Sysprof to work on Fedora Asahi.
2023-10-23 22:27:04 +00:00
c3070a478d sysprof: Add missing HIG shortcuts 2023-10-16 17:43:49 +00:00
e5e57f8ff5 libsysprof: fix format-literal warning
Fixes #99
2023-10-06 09:08:56 -07:00
403704293b libsysprof: fix unused warning 2023-10-06 09:08:38 -07:00
10c21f34a8 sysprof: limit marks section max sample count
Related: #101
2023-09-27 13:51:12 -07:00
37c2a527b4 libsysprof: be more defensive against oddly formed containers
If we get a container file that is in a format we don't quite understand,
avoid crashing and just bail. That will likely result in the inability
to symbolize properly, but better than crashing.

Fixes #100
2023-09-26 17:27:53 -07:00
684afeef57 build: fix release builds
We are dropping the micro component going forward.
2023-09-16 16:12:54 -07:00
45f88e3586 libsysprof: track some mutter abi changes 2023-09-07 19:19:02 -07:00
5dc4e83307 libsysprof: ignore swapper/# scheduler details
We "know" that the swapper runs between each process inherently so no need
to really include that in the scheduler details. It just clutters up the
event timeline. Without it, we're more likely to see patterns in the
scribbles.
2023-09-07 13:18:41 -07:00
6b34ea2118 libsysprof: fix merging of similar processes
We want the "similar process" key to be the argv[0] or something close
to it so that we can coalesce across processes with different arguments.
2023-09-01 14:26:10 -07:00
5f94e09f9c libsysprof: avoid duplicate process records
We want the first process record, but subsequent records should
be ignored, except that we want to take the appropriate comm[]
action from them.
2023-09-01 14:14:25 -07:00
30123284b6 libsysprof: use whole cmdline for process name
This is just more useful than artificially truncating it.
2023-09-01 13:35:39 -07:00
a4b860a166 sysprof: xml-lint cleanup 2023-09-01 09:07:44 -07:00
187bed76f4 libsysprof: avoid await() on non-fiber
That is fine to do when the futures are finished, but in this case one
might still be in-flight. Also, wait for all futures to complete before
processing them. Use a finally() block so we can check even if there are
errors.
2023-08-31 15:21:48 -07:00
d9f67b27b4 sysprof: add filter for files
Just like was done for D-Bus messages.
2023-08-31 15:05:20 -07:00
3b3f78131c sysprof-cli: check for /var/run/host
Give users some info if there is a good chance their decode will be bad.
2023-08-31 14:51:55 -07:00
5c489a4499 libsysprof: avoid an extra string copy 2023-08-31 14:16:17 -07:00
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
64bc9e42ba libsysprof: include binary-path for fallback symbol 2023-08-31 13:25:59 -07: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
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
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