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.
FixesGNOME/gnome-builder#2090
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.
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.
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.
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.
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.
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.
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
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
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
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
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
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.
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.
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