mirror of
https://github.com/varun-r-mallya/sysprof.git
synced 2025-12-31 20:36:25 +00:00
This provides a new sysprof-live-unwinder subprocess that runs as root to allow accessing all processes on the system via /proc/$pid/. It is spawned by sysprofd with various perf event FDs and a FD to write captures to. Ideally the capture_fd is something that will naturally error if the client application crashes (such as a socketpair() having the peer close). This is not enforced but encouraged. Additionally, an event_fd is used to allow the client application to signal the live-unwinder to exit. Unwinding is performed by looking at the modules loaded into the target pid and using libdwfl to access DWARF/CFI/etc state machinery. Stack data does not touch the disk as it exists in a mmap buffer from perf and is then translated into a callchain and sent to the Sysprof client. Unwinding occurs as normal post-mortem though is improved through the use of debuginfod to locate the appropriate symbols.
38 lines
1.0 KiB
Meson
38 lines
1.0 KiB
Meson
sysprof_header_subdir = 'sysprof-@0@'.format(libsysprof_api_version)
|
|
sysprof_header_dir = join_paths(get_option('includedir'), sysprof_header_subdir)
|
|
|
|
sysprof_version_conf = configuration_data()
|
|
sysprof_version = meson.project_version().split('.')
|
|
if sysprof_version[1] in ['alpha', 'beta', 'rc']
|
|
sysprof_version = [sysprof_version[0], 0, 0]
|
|
endif
|
|
sysprof_version_conf.set('MAJOR_VERSION', sysprof_version[0])
|
|
sysprof_version_conf.set('MINOR_VERSION', sysprof_version[1])
|
|
sysprof_version_conf.set('MICRO_VERSION', 0)
|
|
sysprof_version_conf.set('VERSION', meson.project_version())
|
|
|
|
pkglibexecdir = join_paths(get_option('prefix'), get_option('libexecdir'))
|
|
|
|
subdir('libsysprof-capture')
|
|
|
|
if need_libsysprof
|
|
subdir('libsysprof')
|
|
subdir('preload')
|
|
endif
|
|
|
|
if get_option('sysprofd') == 'bundled'
|
|
subdir('sysprofd')
|
|
subdir('sysprof-live-unwinder')
|
|
endif
|
|
|
|
if get_option('gtk')
|
|
subdir('sysprof')
|
|
endif
|
|
|
|
if get_option('tools')
|
|
subdir('sysprof-agent')
|
|
subdir('sysprof-cat')
|
|
subdir('sysprof-cli')
|
|
subdir('sysprof-diff')
|
|
endif
|