aboutsummaryrefslogtreecommitdiffstats
path: root/include
diff options
context:
space:
mode:
authorDavid Greene <greened@obbligato.org>2009-12-23 16:39:06 +0000
committerDavid Greene <greened@obbligato.org>2009-12-23 16:39:06 +0000
commitb5d568cc70506c4cb3aa7abc3370d3ac9411b4a0 (patch)
treec1d4cee8a7c672a89209661aca67e62e9c67ac34 /include
parente59011e7d913b59dd244b0295a984dcfe7976e72 (diff)
downloadexternal_llvm-b5d568cc70506c4cb3aa7abc3370d3ac9411b4a0.zip
external_llvm-b5d568cc70506c4cb3aa7abc3370d3ac9411b4a0.tar.gz
external_llvm-b5d568cc70506c4cb3aa7abc3370d3ac9411b4a0.tar.bz2
Provide dbgs(), a circular-buffering debug output stream. By default it
simply passes output to errs(). If -debug-buffer-size=N is set N > 0, dbgs() buffers its output until program termination and dumps the last N characters sent to it. This is handy when debugging very large inputs. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@92002 91177308-0d34-0410-b5e6-96231b3b80d8
Diffstat (limited to 'include')
-rw-r--r--include/llvm/Support/Debug.h21
1 files changed, 18 insertions, 3 deletions
diff --git a/include/llvm/Support/Debug.h b/include/llvm/Support/Debug.h
index e8bc0ce..7395984 100644
--- a/include/llvm/Support/Debug.h
+++ b/include/llvm/Support/Debug.h
@@ -28,6 +28,8 @@
namespace llvm {
+class raw_ostream;
+
/// DEBUG_TYPE macro - Files can specify a DEBUG_TYPE as a string, which causes
/// all of their DEBUG statements to be activatable with -debug-only=thatstring.
#ifndef DEBUG_TYPE
@@ -58,7 +60,7 @@ void SetCurrentDebugType(const char *Type);
/// this is a debug build, then the code specified as the option to the macro
/// will be executed. Otherwise it will not be. Example:
///
-/// DEBUG_WITH_TYPE("bitset", errs() << "Bitset contains: " << Bitset << "\n");
+/// DEBUG_WITH_TYPE("bitset", dbgs() << "Bitset contains: " << Bitset << "\n");
///
/// This will emit the debug information if -debug is present, and -debug-only
/// is not specified, or is specified as "bitset".
@@ -72,15 +74,28 @@ void SetCurrentDebugType(const char *Type);
#define DEBUG_WITH_TYPE(TYPE, X) do { } while (0)
#endif
+/// EnableDebugBuffering - This defaults to false. If true, the debug
+/// stream will install signal handlers to dump any buffered debug
+/// output. It allows clients to selectively allow the debug stream
+/// to install signal handlers if they are certain there will be no
+/// conflict.
+///
+extern bool EnableDebugBuffering;
+
+/// dbgs() - This returns a reference to a raw_ostream for debugging
+/// messages. If debugging is disabled it returns dbgs(). Use it
+/// like: dbgs() << "foo" << "bar";
+raw_ostream &dbgs();
+
// DEBUG macro - This macro should be used by passes to emit debug information.
// In the '-debug' option is specified on the commandline, and if this is a
// debug build, then the code specified as the option to the macro will be
// executed. Otherwise it will not be. Example:
//
-// DEBUG(errs() << "Bitset contains: " << Bitset << "\n");
+// DEBUG(dbgs() << "Bitset contains: " << Bitset << "\n");
//
#define DEBUG(X) DEBUG_WITH_TYPE(DEBUG_TYPE, X)
-
+
} // End llvm namespace
#endif