[lldb] Mark expressions that couldn't be parsed or executed as failed expressions
authorRaphael Isemann <teemperor@gmail.com>
Mon, 23 Mar 2020 14:25:51 +0000 (15:25 +0100)
committerRaphael Isemann <teemperor@gmail.com>
Mon, 23 Mar 2020 14:28:17 +0000 (15:28 +0100)
commit6a4905ae2d65a2883112bf8cbf83c35c0c03f410
treee0f64ae3605627c3317bd8b2d3f37b2b63ad7b55
parent24698e526f619271705fe72bcaa928be9bc82484
[lldb] Mark expressions that couldn't be parsed or executed as failed expressions

Summary:
LLDB keeps statistics of how many expression evaluations are 'successful' and 'failed'
which are updated after each expression evaluation (assuming statistics are enabled).
From what I understand the idea is that this could be used to define how well LLDB's
expression evaluator is working.

Currently all expressions are considered successful unless the user passes an explicit
positive element counting to the expression command (with the `-Z` flag) and then passes
an expression that successfully evaluates to a type that doesn't support element counting.
Expressions that fail to parse, execute or any other outcome are considered successful
at the moment which means we nearly always have a 100% expression evaluation
success rate.

This patch makes that expressions that fail to parse or execute to count as failed
expressions.

We can't know whether the expression failed because of an user error
of because LLDB couldn't correctly parse/compile it, but I would argue that this is
still an improvement. Assuming that the percentage of valid user expressions stays
mostly constant over time (which seems like a reasonable assumption), then this
way we can still see if we are doing relatively better/worse from release to release.

Reviewers: davide, aprantl, JDevlieghere

Reviewed By: aprantl

Subscribers: abidh

Differential Revision: https://reviews.llvm.org/D76280
lldb/source/Commands/CommandObjectExpression.cpp
lldb/source/Commands/CommandObjectExpression.h
lldb/test/API/commands/statistics/basic/TestStats.py