| 
    
 [Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] Re: [Xen-devel] [PATCH v5 09/17] xenctx: Add command line option -T (--tag-trace)
 On Thu, 2014-03-20 at 15:06 -0400, Don Slutz wrote:
> If specified, add stack addr to Call and Stack trace.
This could safely be unconditional I think.
Or if not then it should share an option with --tag-stack-dump, e.g.
-a,--print-addresses
> @@ -755,9 +758,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("|   ");
> +                    }
if (trace)
        print stack work
        print ": "
}
print ("|    ")
(the examples you gave have no vertical | in them -- are they out of
date?)
> @@ -769,7 +778,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("|-- ");
> +                }
Same comment as above.
>                  print_stack_word(read_stack_word(p, width), width);
>                  printf("\n");
>              }
> @@ -780,7 +795,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 ? '|' : ' ');
> +                }
and again (here the code duplication is especially intolerable)
>                  print_stack_word(word, width);
>                  printf(">]");
>                  print_symbol(word);
> @@ -796,13 +817,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("  [<");
> +                }
again.
>                  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("    ");
> +                }
again.
It almost like a print_stack_trace helper is in order.
_______________________________________________
Xen-devel mailing list
Xen-devel@xxxxxxxxxxxxx
http://lists.xen.org/xen-devel
 
 
  | 
  
![]()  | 
            
         Lists.xenproject.org is hosted with RackSpace, monitoring our  |