summaryrefslogtreecommitdiffstats
path: root/src/H5private.h
diff options
context:
space:
mode:
authorRobb Matzke <matzke@llnl.gov>1998-08-19 22:46:31 (GMT)
committerRobb Matzke <matzke@llnl.gov>1998-08-19 22:46:31 (GMT)
commite455040749ca1d47fb218b9bb35d78247fb9561d (patch)
tree2d26f2ae1fea1ff393f00eb36e3f2155dec690b6 /src/H5private.h
parent4322bfe90ab7de7245ff770155867fa5da78147c (diff)
downloadhdf5-e455040749ca1d47fb218b9bb35d78247fb9561d.zip
hdf5-e455040749ca1d47fb218b9bb35d78247fb9561d.tar.gz
hdf5-e455040749ca1d47fb218b9bb35d78247fb9561d.tar.bz2
[svn-r606] Debugging can be enabled/disabled at runtime though code is still
conditionally included at compile time. Tracing and debugging share the same environment variable. All is documented in Debugging.html.
Diffstat (limited to 'src/H5private.h')
-rw-r--r--src/H5private.h43
1 files changed, 43 insertions, 0 deletions
diff --git a/src/H5private.h b/src/H5private.h
index 0b2aba8..e0147e5 100644
--- a/src/H5private.h
+++ b/src/H5private.h
@@ -472,6 +472,49 @@ int64 HDstrtoll (const char *s, const char **rest, int base);
extern char *strdup(const char *s);
#define HDstrdup(S) strdup(S)
+/*
+ * These macros check whether debugging has been requested for a certain
+ * package at run-time. Code for debugging is conditionally compiled by
+ * defining constants like `H5X_DEBUG'. In order to see the output though
+ * the code must be enabled at run-time with an environment variable
+ * HDF5_DEBUG which is a list of packages to debug.
+ *
+ * Note: If you add/remove items from this enum then be sure to update the
+ * information about the package in H5_init_library().
+ */
+typedef enum {
+ H5_PKG_A, /*Attributes */
+ H5_PKG_AC, /*Meta data cache */
+ H5_PKG_B, /*B-trees */
+ H5_PKG_D, /*Datasets */
+ H5_PKG_E, /*Error handling */
+ H5_PKG_F, /*Files */
+ H5_PKG_G, /*Groups */
+ H5_PKG_HG, /*Global heap */
+ H5_PKG_HL, /*Local heap */
+ H5_PKG_I, /*Interface */
+ H5_PKG_MF, /*File memory management */
+ H5_PKG_MM, /*Core memory management */
+ H5_PKG_O, /*Object headers */
+ H5_PKG_P, /*Property lists */
+ H5_PKG_S, /*Data spaces */
+ H5_PKG_T, /*Data types */
+ H5_PKG_V, /*Vector functions */
+ H5_PKG_Z, /*Raw data filters */
+ H5_NPKGS /*Must be last */
+} H5_pkg_t;
+
+typedef struct H5_debug_t {
+ FILE *trace; /*API trace output stream */
+ struct {
+ const char *name; /*package name */
+ FILE *stream; /*output stream or NULL */
+ } pkg[H5_NPKGS];
+} H5_debug_t;
+
+extern H5_debug_t H5_debug_g;
+#define H5DEBUG(X) (H5_debug_g.pkg[H5_PKG_##X].stream)
+
/*-------------------------------------------------------------------------
* Purpose: These macros are inserted automatically just after the
* FUNC_ENTER() macro of API functions and are used to trace