Closed 1uc closed 1 month ago
Attention: Patch coverage is 90.62500%
with 3 lines
in your changes are missing coverage. Please review.
Project coverage is 86.36%. Comparing base (
49da686
) to head (bb923fd
).
Files | Patch % | Lines |
---|---|---|
src/utils/blame.cpp | 50.00% | 2 Missing :warning: |
src/utils/blame.hpp | 80.00% | 1 Missing :warning: |
:umbrella: View full report in Codecov by Sentry.
:loudspeaker: Have feedback on the report? Share it here.
Logfiles from GitLab pipeline #211217 (:white_check_mark:) have been uploaded here!
Status and direct links:
Does this mean we'll no longer get multiple stack traces for a single line of NMODL codegen output? If so, I'm very much for it!
Naturally, there are multiple stacks per line of output. Simply because multiple distinct statements can contribute to a single line of code.
What this does is only print one "trace" or frame per stack trace, i.e. per call to the printer that causes changed to specified line. The trace shown will be the lowest call before entering the "printer". The hope is that this is usually the trace of interest. You can see the complete output above (which used to be multiple pages of scrollback).
If in future we notice that sometimes we need more context, e.g. when a generic function calls the printer, we can implement a flag blame --detailed --line N
and print the old complete backtrace for each call to the printer. In anticipation, it introduces an interface class called Blame
. When the need arises we'll stop passing through the blame_line
and instead pass in a (smart pointer to a) Blame
object, and create a new subclass DetailedBlame
with the desired behaviour.
I'm wondering what miserable line you're debugging =)
The revised format only prints the first trace, before entering the
CodePrinter
. The new output (for a particularly verbose case) is:It also refactors the code to prepare for injecting a detailed blame printer, when needed.