[PATCH] D29094: Add verbose printing of line info in LLVM Symbolizer

David Blaikie via Phabricator via llvm-commits llvm-commits at lists.llvm.org
Tue Jan 31 14:31:03 PST 2017


This revision was automatically updated to reflect the committed changes.
Closed by commit rL293697: Add a verbose/human readable mode to llvm-symbolizer to investigateā€¦ (authored by dblaikie).

Changed prior to commit:
  https://reviews.llvm.org/D29094?vs=86238&id=86498#toc

Repository:
  rL LLVM

https://reviews.llvm.org/D29094

Files:
  llvm/trunk/include/llvm/DebugInfo/Symbolize/DIPrinter.h
  llvm/trunk/lib/DebugInfo/Symbolize/DIPrinter.cpp
  llvm/trunk/tools/llvm-symbolizer/llvm-symbolizer.cpp


Index: llvm/trunk/lib/DebugInfo/Symbolize/DIPrinter.cpp
===================================================================
--- llvm/trunk/lib/DebugInfo/Symbolize/DIPrinter.cpp
+++ llvm/trunk/lib/DebugInfo/Symbolize/DIPrinter.cpp
@@ -78,8 +78,16 @@
   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) {
Index: llvm/trunk/tools/llvm-symbolizer/llvm-symbolizer.cpp
===================================================================
--- llvm/trunk/tools/llvm-symbolizer/llvm-symbolizer.cpp
+++ llvm/trunk/tools/llvm-symbolizer/llvm-symbolizer.cpp
@@ -85,6 +85,9 @@
     "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 @@
   LLVMSymbolizer Symbolizer(Opts);
 
   DIPrinter Printer(outs(), ClPrintFunctions != FunctionNameKind::None,
-                    ClPrettyPrint, ClPrintSourceContextLines);
+                    ClPrettyPrint, ClPrintSourceContextLines, ClVerbose);
 
   const int kMaxInputStringLength = 1024;
   char InputString[kMaxInputStringLength];
Index: llvm/trunk/include/llvm/DebugInfo/Symbolize/DIPrinter.h
===================================================================
--- llvm/trunk/include/llvm/DebugInfo/Symbolize/DIPrinter.h
+++ llvm/trunk/include/llvm/DebugInfo/Symbolize/DIPrinter.h
@@ -29,15 +29,18 @@
   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);


-------------- next part --------------
A non-text attachment was scrubbed...
Name: D29094.86498.patch
Type: text/x-patch
Size: 2912 bytes
Desc: not available
URL: <http://lists.llvm.org/pipermail/llvm-commits/attachments/20170131/d1abd62f/attachment.bin>


More information about the llvm-commits mailing list