Commit Graph

1622 Commits

Author SHA1 Message Date
b6589e67cf libsysprof-analyze: include threads in filtered descendants view 2023-06-14 15:26:56 -07:00
5b929b8d5d libsysprof-analyze: add callgraph flags for thread-ids
This allows you to set a flag to show the thread id of what was recorded.

Use this to help disassociate similar threads in a process to figure out
which thread is consuming a majority of the Total time of that process.
2023-06-14 15:11:56 -07:00
54ecdc57cd libsysprof-gtk: set descendants on function selection 2023-06-14 14:25:16 -07:00
e63c0b7c2e libsysprof-analyze: fix descendants of process symbols 2023-06-14 14:25:01 -07:00
a296fa3eab libsysprof-gtk: remove stack frame number
This just wastes space that could be useful for symbols.
2023-06-14 13:55:01 -07:00
93aadbc035 libsysprof-gtk: make list of traceables smaller
It's not that important, only that we can walk through them with the
keyboard in an easier fashion than say, GtkDropDown.
2023-06-14 13:54:41 -07:00
656f95f276 libsysprof-gtk: cleanup xml formatting with xmllint 2023-06-14 13:51:47 -07:00
8edab49028 libsysprof-gtk: add specialized symbol label for descendants
This allows us to provide a bit more context to things in the descendants
callgraph based on the symbol. Context switches get specialized highlight
as well as All Processes and Processes nodes.
2023-06-14 12:09:27 -07:00
2a65bf30af libsysprof-analyze: add symbol kind property for symbols
Additionally, add the pid as the binary nick for processes so that we can
show them in the callgraph with the process name.
2023-06-14 12:08:23 -07:00
21766d275c libsysprof-gtk: shrink callgraph indent after 20 2023-06-13 17:22:59 -07:00
819b6c5a72 libsysprof-gtk: set callgraphview css name 2023-06-13 17:22:40 -07:00
2034811ec7 libsysprof-gtk: give some space for symbols in descendants 2023-06-13 17:04:56 -07:00
8bd585d37b libsysprof-gtk: select function from traceable 2023-06-13 17:00:05 -07:00
6d5d5db8bb libsysprof-gtk: use libpanel for PanelPaned
This responds to expand a bit more like we want.
2023-06-13 14:09:33 -07:00
1e2081f681 libsysprof-gtk: simplify time to string output 2023-06-13 13:53:59 -07:00
3a94170b0a libsysprof-capture: add frame type for tracing
This is like sample but has an "enter/exit" flag with it. This can be
useful when you want to provide tracing instead of sampling. We use a
different frame type so that we can denote that this isn't traditional
sampling, and the flag can be used to find the next exit for the current
enter for calculating durations.

The entire stack trace is provided to make things easier on tools
which may want to deal with indirect functions that were not instrumented
but can be unwound. That may allow for tooling to give the user some
insight that it's not *just* this function entering, but some functions
before it were entered too.

This also adds a SysprofTracer instrument which will preload a
libsysprof-tracer-6.so into the process providing the
__cyg_profile_func_enter() and __cyg_profile_func_leave() hooks.
2023-06-13 12:41:50 -07:00
81eafb9232 tools: track function declaration change 2023-06-13 12:34:40 -07:00
a9f149ec3d libsysprof-profile: add diagnostics for perf event open failure 2023-06-13 11:42:48 -07:00
f09186dc21 libsysprof-profile: record diagnostic on kallsyms failure 2023-06-13 11:36:42 -07:00
1f6cc39554 libsysprof-profile: add SysprofDiagnostic to recordings
This allows instruments to record a diagnostic and have it land as an
object in a GListModel of diagnostics available to the API consumer.

Such items may be used by recording UI to display issues with the recording
to the user.
2023-06-13 11:33:43 -07:00
6ab28ff641 libsysprof-analyze: make summary augmentation optional
That way the descendant graphs can generate the self values but ignore the
summary augmentation (as that would mess up the generated values).

This fixes it so that showing the descendants tree keeps proper Total
and Self values.
2023-06-13 10:31:42 -07:00
662cc65bb9 libsysprof-analyze: clean up descendant node tree on finalize 2023-06-13 10:30:25 -07:00
ee5ff400e7 libsysprof-gtk: use shortcut controller for actions 2023-06-13 10:04:44 -07:00
ef11121ff6 libsysprof-analyze: mark fallback symbol is_process 2023-06-12 23:01:22 -07:00
ea297b79ba libsysprof-gtk: show descendents when caller selection changes 2023-06-12 22:59:42 -07:00
8af3cd896a libsysprof-analyze: add descendants generation
We still have some work to do here so it doesn't mess up the summary
augmentation, but this is a start on re-generating the callgraphs for a
specific symbol.
2023-06-12 22:59:11 -07:00
90fdd7f842 libsysprof-analyze: use symbol hash for better coalescing
We want to increase how much the symbols get coalesced across processes
so long as they are reasonably the same symbol.
2023-06-12 17:22:17 -07:00
465b0e1613 libsysprof-analyze: add sysprof_symbol_hash() for hash tables 2023-06-12 17:21:41 -07:00
a3df31c246 libsysprof-analyze: include binary path basename in hash
This helps improve the chances that we get a match on "libfoo.so" and the
symbol name within it.
2023-06-12 17:21:28 -07:00
535c7be1e4 libsysprof-gtk: add depth of traceable to column view 2023-06-12 16:49:32 -07:00
6a71988020 libsysprof-gtk: show stack traces when traceable is selected 2023-06-12 16:41:50 -07:00
ddfa3f57ab libsysprof-analyze: add sysprof_document_list_symbols_in_traceable()
This function will list the symbols in a traceable in a way that is
suitable for showing in a GtkListView or GtkColumnView. For example, that
requires creating copies of the symbols so that duplicates do not cause
hickups with GtkListItemManager.
2023-06-12 16:41:30 -07:00
b3bd853168 libsysprof-gtk: use label for better sizing 2023-06-12 15:46:30 -07:00
2a95b6fe28 libsysprof-gtk: show a list of backtraces on the right
When selecting a callback node, show all a list of all of the traces where
that occurred on the right, so that you can select them individually.

Currently this only shows pid/time for on the right, but we'll add another
pane that will show the symbolized backtrace soon.
2023-06-12 15:42:33 -07:00
63b42c2319 libsysprof-analyze: track relative offset for frame
This is handy so that we don't have to keep multiple objects around to
handle this request. Otherwise we'd need to keep references to the
document and that is a bit annoying.

This of course has a limit of about an hour (in tv_nsec), but that is
far longer than we can realistically record anyway.
2023-06-12 15:41:29 -07:00
0529cfb2f0 libsysprof-analyze: add helper to get clock start time 2023-06-12 15:11:42 -07:00
fc9bb894a1 libsysprof-analyze: list traceables containing a callgraph frame
This uses the intersection of all the bitset from the frame to the root to
first reduce the number of traceables to look at. Once we have the
intersection, we check the traceables for prefix and yield another list
model using that bitset index on the same traceables list model.

This can be used to show a supplimental list of all the traceables for a
callgraph up to certain node.
2023-06-12 14:54:04 -07:00
f701e028b4 libsysprof-analyze: add some flags for internal state
This can help us to avoid various work items when processing symbols.
2023-06-12 14:15:08 -07:00
abdd546197 libsysprof-gtk: add getter for callgraph 2023-06-12 12:52:32 -07:00
68424bb4a5 libsysprof-gtk: allow sorting descendants name column 2023-06-12 12:42:17 -07:00
217f992211 libsysprof-gtk: tweak single selections a bit 2023-06-12 12:31:36 -07:00
98b84def81 libsysprof-gtk: allow sorting by function name 2023-06-12 12:31:25 -07:00
ac09c98b70 libsysprof-gtk: add stub for caller selection changed 2023-06-12 12:17:36 -07:00
c8c307cb96 libsysprof-analyze: rename ctor for node
That way we can have an alternate way of creating these that does not
require using a SysprofCallgraphNode.
2023-06-12 12:12:53 -07:00
4e9615571b libsysprof-gtk: add columns for callers list 2023-06-12 12:01:33 -07:00
ff1edcc8c9 libsysprof-gtk: add callers column view 2023-06-12 11:55:24 -07:00
fbe0b99314 libsysprof-analyze: use symbol to get callers list
That keeps the API clear of the indirection Frame object so we can use it
elsewhere like in the functions column view to select callees.
2023-06-12 11:35:01 -07:00
b873ee1f37 libsysprof-analyze: cleanup symbols array in finalize 2023-06-12 11:34:22 -07:00
2c9c41dedc libsysprof-analyze: allow specifying ptr array for symbols
This will allow us to use the same model with a different list of symbols.
2023-06-12 11:34:04 -07:00
fa35089e93 libsysprof-gtk: rename descendants view for legibility 2023-06-12 11:23:35 -07:00