Commit Graph

35 Commits

Author SHA1 Message Date
7c93149315 Introduce sysprof-cat
It's a simple CLI tool that dumps the contents of a Sysprof capture
file in a syntax inspired by GTK's render node syntax.

It prints metadata, the callgraph, marks, and counters. Other fields
may be added as needed, but for now this is sufficient for inspecting
WebKit captures.

There are CLI args for not printing particular groups, so that we can
filter out what we need.
2024-09-26 13:11:55 -03:00
684afeef57 build: fix release builds
We are dropping the micro component going forward.
2023-09-16 16:12:54 -07: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
5afb315be5 libsysprof: fix flags get type generation 2023-07-20 11:24:04 -07:00
dbb7833cbf libsysprof: join libsysprof-analyze and libsysprof-profile
This brings together the two libraries back into one now that the whole
design is pretty well sorted out. They depend on roughly the same libraries
anyway and it's way easier of the single library can both read and write
the capture files (along with bringing in libsysprof-capture symbols in
a single place).
2023-07-19 17:40:41 -07:00
8dd7478e96 janitorial: move dbus service files into sysprofd
This is the only place they are really used directly, so keep them there.
2023-07-18 16:13:01 -07:00
8a631d8f88 janitorial: remove unused files 2023-07-18 16:10:43 -07:00
1fba250444 build: drop legacy v2 service and simplify build system
This removes -Dagent and just uses -Dtools as it only affects sysprof-cli
and sysprof-agent. We still need to patch sysprof-cli for recent changes
as we did for sysprof-agent though.

Additionally, we haven't used the v2 service in forever, so drop that as
I can't imagine anyone has been using it.
2023-07-17 15:11:10 -07:00
1913e27b61 sysprof-agent: move sysprof-agent to own directory
The tools directory will be going away and pieces moved around.
2023-07-17 11:40:26 -07:00
f199f26fe9 sysprof: drop libsysprof-gtk and absorb it in sysprof
We are dropping the whole "embed this gtk stuff in your app" model since
that never really worked that well.
2023-07-14 21:06:45 -07:00
1f4f4d7e50 build: keep libsysprof-capture version at 4
We haven't changed the format, so we really don't want to cause unnecessary
churn by applications consuming this.
2023-07-12 11:49:55 -07:00
ae571f3f6e libsysprof-ui: remove legacy libsysprof-ui library
This is libsysprof-gtk now, but that too will be absorbed by sysprof app
directly rather than having a UI library.
2023-07-12 10:00:11 -07:00
6570087c7c libsysprof-gtk: start on GTK widgetry library
This is ultimately to replace libsysprof-ui, and will focus on the display
of capture files. Recording will be left to the sysprof application in
terms of UI, and other applications like IDEs will use the
libsysprof-profile API directly along with libsysprof-gtk for visualizing.
2023-06-08 17:38:15 -07:00
8202a40f4d preload: hoist preloads into src/ directory
They will get used from libsysprof-profile, but it's nice to have them
a directory up going forward.
2023-06-06 16:32:21 -07:00
24b876f437 libsysprof-profile: stub out libsysprof-profile library
This does the same thing as we did for libsysprof-analyze, but to contain
the profiler bits that will be used from applications/etc.
2023-05-25 15:43:53 -07:00
efab045006 libsysprof-analyze: start on sysprof-analyze library
The goal here is to break up libsysprof into a library for recording
profiles (using libsysprof-capture) and a library for analyzing profiles
(both used by the sysprof UI).
2023-04-25 11:57:26 -07:00
cc7e2820f3 build: bump version for development
This will also attempt to get us on the more modern GNOME versioning
train, hopefully to phase out micro numbers eventually.
2023-04-24 17:26:45 -07:00
0dc0a5b3de build: fix -Dagent=true -Dlibsysprof=false
The agent is statically linked so that it doesn't require using a properly
working libsysprof to be installed. This ensures that it continues to build
properly in that case so it can be used from org.gnome.Sdk.
2022-07-22 11:54:42 -07:00
c3035efd52 tools: add -Dagent=true option
This also builds the agent statically with libsysprof_static_dep since
we'd need that to avoid installing libsysprof when that isn't wanted.
It also ensures the LD_PRELOAD libraries are installed for use by the
agent.
2022-07-21 18:35:35 -07:00
dc829087d4 tools: add sysprof-agent
This is a program that can be communicated with over private D-Bus using
pipes to control a process. It is useful in an automated fashion from
tooling such as Builder.

This allows, when installed into SDKs like GNOMEs, to profile from inside
the container rather than from the outside. Such is useful when you need
to ensure you have access to LD_PRELOAD/etc within the context.
2022-07-21 18:28:18 -07:00
757d36ae8e Cleanup the build a bit
Makes the Meson build a little bit better and cleans up some of the
formatting.
2022-05-25 14:07:02 -05:00
b0cfa7632e libsysprof-ui: move ui headers 2022-04-01 13:15:49 -07:00
6b1cd7a722 build: add internal variable for profiler xml file 2020-07-04 16:42:10 -07:00
e03b54fca5 build: Only run gdbus-codegen if building components which need it
This is to avoid running `gdbus-codegen` when building sysprof as a
subproject underneath libglib, as by that point in the GLib build
process, `gdbus-codegen` is not yet available.

The interfaces generated by these `gdbus-codegen` invocations are only
needed for `sysprofd` and libsysprof, not for the libraries like
`libsysprof-capture`.

Signed-off-by: Philip Withnall <withnall@endlessm.com>
2020-07-03 22:01:33 +01:00
189505be64 build: only install some files when option is enabled
Fixes #16
2019-10-15 14:49:57 -07:00
198bfd9328 build: install legacy service API xml 2019-06-25 15:07:45 -07:00
09c457c880 sysprofd: implement org.gnome.Sysprof2 compatability API
This allows the new sysprofd to service requests for older clients
expecting to talk to or.gnome.Sysprof2.
2019-06-25 14:27:43 -07:00
ed8e23f776 build: install dbus interfaces 2019-05-29 15:13:00 -07:00
adcf667b5a tools: add tool to toggle a profiler
This is in-tree only currently, although we may consider installing it
at some point (or adding it to sysprof-cli).
2019-05-29 15:13:00 -07:00
cd3b4d6538 src: use helpers and add group_fd to remote API 2019-05-29 15:13:00 -07:00
427a4ca79d src: add helpers for common clinet/service side utils 2019-05-29 15:12:59 -07:00
6ba408f073 shared: remove use of libshared
This moves everything into other places and simple includes the
files in the cases that it is necessary. In the future, we can
rewrite sysprofd to use GDBus and add GetProcFile() to allow
for client-side processing of kallsyms.
2019-05-29 15:12:59 -07:00
1708ad1b48 tree: start on massive tree refactor
The big thing going on here is that we are going to split up the libraries
a bit better, and remove GObject from the capture library. The libsysprof
library will bring in the capture library statically, so we can export the
symbols we want.

Eventually, we will bump the version to sysprof-3, but not yet.
2019-05-29 15:12:59 -07:00
6f635ad371 build: don't disable assert on tests
This fixes #2 where meson errors about tests and assert being disabled.
2018-08-22 13:06:15 -07:00
52bc856be4 build: Add support for Meson 2016-12-01 02:34:11 -05:00