Open bolt12 opened 5 months ago
I am not sure if I follow the suggested refactrosiation. Note that stepInfoNonDep
and stepInfoRaces
hold Step
s different from the one in `stepInfoStep
. Each thread has many Step
s so Map IOSimThreadId Step
won't help.
The problem is that the show instance currently will print everything. The data types hold values of other data types that have quite a lot of data/text. My proposal is to refactor the data types to something more indirect at least for tracing. Instead of printing all text/data we print only the IDs (primary keys). These primary keys would still be able to fetch the required info because we would have Maps that held that info
For that we'd need Map StepId Step
, but that will be a large map holding all Step
s, which has other downsides. I am not sure if optimising for pretty printing is the right way, so I'd prefer to have a nice pretty printer possibly with a verbosity parameter.
That would work as well!
Is your feature request related to a problem? Please describe.
Recently I had to debug a IOSimPOR test failure (See #154) and although IOSimPOR is complicated, analysing the logs adds an extra layer of difficulty because the logs are quite large and have a lot of redundant information. I'll explain:
Here's the excerpt of a log for an IOSimPOR run with
explorationDebugLevel = 2
:This is only 1 line worth of trace out of 355 total lines, AND I had to truncate this line of code to not exceed GitHub's limit of 65k words. It has A LOT of useless information.
Describe the solution you'd like
Here's the data types involved in the trace I mentioned above:
One can see how much information there's in each element of
activeRaces
orcompleteRaces
fields. I propose either a refactorisation of these datatypes to avoid redundant information being stored, e.g.:and have a
Map IOSimThreadId Step
somewhere in the state. And the same for other similar places in the code.OR
have a pretty printer with minimal verbosity that doesn't print all the information.
Are you willing to implement it?