[XRay] clarify error messages when parsing broken traces

Summary:
When there's a mismatch of a function argument being right after the
wrong function, print an offset into the file where that happened, to
ease further debugging.

Reviewers: dberris, eizan, kpw

Subscribers: llvm-commits

Differential Revision: https://reviews.llvm.org/D42492

llvm-svn: 323758
This commit is contained in:
Martin Pelikan 2018-01-30 13:41:34 +00:00
parent 1ce64dcc64
commit 79d729eef5
1 changed files with 4 additions and 3 deletions

View File

@ -120,9 +120,10 @@ Error loadNaiveFormatLog(StringRef Data, XRayFileHeader &FileHeader,
auto TId = RecordExtractor.getU32(&OffsetPtr); auto TId = RecordExtractor.getU32(&OffsetPtr);
if (Record.FuncId != FuncId || Record.TId != TId) if (Record.FuncId != FuncId || Record.TId != TId)
return make_error<StringError>( return make_error<StringError>(
Twine("Corrupted log, found payload following non-matching " Twine("Corrupted log, found arg payload following non-matching "
"function + thread record. Record for ") + "function + thread record. Record for function ") +
Twine(Record.FuncId) + " != " + Twine(FuncId), Twine(Record.FuncId) + " != " + Twine(FuncId) + "; offset: " +
Twine(S.data() - Data.data()),
std::make_error_code(std::errc::executable_format_error)); std::make_error_code(std::errc::executable_format_error));
// Advance another four bytes to avoid padding. // Advance another four bytes to avoid padding.
OffsetPtr += 4; OffsetPtr += 4;