All of lore.kernel.org
 help / color / mirror / Atom feed
From: Don Slutz <dslutz@verizon.com>
To: Ian Campbell <Ian.Campbell@citrix.com>, Don Slutz <dslutz@verizon.com>
Cc: Stefano Stabellini <stefano.stabellini@eu.citrix.com>,
	George Dunlap <george.dunlap@eu.citrix.com>,
	Don Slutz <Don@CloudSwitch.com>,
	Ian Jackson <ian.jackson@eu.citrix.com>,
	xen-devel@lists.xen.org, Jan Beulich <jbeulich@suse.com>
Subject: Re: [PATCH v5 09/17] xenctx: Add command line option -T (--tag-trace)
Date: Mon, 24 Mar 2014 15:54:57 -0400	[thread overview]
Message-ID: <53308D91.3070300@terremark.com> (raw)
In-Reply-To: <1395413088.19839.117.camel@kazak.uk.xensource.com>

On 03/21/14 10:44, Ian Campbell wrote:
> 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
>

Ok.

>> @@ -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?)

Nope.   These are non "-f -S"  output.


Here is "-f -S" output:


xenctx -s /boot/System.map-2.6.32-279.2.1.el6.mpbios5.x86_64 -f -S 2
rip: ffffffff810387db native_safe_halt+0xb
flags: 00000246 i z p
rsp: ffffffff81a03ec8
rax: 0000000000000000   rcx: 0000000000000000   rdx: 0000000000000000
rbx: 0000000000000000   rsi: 0000000000000001   rdi: ffffffff81ddc228
rbp: ffffffff81a03ec8    r8: 0000000000000000    r9: 0000000000000000
r10: 000001f319222f0f   r11: ffffffff81a03e68   r12: ffffffff81c03800
r13: 0000000000000000   r14: ffffffffffffffff   r15: 000000000008a790
  cs: 0010        ss: 0018        ds: 0018        es: 0018
  fs: 0000 @ 0000000000000000
  gs: 0000 @ ffff88000b400000/0000000000000000/
Code (instr addr ffffffff810387db)
44 00 00 fb c9 c3 0f 1f 40 00 55 48 89 e5 0f 1f 44 00 00 fb f4 <c9> c3 0f 1f 00 55 48 89 e5 0f 1f


Stack:
  ffffffff81a03ee8 ffffffff810149cd ffffffff81a03fd8 ffffffff81c03800
  ffffffff81a03f18 ffffffff81009e06 6db6db6db6db6db7 e8be668bda5ab5b6
  0000000000000000 6db6db6db6db6db7 ffffffff81a03f28 ffffffff814e447a
  ffffffff81a03f68 ffffffff81c23f7b 8d0573d9e73df7bb ffffffff81c6b440
  0000000002014024 0000000000000000 ffffffff81dd9000 ffffffff81a03fa8

Stack Trace:
* [<ffffffff810387db>] native_safe_halt+0xb <--
|-- ffffffff81a03ee8
| [<ffffffff810149cd>] default_idle+0x4d
|   ffffffff81a03fd8
|   ffffffff81c03800
|-- ffffffff81a03f18
| [<ffffffff81009e06>] cpu_idle+0xb6
|   6db6db6db6db6db7
|   e8be668bda5ab5b6
|   0000000000000000
|   6db6db6db6db6db7
|-- ffffffff81a03f28
| [<ffffffff814e447a>] rest_init+0x7a
|-- ffffffff81a03f68
| [<ffffffff81c23f7b>] start_kernel+0x424
|   8d0573d9e73df7bb
|   ffffffff81c6b440
|   0000000002014024
|   0000000000000000
|   ffffffff81dd9000
|   ffffffff81a03fa8
|-- ffffffff81a03f88
| [<ffffffff81c2333a>] x86_64_start_reservations+0x125
|   ffffffff81a03fa8
|   0000000000000020
|-- ffffffff81a03fe8
| [<ffffffff81c23438>] x86_64_start_kernel+0xfa
|   0000000000000000
|   0000000000000000
|   81c28e0000103136
|   00000000ffffffff
|   0000000000000000
|   0000000000000000
|   0000000000000000
|   0000000000000000
|   0000000000000000
|   0000000000000000
|-- 0000000000000000


>> @@ -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.
>
>

Ok, I will recode these all as routine that is basicly:


+                if ( xenctx.tag_call_trace )
+                {
+                    print_stack_word(stack, width);
+                    printf(": ");
+                }



    -Don Slutz

  reply	other threads:[~2014-03-24 19:54 UTC|newest]

Thread overview: 77+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2014-03-20 19:06 [PATCH v5 00/17] xenctx: Many changes Don Slutz
2014-03-20 19:06 ` [PATCH v5 01/17] xenctx: clean up usage output Don Slutz
2014-03-21 14:21   ` Ian Campbell
2014-03-20 19:06 ` [PATCH v5 02/17] xenctx: Clean up stack trace when hypercall_page not in symbol table Don Slutz
2014-03-20 19:06 ` [PATCH v5 03/17] xenctx: Add -n (--display-stack-pages) option to output larger stack Don Slutz
2014-03-21 14:29   ` Ian Campbell
2014-03-22 20:49     ` Don Slutz
2014-03-24 10:39       ` Ian Campbell
2014-03-24 13:26         ` Don Slutz
2014-03-20 19:06 ` [PATCH v5 04/17] xenctx: Add command line options -b (--bytes-per-line) and -l (--lines) Don Slutz
2014-03-21 14:32   ` Ian Campbell
2014-03-22 20:08     ` Don Slutz
2014-03-22 20:10       ` Don Slutz
2014-03-24 10:44       ` Ian Campbell
2014-03-24 16:58         ` Don Slutz
2014-03-27 15:55           ` Ian Campbell
2014-03-27 19:36             ` Don Slutz
2014-03-20 19:06 ` [PATCH v5 05/17] xenctx: Add command line option -D (--decode-as-ascii) Don Slutz
2014-03-21 14:38   ` Ian Campbell
2014-03-21 18:42     ` Don Slutz
2014-03-24 10:46       ` Ian Campbell
2014-03-24 17:00         ` Don Slutz
2014-03-20 19:06 ` [PATCH v5 06/17] xenctx: Add command line option -t (--tag-stack-dump) Don Slutz
2014-03-21 14:40   ` Ian Campbell
2014-03-20 19:06 ` [PATCH v5 07/17] xenctx: Change print_symbol to do the space before Don Slutz
2014-03-20 19:06 ` [PATCH v5 08/17] xenctx: More info on failed to map page Don Slutz
2014-03-20 19:06 ` [PATCH v5 09/17] xenctx: Add command line option -T (--tag-trace) Don Slutz
2014-03-21 14:44   ` Ian Campbell
2014-03-24 19:54     ` Don Slutz [this message]
2014-03-27 15:56       ` Ian Campbell
2014-03-20 19:06 ` [PATCH v5 10/17] xenctx: Add -m (--memory) <maddr> option to dump memory at maddr Don Slutz
2014-03-21 14:53   ` Ian Campbell
2014-03-25 19:16     ` Don Slutz
2014-03-20 19:06 ` [PATCH v5 11/17] xenctx: Add -d (--dump-as-stack) <daddr> option to dump memory at daddr as a stack Don Slutz
2014-03-21 14:57   ` Ian Campbell
2014-03-24 15:22     ` Don Slutz
2014-03-27 15:58       ` Ian Campbell
2014-03-27 17:05         ` Don Slutz
2014-03-27 17:20           ` Ian Campbell
2014-03-27 17:49             ` Don Slutz
2014-03-20 19:07 ` [PATCH v5 12/17] xenctx: change is_kernel_text() into kernel_addr() Don Slutz
2014-03-21 15:02   ` Ian Campbell
2014-03-21 17:45     ` Don Slutz
2014-03-24 22:23       ` Don Slutz
2014-03-25  9:13         ` Jan Beulich
2014-03-27 15:59         ` Ian Campbell
2014-03-20 19:07 ` [PATCH v5 13/17] xenctx: Add convert of more registers to symbols Don Slutz
2014-03-21 10:24   ` Jan Beulich
2014-03-21 12:34     ` Don Slutz
2014-03-21 14:11       ` [PATCH v6 " Don Slutz
2014-03-21 14:45         ` Jan Beulich
2014-03-21 17:43           ` [PATCH v7 " Don Slutz
2014-03-24 10:51             ` Ian Campbell
2014-03-21 15:03         ` [PATCH v6 " Ian Campbell
2014-03-21 17:38           ` Don Slutz
2014-03-21 15:07   ` [PATCH v5 " Ian Campbell
2014-03-21 15:11     ` Jan Beulich
2014-03-21 16:06       ` Ian Campbell
2014-03-21 18:16         ` Don Slutz
2014-03-24 10:49           ` Ian Campbell
2014-03-24 14:09             ` Don Slutz
2014-03-27 16:06               ` Ian Campbell
2014-03-27 16:52                 ` Don Slutz
2014-03-20 19:07 ` [PATCH v5 14/17] xenctx: Add output of vcpu value and state for --all-vcpus Don Slutz
2014-03-27 16:07   ` Ian Campbell
2014-03-20 19:07 ` [PATCH v5 15/17] xenctx: Fix handling of !guest_protected_mode Don Slutz
2014-03-21 15:09   ` Ian Campbell
2014-03-24 22:35     ` Don Slutz
2014-03-20 19:07 ` [PATCH v5 16/17] xenctx: Allow output for offline vcpu when specified Don Slutz
2014-03-21 15:11   ` Ian Campbell
2014-03-24 13:20     ` Don Slutz
2014-03-20 19:07 ` [PATCH v5 17/17] xenctx: Fixup options checking Don Slutz
2014-03-21 15:13   ` Ian Campbell
2014-03-24 14:26     ` Don Slutz
2014-03-27 16:10       ` Ian Campbell
2014-03-21 15:14 ` [PATCH v5 00/17] xenctx: Many changes Ian Campbell
2014-03-21 17:37   ` Don Slutz

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=53308D91.3070300@terremark.com \
    --to=dslutz@verizon.com \
    --cc=Don@CloudSwitch.com \
    --cc=Ian.Campbell@citrix.com \
    --cc=george.dunlap@eu.citrix.com \
    --cc=ian.jackson@eu.citrix.com \
    --cc=jbeulich@suse.com \
    --cc=stefano.stabellini@eu.citrix.com \
    --cc=xen-devel@lists.xen.org \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.