Open Jongy opened 1 year ago
@mpozniak95 as discussed, I suggest we add a flag --java-line-numbers
, which will have 2 values now - none
and line-of-function
. This ticket is line-in-function
and you currently implementing line-of-function
, so we'll start only with none
and line-of-function
. Default value is none
.
You can move it out from ProfilerState
to JavaProfiler
.
Since PR's that I created are different feature, I am removing my assignment from this issue for now
gProfiler collects profiles function-based, i.e, each frame represents a function. An alternative is to aggregate line-in-function, so each frame is
function:line
. This creates a graph that is more fragmented, but carries more information (for example: function A calling function B twice will now have 2 separate callstacks for B under A, allowing you to differentiate).Various profilers already support it (for example, py-spy does, as far as I'm aware). I want to start with support in Java (so async-profiler). The feature requirements are:
--line-numbers
suffices.ProfilerState
and used by Profiler classes supporting it.JavaProfiler
, async-profiler alreadys supports line numbering, see code that extracts the BCI -> line numbers table here. It exists for JFR. As we're using the collapsed format, we can add this support to collapsed, like we added method modifers.:line_number
between the_[...]
suffix to the frame name itself.Note that line-of-function was added here: https://github.com/Granulate/gprofiler/pull/821. This ticket is for line-in-function.