[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:
parent
1ce64dcc64
commit
79d729eef5
|
@ -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;
|
||||||
|
|
Loading…
Reference in New Issue