[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] [Xen-devel] [PATCH v2 03/12] xenctx: Output ascii version of stack also.
From: Don Slutz <Don@xxxxxxxxxxxxxxx> Signed-off-by: Don Slutz <Don@xxxxxxxxxxxxxxx> --- tools/xentrace/xenctx.c | 27 ++++++++++++++++++++++++++- 1 files changed, 26 insertions(+), 1 deletions(-) diff --git a/tools/xentrace/xenctx.c b/tools/xentrace/xenctx.c index 06a8850..dabce16 100644 --- a/tools/xentrace/xenctx.c +++ b/tools/xentrace/xenctx.c @@ -640,6 +640,8 @@ static int print_code(vcpu_guest_context_any_t *ctx, int vcpu) return 0; } +#define BYTES_PER_LINE 32 + static int print_stack(vcpu_guest_context_any_t *ctx, int vcpu, int width) { guest_word_t stack = stack_pointer(ctx); @@ -647,6 +649,8 @@ static int print_stack(vcpu_guest_context_any_t *ctx, int vcpu, int width) guest_word_t frame; guest_word_t word; guest_word_t *p; + guest_word_t ascii[BYTES_PER_LINE/4]; + unsigned char *bytep; int i; stack_limit = ((stack_pointer(ctx) + XC_PAGE_SIZE) @@ -656,15 +660,36 @@ static int print_stack(vcpu_guest_context_any_t *ctx, int vcpu, int width) printf("\n"); printf("Stack:\n"); for (i=1; i<10 && stack < stack_limit; i++) { - while(stack < stack_limit && stack < stack_pointer(ctx) + i*32) { + int j = 0; + int k; + + while(stack < stack_limit && stack < stack_pointer(ctx) + i*BYTES_PER_LINE) { p = map_page(ctx, vcpu, stack); if (!p) return -1; word = read_stack_word(p, width); + ascii[j++] = word; printf(" "); print_stack_word(word, width); stack += width; } + printf(" "); + for (k = j; k < BYTES_PER_LINE/width; k++) + printf("%s ", width == 8 + ? " " + : " "); + for (k = 0; k < j; k++) { + int l; + + bytep = (unsigned char*)&ascii[k]; + for (l = 0; l < width; l++) { + if ((*bytep < 127) && (*bytep >= 32)) + printf("%c", *bytep); + else + printf("."); + bytep++; + } + } printf("\n"); } printf("\n"); -- 1.7.1 _______________________________________________ Xen-devel mailing list Xen-devel@xxxxxxxxxxxxx http://lists.xen.org/xen-devel
|
Lists.xenproject.org is hosted with RackSpace, monitoring our |