mirror of
https://github.com/RPCS3/llvm-mirror.git
synced 2025-01-31 12:41:49 +01:00
Add a verbose/human readable mode to llvm-symbolizer to investigate discriminators and other line table/backtrace features
Patch by Simon Que! Differential Revision: https://reviews.llvm.org/D29094 llvm-svn: 293697
This commit is contained in:
parent
00d455eb0e
commit
c372dbadfb
@ -29,15 +29,18 @@ class DIPrinter {
|
||||
bool PrintFunctionNames;
|
||||
bool PrintPretty;
|
||||
int PrintSourceContext;
|
||||
bool Verbose;
|
||||
|
||||
void print(const DILineInfo &Info, bool Inlined);
|
||||
void printContext(const std::string &FileName, int64_t Line);
|
||||
|
||||
public:
|
||||
DIPrinter(raw_ostream &OS, bool PrintFunctionNames = true,
|
||||
bool PrintPretty = false, int PrintSourceContext = 0)
|
||||
bool PrintPretty = false, int PrintSourceContext = 0,
|
||||
bool Verbose = false)
|
||||
: OS(OS), PrintFunctionNames(PrintFunctionNames),
|
||||
PrintPretty(PrintPretty), PrintSourceContext(PrintSourceContext) {}
|
||||
PrintPretty(PrintPretty), PrintSourceContext(PrintSourceContext),
|
||||
Verbose(Verbose) {}
|
||||
|
||||
DIPrinter &operator<<(const DILineInfo &Info);
|
||||
DIPrinter &operator<<(const DIInliningInfo &Info);
|
||||
|
@ -78,8 +78,16 @@ void DIPrinter::print(const DILineInfo &Info, bool Inlined) {
|
||||
std::string Filename = Info.FileName;
|
||||
if (Filename == kDILineInfoBadString)
|
||||
Filename = kBadString;
|
||||
OS << Filename << ":" << Info.Line << ":" << Info.Column << "\n";
|
||||
printContext(Filename, Info.Line);
|
||||
if (!Verbose) {
|
||||
OS << Filename << ":" << Info.Line << ":" << Info.Column << "\n";
|
||||
printContext(Filename, Info.Line);
|
||||
return;
|
||||
}
|
||||
OS << " Filename: " << Filename << "\n";
|
||||
OS << " Line: " << Info.Line << "\n";
|
||||
OS << " Column: " << Info.Column << "\n";
|
||||
if (Info.Discriminator)
|
||||
OS << " Discriminator: " << Info.Discriminator << "\n";
|
||||
}
|
||||
|
||||
DIPrinter &DIPrinter::operator<<(const DILineInfo &Info) {
|
||||
|
@ -85,6 +85,9 @@ static cl::opt<int> ClPrintSourceContextLines(
|
||||
"print-source-context-lines", cl::init(0),
|
||||
cl::desc("Print N number of source file context"));
|
||||
|
||||
static cl::opt<bool> ClVerbose("verbose", cl::init(false),
|
||||
cl::desc("Print verbose line info"));
|
||||
|
||||
template<typename T>
|
||||
static bool error(Expected<T> &ResOrErr) {
|
||||
if (ResOrErr)
|
||||
@ -160,7 +163,7 @@ int main(int argc, char **argv) {
|
||||
LLVMSymbolizer Symbolizer(Opts);
|
||||
|
||||
DIPrinter Printer(outs(), ClPrintFunctions != FunctionNameKind::None,
|
||||
ClPrettyPrint, ClPrintSourceContextLines);
|
||||
ClPrettyPrint, ClPrintSourceContextLines, ClVerbose);
|
||||
|
||||
const int kMaxInputStringLength = 1024;
|
||||
char InputString[kMaxInputStringLength];
|
||||
|
Loading…
x
Reference in New Issue
Block a user