[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] Re: [Xen-devel] [PATCH v4 09/15] xenctx: Add command line option -T (--tag-call-trace)
On 03/18/2014 10:15 PM, Don Slutz wrote: If specified, add stack addr to call trace. Here is an example: Call Trace: [<ffffffff8006b2b0>] default_idle+0x29 <-- ffffffff803ddf90: [<ffffffff80048d19>] cpu_idle+0x95 ffffffff803ddfa0: [<ffffffff803e7801>] start_kernel+0x220 ffffffff803ddfc0: [<ffffffff803e722f>] x86_64_start_kernel+0x22f and Stack Trace: * [<ffffffff8006b2b0>] default_idle+0x29 <-- ffffffff803ddf90: [<ffffffff80048d19>] cpu_idle+0x95 ffffffff803ddf98: 0000000000200800 ffffffff803ddfa0: [<ffffffff803e7801>] start_kernel+0x220 ffffffff803ddfa8: 0000000000086800 ffffffff803ddfb0: 0000000000000000 ffffffff803ddfb8: ffffffff80430720 ffffffff803ddfc0: [<ffffffff803e722f>] x86_64_start_kernel+0x22f ffffffff803ddfc8: 80008e000010019c ffffffff803ddfd0: 00000000ffffffff ffffffff803ddfd8: 0000000000000000 ffffffff803ddfe0: 0000000000000000 ffffffff803ddfe8: 0000000000200000 ffffffff803ddff0: 0000000000000000 ffffffff803ddff8: 0000000000000000 Signed-off-by: Don Slutz <Don@xxxxxxxxxxxxxxx> --- tools/xentrace/xenctx.c | 53 ++++++++++++++++++++++++++++++++++++++++++------- 1 file changed, 46 insertions(+), 7 deletions(-) diff --git a/tools/xentrace/xenctx.c b/tools/xentrace/xenctx.c index 22a1704..e5c45df 100644 --- a/tools/xentrace/xenctx.c +++ b/tools/xentrace/xenctx.c @@ -40,6 +40,7 @@ static struct xenctx { int lines; int decode_as_ascii; int tag_stack_dump; + int tag_call_trace; int all_vcpus; int self_paused; xc_dominfo_t dominfo; @@ -732,6 +733,8 @@ static int print_stack(vcpu_guest_context_any_t *ctx, int vcpu, int width) printf("Stack Trace:\n"); else printf("Call Trace:\n"); + if ( xenctx.tag_call_trace ) + printf(" %*s", width*2, ""); printf("%c [<", xenctx.stack_trace ? '*' : ' '); print_stack_word(instr_pointer(ctx), width); printf(">]"); @@ -747,9 +750,15 @@ static int print_stack(vcpu_guest_context_any_t *ctx, int vcpu, int width) p = map_page(ctx, vcpu, stack); if (!p) return -1; - printf("| "); + if ( xenctx.tag_call_trace ) + { + print_stack_word(stack, width); + printf(": | "); + } else { + printf("| "); + } print_stack_word(read_stack_word(p, width), width); - printf(" \n"); + printf("\n"); stack += width; } } else { @@ -761,7 +770,13 @@ static int print_stack(vcpu_guest_context_any_t *ctx, int vcpu, int width) return -1; frame = read_stack_word(p, width); if (xenctx.stack_trace) { - printf("|-- "); + if ( xenctx.tag_call_trace ) + { + print_stack_word(stack, width); + printf(": |-- "); + } else { + printf("|-- "); + } print_stack_word(read_stack_word(p, width), width); printf("\n"); } @@ -772,7 +787,13 @@ static int print_stack(vcpu_guest_context_any_t *ctx, int vcpu, int width) if (!p) return -1; word = read_stack_word(p, width); - printf("%c [<", xenctx.stack_trace ? '|' : ' '); + if ( xenctx.tag_call_trace ) + { + print_stack_word(stack, width); + printf(": %c [<", xenctx.stack_trace ? '|' : ' '); + } else { + printf("%c [<", xenctx.stack_trace ? '|' : ' '); + } print_stack_word(word, width); printf(">]"); print_symbol(word); @@ -788,13 +809,25 @@ static int print_stack(vcpu_guest_context_any_t *ctx, int vcpu, int width) return -1; word = read_stack_word(p, width); if (is_kernel_text(word)) { - printf(" [<"); + if ( xenctx.tag_call_trace ) + { + print_stack_word(stack, width); + printf(": [<"); + } else { + printf(" [<"); + } print_stack_word(word, width); printf(">]"); print_symbol(word); printf("\n"); } else if (xenctx.stack_trace) { - printf(" "); + if ( xenctx.tag_call_trace ) + { + print_stack_word(stack, width); + printf(": "); + } else { + printf(" "); + } print_stack_word(word, width); printf("\n"); } @@ -893,13 +926,15 @@ static void usage(void) printf(" add a decode of Stack dump as ascii.\n"); printf(" -t, --tag-stack-dump\n"); printf(" add address on each line of Stack dump.\n"); + printf(" -T, --tag-call-trace\n"); + printf(" add address on each line of Call trace.\n"); Since this happens for either a call trace or a stack trace, would it make more sense to make the long version "--tag-trace", and the description say something like "add address on each line of the call or stack trace"? -George _______________________________________________ Xen-devel mailing list Xen-devel@xxxxxxxxxxxxx http://lists.xen.org/xen-devel
|
Lists.xenproject.org is hosted with RackSpace, monitoring our |