summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorQuincey Koziol <koziol@hdfgroup.org>2003-03-22 14:53:27 (GMT)
committerQuincey Koziol <koziol@hdfgroup.org>2003-03-22 14:53:27 (GMT)
commit06ee92414dd1e9b5e64ee1c7f1fc4141ef01cdff (patch)
tree3174dcbf8cd52657fa66fd361f2baa9040d4ec14
parentb6f34ab3e50a455e8be4700c018404afa1adce26 (diff)
downloadhdf5-06ee92414dd1e9b5e64ee1c7f1fc4141ef01cdff.zip
hdf5-06ee92414dd1e9b5e64ee1c7f1fc4141ef01cdff.tar.gz
hdf5-06ee92414dd1e9b5e64ee1c7f1fc4141ef01cdff.tar.bz2
[svn-r6519] Purpose:
Bug fix/code cleanup/new feature Description: Fix h5debug to work correctly again, with all the changes over the past few months. Improved and cleaned up debugging output available in h5debug. Platforms tested: FreeBSD 4.7 (sleipnir)
-rw-r--r--src/H5B.c8
-rw-r--r--src/H5F.c58
-rw-r--r--src/H5Gent.c71
-rw-r--r--src/H5Gnode.c5
-rw-r--r--src/H5O.c10
-rw-r--r--tools/misc/h5debug.c25
6 files changed, 105 insertions, 72 deletions
diff --git a/src/H5B.c b/src/H5B.c
index b1463ae..d298bc8 100644
--- a/src/H5B.c
+++ b/src/H5B.c
@@ -2109,15 +2109,19 @@ H5B_debug(H5F_t *f, hid_t dxpl_id, haddr_t addr, FILE *stream, int indent, int f
/* If there is a key debugging routine, use it to display the left & right keys */
if (type->debug_key) {
/* Decode the 'left' key & print it */
+ HDfprintf(stream, "%*s%-*s\n", indent + 3, "", MAX(0, fwidth - 3),
+ "Left Key:");
if(bt->key[i].nkey==NULL)
H5B_decode_key(f, bt, i);
- (type->debug_key)(stream, f, dxpl_id, indent+3, MAX (0, fwidth-3),
+ (type->debug_key)(stream, f, dxpl_id, indent+6, MAX (0, fwidth-6),
bt->key[i].nkey, udata);
/* Decode the 'right' key & print it */
+ HDfprintf(stream, "%*s%-*s\n", indent + 3, "", MAX(0, fwidth - 3),
+ "Right Key:");
if(bt->key[i+1].nkey==NULL)
H5B_decode_key(f, bt, i+1);
- (type->debug_key)(stream, f, dxpl_id, indent+3, MAX (0, fwidth-3),
+ (type->debug_key)(stream, f, dxpl_id, indent+6, MAX (0, fwidth-6),
bt->key[i+1].nkey, udata);
}
}
diff --git a/src/H5F.c b/src/H5F.c
index 21db0ba..464c2a8 100644
--- a/src/H5F.c
+++ b/src/H5F.c
@@ -4125,7 +4125,7 @@ H5F_debug(H5F_t *f, hid_t dxpl_id, haddr_t UNUSED addr, FILE * stream, int inden
int fwidth)
{
hsize_t userblock_size;
- int boot_vers, freespace_vers, obj_dir_vers, share_head_vers;
+ int super_vers, freespace_vers, obj_dir_vers, share_head_vers;
H5P_genplist_t *plist; /* Property list */
herr_t ret_value=SUCCEED; /* Return value */
@@ -4144,59 +4144,59 @@ H5F_debug(H5F_t *f, hid_t dxpl_id, haddr_t UNUSED addr, FILE * stream, int inden
if(H5P_get(plist, H5F_CRT_USER_BLOCK_NAME, &userblock_size)<0)
HGOTO_ERROR(H5E_PLIST, H5E_CANTGET, FAIL, "can't get user block size");
-
- if(H5P_get(plist, H5F_CRT_BOOT_VERS_NAME, &boot_vers)<0)
- HGOTO_ERROR(H5E_PLIST, H5E_CANTGET, FAIL, "can't get boot block version");
+ if(H5P_get(plist, H5F_CRT_BOOT_VERS_NAME, &super_vers)<0)
+ HGOTO_ERROR(H5E_PLIST, H5E_CANTGET, FAIL, "can't get super block version");
if(H5P_get(plist, H5F_CRT_FREESPACE_VERS_NAME, &freespace_vers)<0)
- HGOTO_ERROR(H5E_PLIST, H5E_CANTGET, FAIL, "can't get boot block version");
+ HGOTO_ERROR(H5E_PLIST, H5E_CANTGET, FAIL, "can't get super block version");
if(H5P_get(plist, H5F_CRT_OBJ_DIR_VERS_NAME, &obj_dir_vers)<0)
HGOTO_ERROR(H5E_PLIST, H5E_CANTGET, FAIL, "can't get object directory version");
if(H5P_get(plist, H5F_CRT_SHARE_HEAD_VERS_NAME, &share_head_vers)<0)
HGOTO_ERROR(H5E_PLIST, H5E_CANTGET, FAIL, "can't get shared-header format version");
/* debug */
- HDfprintf(stream, "%*sFile Boot Block...\n", indent, "");
+ HDfprintf(stream, "%*sFile Super Block...\n", indent, "");
HDfprintf(stream, "%*s%-*s %s\n", indent, "", fwidth,
"File name:",
f->name);
HDfprintf(stream, "%*s%-*s 0x%08x\n", indent, "", fwidth,
- "Flags",
+ "File access flags",
(unsigned) (f->shared->flags));
HDfprintf(stream, "%*s%-*s %u\n", indent, "", fwidth,
- "Reference count:",
+ "File open reference count:",
(unsigned) (f->shared->nrefs));
- HDfprintf(stream, "%*s%-*s 0x%08lx\n", indent, "", fwidth,
- "Consistency flags:",
- (unsigned long) (f->shared->consist_flags));
- HDfprintf(stream, "%*s%-*s %a (abs)\n", indent, "", fwidth,
- "Address of boot block:", f->shared->boot_addr);
HDfprintf(stream, "%*s%-*s %a (abs)\n", indent, "", fwidth,
- "Base address:", f->shared->base_addr);
- HDfprintf(stream, "%*s%-*s %a (rel)\n", indent, "", fwidth,
- "Free list address:", f->shared->freespace_addr);
- HDfprintf(stream, "%*s%-*s %a (rel)\n", indent, "", fwidth,
- "Driver information block:", f->shared->driver_addr);
-
+ "Address of super block:", f->shared->boot_addr);
HDfprintf(stream, "%*s%-*s %lu bytes\n", indent, "", fwidth,
"Size of user block:", (unsigned long) userblock_size);
+
+ HDfprintf(stream, "%*s%-*s %u\n", indent, "", fwidth,
+ "Super block version number:", (unsigned) super_vers);
+ HDfprintf(stream, "%*s%-*s %u\n", indent, "", fwidth,
+ "Free list version number:", (unsigned) freespace_vers);
+ HDfprintf(stream, "%*s%-*s %u\n", indent, "", fwidth,
+ "Root group symbol table entry version number:", (unsigned) obj_dir_vers);
+ HDfprintf(stream, "%*s%-*s %u\n", indent, "", fwidth,
+ "Shared header version number:", (unsigned) share_head_vers);
HDfprintf(stream, "%*s%-*s %u bytes\n", indent, "", fwidth,
- "Size of file size_t type:", (unsigned) f->shared->sizeof_size);
+ "Size of file offsets (haddr_t type):", (unsigned) f->shared->sizeof_addr);
HDfprintf(stream, "%*s%-*s %u bytes\n", indent, "", fwidth,
- "Size of file haddr_t type:", (unsigned) f->shared->sizeof_addr);
+ "Size of file lengths (hsize_t type):", (unsigned) f->shared->sizeof_size);
HDfprintf(stream, "%*s%-*s %u\n", indent, "", fwidth,
"Symbol table leaf node 1/2 rank:", f->shared->sym_leaf_k);
HDfprintf(stream, "%*s%-*s %u\n", indent, "", fwidth,
"Symbol table internal node 1/2 rank:",
(unsigned) (f->shared->btree_k[H5B_SNODE_ID]));
- HDfprintf(stream, "%*s%-*s %u\n", indent, "", fwidth,
- "Boot block version number:", (unsigned) boot_vers);
- HDfprintf(stream, "%*s%-*s %u\n", indent, "", fwidth,
- "Free list version number:", (unsigned) freespace_vers);
- HDfprintf(stream, "%*s%-*s %u\n", indent, "", fwidth,
- "Object directory version number:", (unsigned) obj_dir_vers);
- HDfprintf(stream, "%*s%-*s %u\n", indent, "", fwidth,
- "Shared header version number:", (unsigned) share_head_vers);
+ HDfprintf(stream, "%*s%-*s 0x%08lx\n", indent, "", fwidth,
+ "File consistency flags:",
+ (unsigned long) (f->shared->consist_flags));
+ HDfprintf(stream, "%*s%-*s %a (abs)\n", indent, "", fwidth,
+ "Base address:", f->shared->base_addr);
+ HDfprintf(stream, "%*s%-*s %a (rel)\n", indent, "", fwidth,
+ "Free list address:", f->shared->freespace_addr);
+
+ HDfprintf(stream, "%*s%-*s %a (rel)\n", indent, "", fwidth,
+ "Address of driver information block:", f->shared->driver_addr);
HDfprintf(stream, "%*s%-*s %s\n", indent, "", fwidth,
"Root group symbol table entry:",
diff --git a/src/H5Gent.c b/src/H5Gent.c
index 60ad89b..ab505fb 100644
--- a/src/H5Gent.c
+++ b/src/H5Gent.c
@@ -434,10 +434,15 @@ H5G_ent_debug(H5F_t UNUSED *f, hid_t dxpl_id, const H5G_entry_t *ent, FILE * str
int indent, int fwidth, haddr_t heap)
{
const char *lval = NULL;
+ int nested_indent, nested_fwidth;
herr_t ret_value=SUCCEED; /* Return value */
FUNC_ENTER_NOAPI(H5G_ent_debug, FAIL);
+ /* Calculate the indent & field width values for nested information */
+ nested_indent=indent+3;
+ nested_fwidth=MAX(0,fwidth-3);
+
HDfprintf(stream, "%*s%-*s %lu\n", indent, "", fwidth,
"Name offset into private heap:",
(unsigned long) (ent->name_off));
@@ -449,38 +454,42 @@ H5G_ent_debug(H5F_t UNUSED *f, hid_t dxpl_id, const H5G_entry_t *ent, FILE * str
"Dirty:",
ent->dirty ? "Yes" : "No");
HDfprintf(stream, "%*s%-*s ", indent, "", fwidth,
- "Symbol type:");
+ "Cache info type:");
switch (ent->type) {
- case H5G_NOTHING_CACHED:
- HDfprintf(stream, "Nothing Cached\n");
- break;
-
- case H5G_CACHED_STAB:
- HDfprintf(stream, "Symbol Table\n");
-
- HDfprintf(stream, "%*s%-*s %a\n", indent, "", fwidth,
- "B-tree address:", ent->cache.stab.btree_addr);
-
- HDfprintf(stream, "%*s%-*s %a\n", indent, "", fwidth,
- "Heap address:", ent->cache.stab.heap_addr);
- break;
-
- case H5G_CACHED_SLINK:
- HDfprintf (stream, "Symbolic Link\n");
- HDfprintf (stream, "%*s%-*s %lu\n", indent, "", fwidth,
- "Link value offset:",
- (unsigned long)(ent->cache.slink.lval_offset));
- if (H5F_addr_defined(heap)) {
- lval = H5HL_peek (ent->file, dxpl_id, heap, ent->cache.slink.lval_offset);
- HDfprintf (stream, "%*s%-*s %s\n", indent, "", fwidth,
- "Link value:",
- lval);
- }
- break;
-
- default:
- HDfprintf(stream, "*** Unknown symbol type %d\n", ent->type);
- break;
+ case H5G_NOTHING_CACHED:
+ HDfprintf(stream, "Nothing Cached\n");
+ break;
+
+ case H5G_CACHED_STAB:
+ HDfprintf(stream, "Symbol Table\n");
+
+ HDfprintf(stream, "%*s%-*s\n", indent, "", fwidth,
+ "Cached entry information:");
+ HDfprintf(stream, "%*s%-*s %a\n", nested_indent, "", nested_fwidth,
+ "B-tree address:", ent->cache.stab.btree_addr);
+
+ HDfprintf(stream, "%*s%-*s %a\n", nested_indent, "", nested_fwidth,
+ "Heap address:", ent->cache.stab.heap_addr);
+ break;
+
+ case H5G_CACHED_SLINK:
+ HDfprintf (stream, "Symbolic Link\n");
+ HDfprintf(stream, "%*s%-*s ", indent, "", fwidth,
+ "Cached information:\n");
+ HDfprintf (stream, "%*s%-*s %lu\n", nested_indent, "", nested_fwidth,
+ "Link value offset:",
+ (unsigned long)(ent->cache.slink.lval_offset));
+ if (H5F_addr_defined(heap)) {
+ lval = H5HL_peek (ent->file, dxpl_id, heap, ent->cache.slink.lval_offset);
+ HDfprintf (stream, "%*s%-*s %s\n", nested_indent, "", nested_fwidth,
+ "Link value:",
+ lval);
+ }
+ break;
+
+ default:
+ HDfprintf(stream, "*** Unknown symbol type %d\n", ent->type);
+ break;
}
done:
diff --git a/src/H5Gnode.c b/src/H5Gnode.c
index 1a153d5..a1f7762 100644
--- a/src/H5Gnode.c
+++ b/src/H5Gnode.c
@@ -232,7 +232,10 @@ H5G_node_debug_key (FILE *stream, H5F_t *f, hid_t dxpl_id, int indent, int fwidt
FUNC_ENTER_NOAPI(H5G_node_debug_key, FAIL);
assert (key);
- HDfprintf(stream, "%*s%-*s ", indent, "", fwidth, "Name :");
+ HDfprintf(stream, "%*s%-*s %u\n", indent, "", fwidth, "Heap offset:",
+ (unsigned)key->offset);
+
+ HDfprintf(stream, "%*s%-*s ", indent, "", fwidth, "Name:");
if (NULL == (s = H5HL_peek(f, dxpl_id, udata->heap_addr, key->offset)))
HGOTO_ERROR(H5E_SYM, H5E_NOTFOUND, FAIL, "unable to read symbol name");
HDfprintf (stream, "%s\n", s);
diff --git a/src/H5O.c b/src/H5O.c
index d6d84f4..7ef590c 100644
--- a/src/H5O.c
+++ b/src/H5O.c
@@ -3085,7 +3085,7 @@ H5O_debug(H5F_t *f, hid_t dxpl_id, haddr_t addr, FILE *stream, int indent, int f
size_t mesg_total = 0, chunk_total = 0;
int *sequence;
haddr_t tmp_addr;
- herr_t ret_value = FAIL;
+ herr_t ret_value = SUCCEED;
void *(*decode)(H5F_t*, hid_t, const uint8_t*, H5O_shared_t*);
herr_t (*debug)(H5F_t*, hid_t, const void*, FILE*, int, int)=NULL;
@@ -3161,7 +3161,7 @@ H5O_debug(H5F_t *f, hid_t dxpl_id, haddr_t addr, FILE *stream, int indent, int f
/* message name and size */
HDfprintf(stream, "%*s%-*s 0x%04x %s(%d)\n",
indent + 3, "", MAX(0, fwidth - 3),
- "Message ID:",
+ "Message ID (sequence number):",
(unsigned) (oh->mesg[i].type->id),
oh->mesg[i].type->name,
sequence[oh->mesg[i].type->id]++);
@@ -3207,10 +3207,12 @@ H5O_debug(H5F_t *f, hid_t dxpl_id, haddr_t addr, FILE *stream, int indent, int f
debug = NULL;
/* print the message */
+ HDfprintf(stream, "%*s%-*s\n", indent + 3, "", MAX(0, fwidth - 3),
+ "Message Information:");
if (debug)
- (debug)(f, dxpl_id, oh->mesg[i].native, stream, indent+3, MAX(0, fwidth-3));
+ (debug)(f, dxpl_id, oh->mesg[i].native, stream, indent+6, MAX(0, fwidth-6));
else
- HDfprintf(stream, "%*sNo info for this message.\n", indent + 3, "");
+ HDfprintf(stream, "%*s<No info for this message>\n", indent + 6, "");
/* If the message is shared then also print the pointed-to message */
if (oh->mesg[i].flags & H5O_FLAG_SHARED) {
diff --git a/tools/misc/h5debug.c b/tools/misc/h5debug.c
index c532e5d..145c553 100644
--- a/tools/misc/h5debug.c
+++ b/tools/misc/h5debug.c
@@ -54,7 +54,7 @@
int
main(int argc, char *argv[])
{
- hid_t fid, plist=H5P_DEFAULT;
+ hid_t fid, fapl, dxpl;
H5F_t *f;
haddr_t addr=0, extra=0;
uint8_t sig[16];
@@ -67,14 +67,27 @@ main(int argc, char *argv[])
HDexit(1);
}
+ /* Initialize the library */
+ if(H5open ()<0) {
+ fprintf(stderr, "cannot initialize the library\n");
+ HDexit(1);
+ }
+
/*
* Open the file and get the file descriptor.
*/
+ if((dxpl = H5Pcreate (H5P_DATASET_XFER))<0) {
+ fprintf(stderr, "cannot create dataset transfer property list\n");
+ HDexit(1);
+ }
+ if((fapl = H5Pcreate (H5P_FILE_ACCESS))<0) {
+ fprintf(stderr, "cannot create file access property list\n");
+ HDexit(1);
+ }
if (strchr (argv[1], '%')) {
- plist = H5Pcreate (H5P_FILE_ACCESS);
- H5Pset_fapl_family (plist, (hsize_t)0, H5P_DEFAULT);
+ H5Pset_fapl_family (fapl, (hsize_t)0, H5P_DEFAULT);
}
- if ((fid = H5Fopen(argv[1], H5F_ACC_RDONLY, plist)) < 0) {
+ if ((fid = H5Fopen(argv[1], H5F_ACC_RDONLY, fapl)) < 0) {
fprintf(stderr, "cannot open file\n");
HDexit(1);
}
@@ -97,7 +110,7 @@ main(int argc, char *argv[])
* Read the signature at the specified file position.
*/
HDfprintf(stdout, "Reading signature at address %a (rel)\n", addr);
- if (H5F_block_read(f, H5FD_MEM_SUPER, addr, sizeof(sig), H5P_DEFAULT, sig)<0) {
+ if (H5F_block_read(f, H5FD_MEM_SUPER, addr, sizeof(sig), dxpl, sig)<0) {
fprintf(stderr, "cannot read signature\n");
HDexit(3);
}
@@ -180,6 +193,8 @@ main(int argc, char *argv[])
fprintf(stderr, "An error occurred\n");
HDexit(5);
}
+ H5Pclose(dxpl);
+ H5Pclose(fapl);
H5Fclose(fid);
return 0;
}