From mboxrd@z Thu Jan 1 00:00:00 1970 From: Don Slutz Subject: Re: [PATCH v4 09/15] xenctx: Add command line option -T (--tag-call-trace) Date: Wed, 19 Mar 2014 20:55:33 -0400 Message-ID: <532A3C85.9040907@terremark.com> References: <1395180940-23901-1-git-send-email-dslutz@verizon.com> <1395180940-23901-10-git-send-email-dslutz@verizon.com> <5329C3B0.9070909@eu.citrix.com> Mime-Version: 1.0 Content-Type: text/plain; charset="us-ascii"; Format="flowed" Content-Transfer-Encoding: 7bit Return-path: In-Reply-To: <5329C3B0.9070909@eu.citrix.com> List-Unsubscribe: , List-Post: List-Help: List-Subscribe: , Sender: xen-devel-bounces@lists.xen.org Errors-To: xen-devel-bounces@lists.xen.org To: George Dunlap Cc: Ian Campbell , Stefano Stabellini , Don Slutz , Ian Jackson , Don Slutz , xen-devel@lists.xen.org, Jan Beulich List-Id: xen-devel@lists.xenproject.org On 03/19/14 12:20, George Dunlap wrote: > On 03/18/2014 10:15 PM, Don Slutz wrote: >> If specified, add stack addr to call trace. >> >> Here is an example: >> >> Call Trace: >> [] default_idle+0x29 <-- >> ffffffff803ddf90: [] cpu_idle+0x95 >> ffffffff803ddfa0: [] start_kernel+0x220 >> ffffffff803ddfc0: [] x86_64_start_kernel+0x22f >> >> and >> >> Stack Trace: >> * [] default_idle+0x29 <-- >> ffffffff803ddf90: [] cpu_idle+0x95 >> ffffffff803ddf98: 0000000000200800 >> ffffffff803ddfa0: [] start_kernel+0x220 >> ffffffff803ddfa8: 0000000000086800 >> ffffffff803ddfb0: 0000000000000000 >> ffffffff803ddfb8: ffffffff80430720 >> ffffffff803ddfc0: [] x86_64_start_kernel+0x22f >> ffffffff803ddfc8: 80008e000010019c >> ffffffff803ddfd0: 00000000ffffffff >> ffffffff803ddfd8: 0000000000000000 >> ffffffff803ddfe0: 0000000000000000 >> ffffffff803ddfe8: 0000000000200000 >> ffffffff803ddff0: 0000000000000000 >> ffffffff803ddff8: 0000000000000000 >> >> Signed-off-by: Don Slutz >> --- >> 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"? > I will change to this. -Don Slutz > -George >