• dmesg 程序崩溃调试


    
    [root@localhost log]# cat -n /root/xx.c
         1
         2
         3  #include <stdio.h>
         4
         5  void func(char *p)
         6  {
         7  *p = 'p';
         8  }
         9
        10  int main(int argc, char *argv[])
        11  {
        12  char *p=NULL;
        13  func(p);
        14
        15  return 0;
        16  }

    [root@localhost log]# /root/xx
     
    [root@localhost log]# dmesg 
    
    xx[8226]: segfault at 0 ip 0000000000400454 sp 00007fffcb8b6360 error 6 in xx[400000+1000]





    [root@localhost log]# objdump -d /root/xx
    
    /root/xx:     file format elf64-x86-64
    
    Disassembly of section .init:
    
    0000000000400338 <_init>:
      400338:       48 83 ec 08             sub    $0x8,%rsp
      40033c:       e8 5b 00 00 00          callq  40039c <call_gmon_start>
      400341:       e8 da 00 00 00          callq  400420 <frame_dummy>
      400346:       e8 d5 01 00 00          callq  400520 <__do_global_ctors_aux>
      40034b:       48 83 c4 08             add    $0x8,%rsp
      40034f:       c3                      retq   
    Disassembly of section .plt:
    
    0000000000400350 <__libc_start_main@plt-0x10>:
      400350:       ff 35 d2 04 20 00       pushq  2098386(%rip)        # 600828 <_GLOBAL_OFFSET_TABLE_+0x8>
      400356:       ff 25 d4 04 20 00       jmpq   *2098388(%rip)        # 600830 <_GLOBAL_OFFSET_TABLE_+0x10>
      40035c:       0f 1f 40 00             nopl   0x0(%rax)
    
    0000000000400360 <__libc_start_main@plt>:
      400360:       ff 25 d2 04 20 00       jmpq   *2098386(%rip)        # 600838 <_GLOBAL_OFFSET_TABLE_+0x18>
      400366:       68 00 00 00 00          pushq  $0x0
      40036b:       e9 e0 ff ff ff          jmpq   400350 <_init+0x18>
    Disassembly of section .text:
    
    0000000000400370 <_start>:
      400370:       31 ed                   xor    %ebp,%ebp
      400372:       49 89 d1                mov    %rdx,%r9
      400375:       5e                      pop    %rsi
      400376:       48 89 e2                mov    %rsp,%rdx
      400379:       48 83 e4 f0             and    $0xfffffffffffffff0,%rsp
      40037d:       50                      push   %rax
      40037e:       54                      push   %rsp
      40037f:       49 c7 c0 80 04 40 00    mov    $0x400480,%r8
      400386:       48 c7 c1 90 04 40 00    mov    $0x400490,%rcx
      40038d:       48 c7 c7 59 04 40 00    mov    $0x400459,%rdi
      400394:       e8 c7 ff ff ff          callq  400360 <__libc_start_main@plt>
      400399:       f4                      hlt    
      40039a:       90                      nop    
      40039b:       90                      nop    
    
    000000000040039c <call_gmon_start>:
      40039c:       48 83 ec 08             sub    $0x8,%rsp
      4003a0:       48 8b 05 71 04 20 00    mov    2098289(%rip),%rax        # 600818 <_DYNAMIC+0x190>
      4003a7:       48 85 c0                test   %rax,%rax
      4003aa:       74 02                   je     4003ae <call_gmon_start+0x12>
      4003ac:       ff d0                   callq  *%rax
      4003ae:       48 83 c4 08             add    $0x8,%rsp
      4003b2:       c3                      retq   
      4003b3:       90                      nop    
      4003b4:       90                      nop    
      4003b5:       90                      nop    
      4003b6:       90                      nop    
      4003b7:       90                      nop    
      4003b8:       90                      nop    
      4003b9:       90                      nop    
      4003ba:       90                      nop    
      4003bb:       90                      nop    
      4003bc:       90                      nop    
      4003bd:       90                      nop    
      4003be:       90                      nop    
      4003bf:       90                      nop    
    
    00000000004003c0 <__do_global_dtors_aux>:
      4003c0:       55                      push   %rbp
      4003c1:       48 89 e5                mov    %rsp,%rbp
      4003c4:       53                      push   %rbx
      4003c5:       48 83 ec 08             sub    $0x8,%rsp
      4003c9:       80 3d 80 04 20 00 00    cmpb   $0x0,2098304(%rip)        # 600850 <completed.6145>
      4003d0:       75 44                   jne    400416 <__do_global_dtors_aux+0x56>
      4003d2:       b8 78 06 60 00          mov    $0x600678,%eax
      4003d7:       48 2d 70 06 60 00       sub    $0x600670,%rax
      4003dd:       48 c1 f8 03             sar    $0x3,%rax
      4003e1:       48 8d 58 ff             lea    0xffffffffffffffff(%rax),%rbx
      4003e5:       48 8b 05 5c 04 20 00    mov    2098268(%rip),%rax        # 600848 <dtor_idx.6147>
      4003ec:       48 39 c3                cmp    %rax,%rbx
      4003ef:       76 1e                   jbe    40040f <__do_global_dtors_aux+0x4f>
      4003f1:       48 83 c0 01             add    $0x1,%rax
      4003f5:       48 89 05 4c 04 20 00    mov    %rax,2098252(%rip)        # 600848 <dtor_idx.6147>
      4003fc:       ff 14 c5 70 06 60 00    callq  *0x600670(,%rax,8)
      400403:       48 8b 05 3e 04 20 00    mov    2098238(%rip),%rax        # 600848 <dtor_idx.6147>
      40040a:       48 39 c3                cmp    %rax,%rbx
      40040d:       77 e2                   ja     4003f1 <__do_global_dtors_aux+0x31>
      40040f:       c6 05 3a 04 20 00 01    movb   $0x1,2098234(%rip)        # 600850 <completed.6145>
      400416:       48 83 c4 08             add    $0x8,%rsp
      40041a:       5b                      pop    %rbx
      40041b:       c9                      leaveq 
      40041c:       c3                      retq   
      40041d:       0f 1f 00                nopl   (%rax)
    
    0000000000400420 <frame_dummy>:
      400420:       55                      push   %rbp
      400421:       48 83 3d 57 02 20 00    cmpq   $0x0,2097751(%rip)        # 600680 <__JCR_END__>
      400428:       00 
      400429:       48 89 e5                mov    %rsp,%rbp
      40042c:       74 16                   je     400444 <frame_dummy+0x24>
      40042e:       b8 00 00 00 00          mov    $0x0,%eax
      400433:       48 85 c0                test   %rax,%rax
      400436:       74 0c                   je     400444 <frame_dummy+0x24>
      400438:       bf 80 06 60 00          mov    $0x600680,%edi
      40043d:       49 89 c3                mov    %rax,%r11
      400440:       c9                      leaveq 
      400441:       41 ff e3                jmpq   *%r11
      400444:       c9                      leaveq 
      400445:       c3                      retq   
      400446:       90                      nop    
      400447:       90                      nop    
    
    0000000000400448 <func>:
      400448:       55                      push   %rbp
      400449:       48 89 e5                mov    %rsp,%rbp
      40044c:       48 89 7d f8             mov    %rdi,0xfffffffffffffff8(%rbp)
      400450:       48 8b 45 f8             mov    0xfffffffffffffff8(%rbp),%rax
      400454:       c6 00 70                movb   $0x70,(%rax)
      400457:       c9                      leaveq 
      400458:       c3                      retq   
    
    0000000000400459 <main>:
      400459:       55                      push   %rbp
      40045a:       48 89 e5                mov    %rsp,%rbp
      40045d:       48 83 ec 20             sub    $0x20,%rsp
      400461:       89 7d ec                mov    %edi,0xffffffffffffffec(%rbp)
      400464:       48 89 75 e0             mov    %rsi,0xffffffffffffffe0(%rbp)
      400468:       48 c7 45 f8 00 00 00    movq   $0x0,0xfffffffffffffff8(%rbp)
      40046f:       00 
      400470:       48 8b 7d f8             mov    0xfffffffffffffff8(%rbp),%rdi
      400474:       e8 cf ff ff ff          callq  400448 <func>
      400479:       b8 00 00 00 00          mov    $0x0,%eax
      40047e:       c9                      leaveq 
      40047f:       c3                      retq   
    
    0000000000400480 <__libc_csu_fini>:
      400480:       f3 c3                   repz retq 
      400482:       0f 1f 80 00 00 00 00    nopl   0x0(%rax)
      400489:       0f 1f 80 00 00 00 00    nopl   0x0(%rax)
    
    0000000000400490 <__libc_csu_init>:
      400490:       4c 89 64 24 e0          mov    %r12,0xffffffffffffffe0(%rsp)
      400495:       4c 89 6c 24 e8          mov    %r13,0xffffffffffffffe8(%rsp)
      40049a:       4c 8d 25 bb 01 20 00    lea    2097595(%rip),%r12        # 60065c <__fini_array_end>
      4004a1:       4c 89 74 24 f0          mov    %r14,0xfffffffffffffff0(%rsp)
      4004a6:       4c 89 7c 24 f8          mov    %r15,0xfffffffffffffff8(%rsp)
      4004ab:       49 89 f6                mov    %rsi,%r14
      4004ae:       48 89 5c 24 d0          mov    %rbx,0xffffffffffffffd0(%rsp)
      4004b3:       48 89 6c 24 d8          mov    %rbp,0xffffffffffffffd8(%rsp)
      4004b8:       48 83 ec 38             sub    $0x38,%rsp
      4004bc:       41 89 ff                mov    %edi,%r15d
      4004bf:       49 89 d5                mov    %rdx,%r13
      4004c2:       e8 71 fe ff ff          callq  400338 <_init>
      4004c7:       48 8d 05 8e 01 20 00    lea    2097550(%rip),%rax        # 60065c <__fini_array_end>
      4004ce:       49 29 c4                sub    %rax,%r12
      4004d1:       49 c1 fc 03             sar    $0x3,%r12
      4004d5:       4d 85 e4                test   %r12,%r12
      4004d8:       74 1e                   je     4004f8 <__libc_csu_init+0x68>
      4004da:       31 ed                   xor    %ebp,%ebp
      4004dc:       48 89 c3                mov    %rax,%rbx
      4004df:       90                      nop    
      4004e0:       48 83 c5 01             add    $0x1,%rbp
      4004e4:       4c 89 ea                mov    %r13,%rdx
      4004e7:       4c 89 f6                mov    %r14,%rsi
      4004ea:       44 89 ff                mov    %r15d,%edi
      4004ed:       ff 13                   callq  *(%rbx)
      4004ef:       48 83 c3 08             add    $0x8,%rbx
      4004f3:       49 39 ec                cmp    %rbp,%r12
      4004f6:       75 e8                   jne    4004e0 <__libc_csu_init+0x50>
      4004f8:       48 8b 5c 24 08          mov    0x8(%rsp),%rbx
      4004fd:       48 8b 6c 24 10          mov    0x10(%rsp),%rbp
      400502:       4c 8b 64 24 18          mov    0x18(%rsp),%r12
      400507:       4c 8b 6c 24 20          mov    0x20(%rsp),%r13
      40050c:       4c 8b 74 24 28          mov    0x28(%rsp),%r14
      400511:       4c 8b 7c 24 30          mov    0x30(%rsp),%r15
      400516:       48 83 c4 38             add    $0x38,%rsp
      40051a:       c3                      retq   
      40051b:       90                      nop    
      40051c:       90                      nop    
      40051d:       90                      nop    
      40051e:       90                      nop    
      40051f:       90                      nop    
    
    0000000000400520 <__do_global_ctors_aux>:
      400520:       55                      push   %rbp
      400521:       48 89 e5                mov    %rsp,%rbp
      400524:       53                      push   %rbx
      400525:       bb 60 06 60 00          mov    $0x600660,%ebx
      40052a:       48 83 ec 08             sub    $0x8,%rsp
      40052e:       48 8b 05 2b 01 20 00    mov    2097451(%rip),%rax        # 600660 <__CTOR_LIST__>
      400535:       48 83 f8 ff             cmp    $0xffffffffffffffff,%rax
      400539:       74 14                   je     40054f <__do_global_ctors_aux+0x2f>
      40053b:       0f 1f 44 00 00          nopl   0x0(%rax,%rax,1)
      400540:       48 83 eb 08             sub    $0x8,%rbx
      400544:       ff d0                   callq  *%rax
      400546:       48 8b 03                mov    (%rbx),%rax
      400549:       48 83 f8 ff             cmp    $0xffffffffffffffff,%rax
      40054d:       75 f1                   jne    400540 <__do_global_ctors_aux+0x20>
      40054f:       48 83 c4 08             add    $0x8,%rsp
      400553:       5b                      pop    %rbx
      400554:       c9                      leaveq 
      400555:       c3                      retq   
      400556:       90                      nop    
      400557:       90                      nop    
    Disassembly of section .fini:
    
    0000000000400558 <_fini>:
      400558:       48 83 ec 08             sub    $0x8,%rsp
      40055c:       e8 5f fe ff ff          callq  4003c0 <__do_global_dtors_aux>
      400561:       48 83 c4 08             add    $0x8,%rsp
      400565:       c3                      retq   


    [root@localhost log]# objdump -d /root/xx |grep -C5
    400454 0000000000400448 <func>: 400448: 55 push %rbp 400449: 48 89 e5 mov %rsp,%rbp 40044c: 48 89 7d f8 mov %rdi,0xfffffffffffffff8(%rbp) 400450: 48 8b 45 f8 mov 0xfffffffffffffff8(%rbp),%rax 400454: c6 00 70 movb $0x70,(%rax) 400457: c9 leaveq 400458: c3 retq 0000000000400459 <main>: 400459: 55 push %rbp
    Usage: addr2line [option(s)] [addr(s)]
     Convert addresses into line number/file name pairs.
     If no addresses are specified on the command line, they will be read from stdin
     The options are:
      @<file>                Read options from <file>
      -b --target=<bfdname>  Set the binary file format
      -e --exe=<executable>  Set the input file name (default is a.out)
      -i --inlines           Unwind inlined functions
      -j --section=<name>    Read section-relative offsets instead of addresses
      -s --basenames         Strip directory names
      -f --functions         Show function names
      -C --demangle[=style]  Demangle function names
      -h --help              Display this information
      -v --version           Display the program's version
    
    
    [root@localhost log]# addr2line -e /root/xx 0x400454
    /root/xx.c:7
    gdb调试:


    [root@localhost ~]# gdb ./xx GNU gdb (GDB)
    7.7 Copyright (C) 2014 Free Software Foundation, Inc. License GPLv3+: GNU GPL version 3 or later <http://gnu.org/licenses/gpl.html> This is free software: you are free to change and redistribute it. There is NO WARRANTY, to the extent permitted by law. Type "show copying" and "show warranty" for details. This GDB was configured as "x86_64-unknown-linux-gnu". Type "show configuration" for configuration details. For bug reporting instructions, please see: <http://www.gnu.org/software/gdb/bugs/>. Find the GDB manual and other documentation resources online at: <http://www.gnu.org/software/gdb/documentation/>. For help, type "help". Type "apropos word" to search for commands related to "word"... Reading symbols from ./xx...done. (gdb) disas 0x400454 Dump of assembler code for function func: 0x0000000000400448 <+0>: push %rbp 0x0000000000400449 <+1>: mov %rsp,%rbp 0x000000000040044c <+4>: mov %rdi,-0x8(%rbp) 0x0000000000400450 <+8>: mov -0x8(%rbp),%rax 0x0000000000400454 <+12>: movb $0x70,(%rax) 0x0000000000400457 <+15>: leaveq 0x0000000000400458 <+16>: retq End of assembler dump.

    (gdb) list func
    1
    2
    3       #include <stdio.h>
    4
    5       void func(char *p)
    6       {
    7       *p = 'p';
    8       }
    9
    10      int main(int argc, char *argv[])
    
    
    





     








  • 相关阅读:
    P1005 矩阵取数
    [BZOJ2662][BeiJing wc2012]冻结
    [BZOJ1191]超级英雄Hero
    [bzoj1008] 越狱
    [bzoj1001]狼抓兔子 最小割
    网络流24题——负载平衡问题
    分形小山
    可并堆——左偏树、斜堆
    NOIP最优贸易
    洛谷P2073送花
  • 原文地址:https://www.cnblogs.com/zengkefu/p/5539294.html
Copyright © 2020-2023  润新知