forked from Dniel97/segatools
util/dump.c: Add hex pretty-print debug helper
This commit is contained in:
parent
d791464dd0
commit
f0f45a93a1
57
util/dump.c
Normal file
57
util/dump.c
Normal file
@ -0,0 +1,57 @@
|
|||||||
|
#ifndef NDEBUG
|
||||||
|
|
||||||
|
#include <assert.h>
|
||||||
|
#include <stddef.h>
|
||||||
|
|
||||||
|
#include "hook/iobuf.h"
|
||||||
|
|
||||||
|
#include "util/dprintf.h"
|
||||||
|
#include "util/dump.h"
|
||||||
|
|
||||||
|
void dump(const void *ptr, size_t nbytes)
|
||||||
|
{
|
||||||
|
const uint8_t *bytes;
|
||||||
|
size_t i;
|
||||||
|
|
||||||
|
assert(ptr != NULL);
|
||||||
|
|
||||||
|
if (nbytes == 0) {
|
||||||
|
dprintf("\t--- Empty ---\n");
|
||||||
|
}
|
||||||
|
|
||||||
|
bytes = ptr;
|
||||||
|
|
||||||
|
for (i = 0 ; i < nbytes ; i++) {
|
||||||
|
if (i % 16 == 0) {
|
||||||
|
dprintf("\t%08x:", i);
|
||||||
|
}
|
||||||
|
|
||||||
|
dprintf(" %02x", bytes[i]);
|
||||||
|
|
||||||
|
if (i % 16 == 15) {
|
||||||
|
dprintf("\n");
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
dprintf("\n");
|
||||||
|
}
|
||||||
|
|
||||||
|
void dump_iobuf(const struct iobuf *iobuf)
|
||||||
|
{
|
||||||
|
assert(iobuf != NULL);
|
||||||
|
assert(iobuf->bytes != NULL || iobuf->nbytes == 0);
|
||||||
|
assert(iobuf->pos <= iobuf->nbytes);
|
||||||
|
|
||||||
|
dump(iobuf->bytes, iobuf->pos);
|
||||||
|
}
|
||||||
|
|
||||||
|
void dump_const_iobuf(const struct const_iobuf *iobuf)
|
||||||
|
{
|
||||||
|
assert(iobuf != NULL);
|
||||||
|
assert(iobuf->bytes != NULL || iobuf->nbytes == 0);
|
||||||
|
assert(iobuf->pos <= iobuf->nbytes);
|
||||||
|
|
||||||
|
dump(&iobuf->bytes[iobuf->pos], iobuf->nbytes - iobuf->pos);
|
||||||
|
}
|
||||||
|
|
||||||
|
#endif
|
15
util/dump.h
Normal file
15
util/dump.h
Normal file
@ -0,0 +1,15 @@
|
|||||||
|
#pragma once
|
||||||
|
|
||||||
|
#include <stddef.h>
|
||||||
|
|
||||||
|
#include "hook/iobuf.h"
|
||||||
|
|
||||||
|
#ifndef NDEBUG
|
||||||
|
void dump(const void *ptr, size_t nbytes);
|
||||||
|
void dump_iobuf(const struct iobuf *iobuf);
|
||||||
|
void dump_const_iobuf(const struct const_iobuf *iobuf);
|
||||||
|
#else
|
||||||
|
#define dump(ptr, nbytes)
|
||||||
|
#define dump_iobuf(iobuf)
|
||||||
|
#define dump_const_iobuf(iobuf)
|
||||||
|
#endif
|
@ -11,6 +11,8 @@ util_lib = static_library(
|
|||||||
'crc.h',
|
'crc.h',
|
||||||
'dprintf.c',
|
'dprintf.c',
|
||||||
'dprintf.h',
|
'dprintf.h',
|
||||||
|
'dump.c',
|
||||||
|
'dump.h',
|
||||||
'setupapi.c',
|
'setupapi.c',
|
||||||
'setupapi.h',
|
'setupapi.h',
|
||||||
],
|
],
|
||||||
|
Loading…
Reference in New Issue
Block a user