Crash使用参考

整理自man 8 crash

1、简介

Crash工具可以用来分析一个正在运行的内核,也可以用来分析一个内核的crash dump文件,这里说的是内核代码异常产生的crash dump文件,不是应用层程序运行异常产生的core dump文件,它支持分析由netdump, diskdump, LKCD, kdump, xen‐dump 或者 kvmdump 工具产生的crash dump文件。它整合了SVR4 UNIX crash的工具和GDB调试器,因而具有源码级别调试能力。Crash工具可以用来分析内核的调用堆栈,内核源码的反汇编,内核数据结构和变量的格式化展示等等,另外Crash也可以传递一些GDB命令来执行。在初始化的过程中,

$HOME/.crashrc 文件中的命令和当前目录下的./.crashrc文件中的命令将会被执行。 Crash工具后向兼容,当内核版本变化导致Crash工具更新后后仍然会兼容以前的内核版本。

2、启动命令行

       crash [OPTION]... NAMELIST MEMORY-IMAGE[@ADDRESS]    (用来分析dumpfile文件)

       crash [OPTION]... [NAMELIST]                         (用来分析正在运行的系统)

 

NAMELIST:这个是未压缩的内核镜像文件(vmlinux)的路径,在用来分析dumpfile文件的时候也可以使用gzip或者bzip2压缩后的vmlinux文件。

MEMORY-IMAGE[@ADDRESS]:由netdump, diskdump, LKCD, kdump, xen‐dump 或者 kvmdump 工具产生的crash dump文件的路径,如果运行Crash工具没有输入这个参数的话,那么Crash工具将会用来分析正在运行的linux内核,分析正在运行的内核需要访问系统的RAM,一般是需要root权限的。分析live system的时候,默认情况下/dev/crash将会被使用,如果这个文件不存在,然后会使用/dev/mem,但是如果kernel被配置为CONFIG_STRICT_DEVMEM,那么/proc/kcore将会被使用,也可以显式的指定/dev/crash、/dev/mem 、 /proc/kcore。

分析live system的时候,不指定NAMELIST场景下,crash也会从一些默认目录查找对应的NAMELIST,如果找到的和正在运行的不匹配,没那么会提示如下错误crash: invalid kernel virtual address:

如果dumpfile里面没有描述文件内容的头信息,即原始RAM的dumpfile文件,那么对应块的物理起始地址需要通过@ADDRESS以16进制指定,这将会在/var/tmp目录下创建临时的ELF信息。这种场景下可以通过MEMORY-IMAGE@ADDRESS指定多个dumofile文件。

可以看到如果要用来分析内核的core dump文件,那么必须输入NAMELIST MEMORY-IMAGE这两个参数。而如果用来分析正在运行的linux系统的话,如果内核的vmlinux没有在固定的位置(如/boot),那么NAMELIST参数也需要指定。

3、相关选项

mapfile:当分析正在运行的内核的时候,如果NAMELIST文件与当前正在运行的内核不一致,或者分析dumpfile的时候,NAMELIST与产生dumpfile的内核不一致,那么原始内核的System.map文件需要在命令行指定。

-h [option]/--help [option]:不带有option的时候,展示crash工具的帮助,如果option是carsh工具的命令名字,那么会展示对应的帮助。另外option也可以是"input"、"output"或者"all"。

-s:静默处理到"crash>" ,不会展示版本信息、初始化过程等。

-i file:在展示"crash>"之前,执行file文件中的命令

-d num:设置debug level,数值越高,crash在初始化和运行的时候就会展示越多的信息

-S:使用 /boot/System.map 作为mapfile

-t:展示系统crash的事件戳并推出

 -c tty-device:使用tty-device作为调试信息的控制台

-p page-size:如果处理器的分页大小不能通过dumpfile判断出来,并且不能使用处理器的默认值,那么可以通过这个选项来指定

-o filename:使用MEMORY-IMAGE@ADDRESS形式的原始RAM的dumpfile时候,这个选项可以用来创建一个独立的ELF vmcore,以备将来使用

-x:自动的从一个指定目录加载扩展模块。环境变量CRASH_EXTENSIONS可以用来指定加载目录。

--active:仅跟踪每个cpu上正在运行的task。

--buildinfo:展示crash的build信息

--memory_module modname:使用modname作为crash.ko的替代模块来创建/dev/crash设备。

--memory_device device:使用device代替/dev/crash、/dev/mem或者/proc/kcore。

--smp:指定分析的系统是smp内核

-v:展示crash的版本信息

--cpus number:指定smp系统的cpu数目

--more/--less:指定输出工具

--hex/--dec:指定命令输出的进制

 

4、crash命令

crash命令分为符号展示、系统状态、实用函数和会话控制四部分。可以通过crash -h <command>来查看命令帮助,在crash会话中也可以通过help command来查看命令的帮助。

alias:创建命令的别名

bt:展示调用堆栈信息,-a选项可以显示所有cpu上的调用堆栈。foreach bt可以显示所有task的调用堆栈

dev:展示字符设备和块设备的分配、I/O端口使用和I/O内存使用情况,这个命令可以用来查看每个设备对应的fops。

dis:反汇编命令。-f可以从函数的开始处开始展示汇编命令到指定的地址,-f可以从指定地址展示到函数的结尾。-l可以展示源代码行。-s可以显示对应的源代码,count可以指定显示的行数。

eval:计算表达式并展示结果。

q/exit:退出crash

foreach:为指定的task重复一个指定的命令。

ipcs:展示System V IPC信息

irq:展示irq信息

kmem:展示内核内存使用

list:展示一个链表的内容

log:展示log_buf内容

mod:展示模块信息,mod -s tcp_debug [pathtofile],命令可以用来加载tcp_debug模块的调试信息。mod -d可以用来删除模块的调试信息

mount:展示当前挂载的文件系统的命令

net:展示网络相关的信息

p:传递参数给gdb的print命令来展示相关信息。

gdb:传递参数给内嵌的GDB模块,当crash和gdb命令名字冲突的时候可以使用。

ps:展示进程状态

rd:读取并展示内存

repeat:无限重复一个命令,可以给定一个命令执行的间隔

runq:展示runq上的task

search:在一段内存范围内搜索给定值

set:设置或者获取上下文。可以根据pid、task_struct等来进行设置。

sig:展示task的signal-handling数据

struct:展示结构体的定义,或者从指定的地址开始解析一个结构体。使用-o参数可以显示结构体的详细偏移信息。

swap:展示swap信息

sys:展示系统信息

task:展示task_struct内容

tree:展示rb树或者radix树的信息

timer:展示定时器信息。

union:与struct类似,但是用于union的展示

whatis:展示结构体、联合体等定义

waitq:展示等待队列的内容

wr:修改一个正在运行的系统的内存,只有使用/dev/mem的时候才能修改。

 

  1. root@Inspiron:/home/lybxin# crash /doc/ubuntu-compile/vmlinux /var/crash/201610291840/dump.201610291840
  2. crash 7.1.4
  3. Copyright(C)2002-2015  RedHat,Inc.
  4. Copyright(C)2004,2005,2006,2010  IBM Corporation
  5. Copyright(C)1999-2006  Hewlett-PackardCo
  6. Copyright(C)2005,2006,2011,2012  FujitsuLimited
  7. Copyright(C)2006,2007  VA LinuxSystemsJapan K.K.
  8. Copyright(C)2005,2011  NEC Corporation
  9. Copyright(C)1999,2002,2007  SiliconGraphics,Inc.
  10. Copyright(C)1999,2000,2001,2002  MissionCriticalLinux,Inc.
  11. This program is free software, covered by the GNU GeneralPublicLicense,
  12. and you are welcome to change it and/or distribute copies of it under
  13. certain conditions.  Enter"help copying" to see the conditions.
  14. This program has absolutely no warranty.  Enter"help warranty"for details.
  15. GNU gdb (GDB)7.6
  16. Copyright(C)2013FreeSoftwareFoundation,Inc.
  17. LicenseGPLv3+: GNU GPL version 3 or later <http://gnu.org/licenses/gpl.html>
  18. This is free software: you are free to change and redistribute it.
  19. There is NO WARRANTY, to the extent permitted by law.  Type"show copying"
  20. and "show warranty"for details.
  21. This GDB was configured as "x86_64-unknown-linux-gnu"...
  22.      KERNEL:/doc/ubuntu-compile/vmlinux      
  23.    DUMPFILE:/var/crash/201610291840/dump.201610291840  [PARTIAL DUMP]
  24.        CPUS:4
  25.        DATE:SatOct2918:40:252016
  26.      UPTIME:01:21:59
  27. LOAD AVERAGE:0.39,0.50,0.50
  28.       TASKS:643
  29.    NODENAME:Inspiron
  30.     RELEASE:4.4.13+
  31.     VERSION:#35 SMP Fri Oct 28 23:13:30 CST 2016
  32.     MACHINE: x86_64  (2526Mhz)
  33.      MEMORY:3.9 GB
  34.       PANIC:"general protection fault: 0000 [#1] SMP "
  35.         PID:5792
  36.     COMMAND:"server.out"
  37.        TASK: ffff880013531900  [THREAD_INFO: ffff8800121ac000]
  38.         CPU:3
  39.       STATE:  (PANIC)
  40. crash> bt
  41. PID:5792   TASK: ffff880013531900  CPU:3   COMMAND:"server.out"
  42. #0 [ffff880137d839b0] machine_kexec at ffffffff8105ae6b
  43. #1 [ffff880137d83a10] crash_kexec at ffffffff8110cb12
  44. #2 [ffff880137d83ae0] oops_end at ffffffff81030c29
  45. #3 [ffff880137d83b08] die at ffffffff810310db
  46. #4 [ffff880137d83b38] do_general_protection at ffffffff8102e5d9
  47. #5 [ffff880137d83b60] general_protection at ffffffff81832118
  48.    [exception RIP: tcp_v4_rcv+2735]
  49.    RIP: ffffffff8178920f  RSP: ffff880137d83c18  RFLAGS:00010282
  50.    RAX:6601a8c0647c770e  RBX: ffff880131d04ae8  RCX:0000000000000006
  51.    RDX:0000000000000000  RSI: ffff880013531900  RDI: ffff880137d8dc78
  52.    RBP: ffff880137d83c98   R8:000000000000000a   R9:0000000000000413
  53.    R10:000000000000c5c0  R11:0000000000000413  R12: ffffffff81ef3e80
  54.    R13: ffff8800ba0e4690  R14: ffff8800b7cde4fc  R15: ffff8800b7cde510
  55.    ORIG_RAX: ffffffffffffffff  CS:0010  SS:0018
  56. #6 [ffff880137d83c10] tcp_v4_rcv at ffffffff817892a9
  57. #7 [ffff880137d83ca0] ip_local_deliver_finish at ffffffff8175fdc4
  58. #8 [ffff880137d83cc8] ip_local_deliver at ffffffff817600cf
  59. #9 [ffff880137d83d30] ip_rcv_finish at ffffffff8175faa2
  60. #10 [ffff880137d83d60] ip_rcv at ffffffff817603d1
  61. #11 [ffff880137d83dd8] __netif_receive_skb_core at ffffffff81721944
  62. #12 [ffff880137d83e70] __netif_receive_skb at ffffffff81721cb8
  63. #13 [ffff880137d83e90] process_backlog at ffffffff81722ab8
  64. -- MORE --  forward:<SPACE>,<ENTER> or j  backward: b or k  quit: q...skipping...
  65. PID:5792   TASK: ffff880013531900  CPU:3   COMMAND:"server.out"
  66. #0 [ffff880137d839b0] machine_kexec at ffffffff8105ae6b
  67. #1 [ffff880137d83a10] crash_kexec at ffffffff8110cb12
  68. #2 [ffff880137d83ae0] oops_end at ffffffff81030c29
  69. #3 [ffff880137d83b08] die at ffffffff810310db
  70. #4 [ffff880137d83b38] do_general_protection at ffffffff8102e5d9
  71. #5 [ffff880137d83b60] general_protection at ffffffff81832118
  72.    [exception RIP: tcp_v4_rcv+2735]
  73.    RIP: ffffffff8178920f  RSP: ffff880137d83c18  RFLAGS:00010282
  74.    RAX:6601a8c0647c770e  RBX: ffff880131d04ae8  RCX:0000000000000006
  75.    RDX:0000000000000000  RSI: ffff880013531900  RDI: ffff880137d8dc78
  76.    RBP: ffff880137d83c98   R8:000000000000000a   R9:0000000000000413
  77.    R10:000000000000c5c0  R11:0000000000000413  R12: ffffffff81ef3e80
  78.    R13: ffff8800ba0e4690  R14: ffff8800b7cde4fc  R15: ffff8800b7cde510
  79.    ORIG_RAX: ffffffffffffffff  CS:0010  SS:0018
  80. #6 [ffff880137d83c10] tcp_v4_rcv at ffffffff817892a9
  81. #7 [ffff880137d83ca0] ip_local_deliver_finish at ffffffff8175fdc4
  82. #8 [ffff880137d83cc8] ip_local_deliver at ffffffff817600cf
  83. #9 [ffff880137d83d30] ip_rcv_finish at ffffffff8175faa2
  84. #10 [ffff880137d83d60] ip_rcv at ffffffff817603d1
  85. #11 [ffff880137d83dd8] __netif_receive_skb_core at ffffffff81721944
  86. #12 [ffff880137d83e70] __netif_receive_skb at ffffffff81721cb8
  87. #13 [ffff880137d83e90] process_backlog at ffffffff81722ab8
  88. #14 [ffff880137d83ed0] net_rx_action at ffffffff817221fe
  89. -- MORE --  forward:<SPACE>,<ENTER> or j  backward: b or k  quit: q...skipping...
  90. PID:5792   TASK: ffff880013531900  CPU:3   COMMAND:"server.out"
  91. #0 [ffff880137d839b0] machine_kexec at ffffffff8105ae6b
  92. #1 [ffff880137d83a10] crash_kexec at ffffffff8110cb12
  93. #2 [ffff880137d83ae0] oops_end at ffffffff81030c29
  94. #3 [ffff880137d83b08] die at ffffffff810310db
  95. #4 [ffff880137d83b38] do_general_protection at ffffffff8102e5d9
  96. #5 [ffff880137d83b60] general_protection at ffffffff81832118
  97.    [exception RIP: tcp_v4_rcv+2735]
  98.    RIP: ffffffff8178920f  RSP: ffff880137d83c18  RFLAGS:00010282
  99.    RAX:6601a8c0647c770e  RBX: ffff880131d04ae8  RCX:0000000000000006
  100.    RDX:0000000000000000  RSI: ffff880013531900  RDI: ffff880137d8dc78
  101.    RBP: ffff880137d83c98   R8:000000000000000a   R9:0000000000000413
  102.    R10:000000000000c5c0  R11:0000000000000413  R12: ffffffff81ef3e80
  103.    R13: ffff8800ba0e4690  R14: ffff8800b7cde4fc  R15: ffff8800b7cde510
  104.    ORIG_RAX: ffffffffffffffff  CS:0010  SS:0018
  105. #6 [ffff880137d83c10] tcp_v4_rcv at ffffffff817892a9
  106. #7 [ffff880137d83ca0] ip_local_deliver_finish at ffffffff8175fdc4
  107. #8 [ffff880137d83cc8] ip_local_deliver at ffffffff817600cf
  108. #9 [ffff880137d83d30] ip_rcv_finish at ffffffff8175faa2
  109. #10 [ffff880137d83d60] ip_rcv at ffffffff817603d1
  110. #11 [ffff880137d83dd8] __netif_receive_skb_core at ffffffff81721944
  111. #12 [ffff880137d83e70] __netif_receive_skb at ffffffff81721cb8
  112. #13 [ffff880137d83e90] process_backlog at ffffffff81722ab8
  113. #14 [ffff880137d83ed0] net_rx_action at ffffffff817221fe
  114. #15 [ffff880137d83f48] __do_softirq at ffffffff81084a41
  115. -- MORE --  forward:<SPACE>,<ENTER> or j  backward: b or k  quit: q...skipping...
  116. PID:5792   TASK: ffff880013531900  CPU:3   COMMAND:"server.out"
  117. #0 [ffff880137d839b0] machine_kexec at ffffffff8105ae6b
  118. #1 [ffff880137d83a10] crash_kexec at ffffffff8110cb12
  119. #2 [ffff880137d83ae0] oops_end at ffffffff81030c29
  120. #3 [ffff880137d83b08] die at ffffffff810310db
  121. #4 [ffff880137d83b38] do_general_protection at ffffffff8102e5d9
  122. #5 [ffff880137d83b60] general_protection at ffffffff81832118
  123.    [exception RIP: tcp_v4_rcv+2735]
  124.    RIP: ffffffff8178920f  RSP: ffff880137d83c18  RFLAGS:00010282
  125.    RAX:6601a8c0647c770e  RBX: ffff880131d04ae8  RCX:0000000000000006
  126.    RDX:0000000000000000  RSI: ffff880013531900  RDI: ffff880137d8dc78
  127.    RBP: ffff880137d83c98   R8:000000000000000a   R9:0000000000000413
  128.    R10:000000000000c5c0  R11:0000000000000413  R12: ffffffff81ef3e80
  129.    R13: ffff8800ba0e4690  R14: ffff8800b7cde4fc  R15: ffff8800b7cde510
  130.    ORIG_RAX: ffffffffffffffff  CS:0010  SS:0018
  131. #6 [ffff880137d83c10] tcp_v4_rcv at ffffffff817892a9
  132. #7 [ffff880137d83ca0] ip_local_deliver_finish at ffffffff8175fdc4
  133. #8 [ffff880137d83cc8] ip_local_deliver at ffffffff817600cf
  134. #9 [ffff880137d83d30] ip_rcv_finish at ffffffff8175faa2
  135. #10 [ffff880137d83d60] ip_rcv at ffffffff817603d1
  136. #11 [ffff880137d83dd8] __netif_receive_skb_core at ffffffff81721944
  137. #12 [ffff880137d83e70] __netif_receive_skb at ffffffff81721cb8
  138. #13 [ffff880137d83e90] process_backlog at ffffffff81722ab8
  139. #14 [ffff880137d83ed0] net_rx_action at ffffffff817221fe
  140. #15 [ffff880137d83f48] __do_softirq at ffffffff81084a41
  141. #16 [ffff880137d83fb0] do_softirq_own_stack at ffffffff81831d0c
  142. -- MORE --  forward:<SPACE>,<ENTER> or j  backward: b or k  quit: q...skipping...
  143. PID:5792   TASK: ffff880013531900  CPU:3   COMMAND:"server.out"
  144. #0 [ffff880137d839b0] machine_kexec at ffffffff8105ae6b
  145. #1 [ffff880137d83a10] crash_kexec at ffffffff8110cb12
  146. #2 [ffff880137d83ae0] oops_end at ffffffff81030c29
  147. #3 [ffff880137d83b08] die at ffffffff810310db
  148. #4 [ffff880137d83b38] do_general_protection at ffffffff8102e5d9
  149. #5 [ffff880137d83b60] general_protection at ffffffff81832118
  150.    [exception RIP: tcp_v4_rcv+2735]
  151.    RIP: ffffffff8178920f  RSP: ffff880137d83c18  RFLAGS:00010282
  152.    RAX:6601a8c0647c770e  RBX: ffff880131d04ae8  RCX:0000000000000006
  153.    RDX:0000000000000000  RSI: ffff880013531900  RDI: ffff880137d8dc78
  154.    RBP: ffff880137d83c98   R8:000000000000000a   R9:0000000000000413
  155.    R10:000000000000c5c0  R11:0000000000000413  R12: ffffffff81ef3e80
  156.    R13: ffff8800ba0e4690  R14: ffff8800b7cde4fc  R15: ffff8800b7cde510
  157.    ORIG_RAX: ffffffffffffffff  CS:0010  SS:0018
  158. #6 [ffff880137d83c10] tcp_v4_rcv at ffffffff817892a9
  159. #7 [ffff880137d83ca0] ip_local_deliver_finish at ffffffff8175fdc4
  160. #8 [ffff880137d83cc8] ip_local_deliver at ffffffff817600cf
  161. #9 [ffff880137d83d30] ip_rcv_finish at ffffffff8175faa2
  162. #10 [ffff880137d83d60] ip_rcv at ffffffff817603d1
  163. #11 [ffff880137d83dd8] __netif_receive_skb_core at ffffffff81721944
  164. #12 [ffff880137d83e70] __netif_receive_skb at ffffffff81721cb8
  165. #13 [ffff880137d83e90] process_backlog at ffffffff81722ab8
  166. #14 [ffff880137d83ed0] net_rx_action at ffffffff817221fe
  167. #15 [ffff880137d83f48] __do_softirq at ffffffff81084a41
  168. #16 [ffff880137d83fb0] do_softirq_own_stack at ffffffff81831d0c
  169. ---<IRQ stack>---
  170. -- MORE --  forward:<SPACE>,<ENTER> or j  backward: b or k  quit: q...skipping...
  171. PID:5792   TASK: ffff880013531900  CPU:3   COMMAND:"server.out"
  172. #0 [ffff880137d839b0] machine_kexec at ffffffff8105ae6b
  173. #1 [ffff880137d83a10] crash_kexec at ffffffff8110cb12
  174. #2 [ffff880137d83ae0] oops_end at ffffffff81030c29
  175. #3 [ffff880137d83b08] die at ffffffff810310db
  176. #4 [ffff880137d83b38] do_general_protection at ffffffff8102e5d9
  177. #5 [ffff880137d83b60] general_protection at ffffffff81832118
  178.    [exception RIP: tcp_v4_rcv+2735]
  179.    RIP: ffffffff8178920f  RSP: ffff880137d83c18  RFLAGS:00010282
  180.    RAX:6601a8c0647c770e  RBX: ffff880131d04ae8  RCX:0000000000000006
  181.    RDX:0000000000000000  RSI: ffff880013531900  RDI: ffff880137d8dc78
  182.    RBP: ffff880137d83c98   R8:000000000000000a   R9:0000000000000413
  183.    R10:000000000000c5c0  R11:0000000000000413  R12: ffffffff81ef3e80
  184.    R13: ffff8800ba0e4690  R14: ffff8800b7cde4fc  R15: ffff8800b7cde510
  185.    ORIG_RAX: ffffffffffffffff  CS:0010  SS:0018
  186. #6 [ffff880137d83c10] tcp_v4_rcv at ffffffff817892a9
  187. #7 [ffff880137d83ca0] ip_local_deliver_finish at ffffffff8175fdc4
  188. #8 [ffff880137d83cc8] ip_local_deliver at ffffffff817600cf
  189. #9 [ffff880137d83d30] ip_rcv_finish at ffffffff8175faa2
  190. #10 [ffff880137d83d60] ip_rcv at ffffffff817603d1
  191. #11 [ffff880137d83dd8] __netif_receive_skb_core at ffffffff81721944
  192. #12 [ffff880137d83e70] __netif_receive_skb at ffffffff81721cb8
  193. #13 [ffff880137d83e90] process_backlog at ffffffff81722ab8
  194. #14 [ffff880137d83ed0] net_rx_action at ffffffff817221fe
  195. #15 [ffff880137d83f48] __do_softirq at ffffffff81084a41
  196. #16 [ffff880137d83fb0] do_softirq_own_stack at ffffffff81831d0c
  197. ---<IRQ stack>---
  198. #17 [ffff8800121af888] do_softirq_own_stack at ffffffff81831d0c
  199. -- MORE --  forward:<SPACE>,<ENTER> or j  backward: b or k  quit: q...skipping...
  200. PID:5792   TASK: ffff880013531900  CPU:3   COMMAND:"server.out"
  201. #0 [ffff880137d839b0] machine_kexec at ffffffff8105ae6b
  202. #1 [ffff880137d83a10] crash_kexec at ffffffff8110cb12
  203. #2 [ffff880137d83ae0] oops_end at ffffffff81030c29
  204. #3 [ffff880137d83b08] die at ffffffff810310db
  205. #4 [ffff880137d83b38] do_general_protection at ffffffff8102e5d9
  206. #5 [ffff880137d83b60] general_protection at ffffffff81832118
  207.    [exception RIP: tcp_v4_rcv+2735]
  208.    RIP: ffffffff8178920f  RSP: ffff880137d83c18  RFLAGS:00010282
  209.    RAX:6601a8c0647c770e  RBX: ffff880131d04ae8  RCX:0000000000000006
  210.    RDX:0000000000000000  RSI: ffff880013531900  RDI: ffff880137d8dc78
  211.    RBP: ffff880137d83c98   R8:000000000000000a   R9:0000000000000413
  212.    R10:000000000000c5c0  R11:0000000000000413  R12: ffffffff81ef3e80
  213.    R13: ffff8800ba0e4690  R14: ffff8800b7cde4fc  R15: ffff8800b7cde510
  214.    ORIG_RAX: ffffffffffffffff  CS:0010  SS:0018
  215. #6 [ffff880137d83c10] tcp_v4_rcv at ffffffff817892a9
  216. #7 [ffff880137d83ca0] ip_local_deliver_finish at ffffffff8175fdc4
  217. #8 [ffff880137d83cc8] ip_local_deliver at ffffffff817600cf
  218. #9 [ffff880137d83d30] ip_rcv_finish at ffffffff8175faa2
  219. #10 [ffff880137d83d60] ip_rcv at ffffffff817603d1
  220. #11 [ffff880137d83dd8] __netif_receive_skb_core at ffffffff81721944
  221. #12 [ffff880137d83e70] __netif_receive_skb at ffffffff81721cb8
  222. #13 [ffff880137d83e90] process_backlog at ffffffff81722ab8
  223. #14 [ffff880137d83ed0] net_rx_action at ffffffff817221fe
  224. #15 [ffff880137d83f48] __do_softirq at ffffffff81084a41
  225. #16 [ffff880137d83fb0] do_softirq_own_stack at ffffffff81831d0c
  226. ---<IRQ stack>---
  227. #17 [ffff8800121af888] do_softirq_own_stack at ffffffff81831d0c
  228.    [exception RIP: unknown or invalid address]
  229.    RIP:0000000088c26cce  RSP: ffffffff81ef3e80  RFLAGS: ffff880131d04ae8
  230.    RAX:0000000000000000  RBX: ffff8800121af8c8  RCX: ffff8800121af940
  231.    RDX: ffffffff81764479  RSI:0202020000000001  RDI:0000000000000246
  232.    RBP: ffff880132960e00   R8: ffffffff8108450d   R9: ffff8800121af8e0
  233.    R10:00000000fffffe01  R11: ffffffff81084488  R12:0000000088c26cce
  234.    R13:0000000000000001  R14: ffffffff811ad08c  R15: ffffffff81724156
  235.    ORIG_RAX:0100007f00000000  CS:2000200  SS: ffff8800b81b2d00
  236. bt: WARNING: possibly bogus exception frame
  237. #18 [ffff8800121af948] ip_finish_output at ffffffff81765406
  238. #19 [ffff8800121af988] ip_output at ffffffff81765dfe
  239. #20 [ffff8800121af9f8] ip_local_out at ffffffff817655c5
  240. #21 [ffff8800121afa20] ip_queue_xmit at ffffffff817658e4
  241. #22 [ffff8800121afa60] tcp_transmit_skb at ffffffff8177f25f
  242. #23 [ffff8800121afaf8] tcp_write_xmit at ffffffff8177f925
  243. #24 [ffff8800121afb78] __tcp_push_pending_frames at ffffffff81780c43
  244. #25 [ffff8800121afba0] tcp_send_fin at ffffffff817827c8
  245. #26 [ffff8800121afbd0] tcp_close at ffffffff817729e2
  246. #27 [ffff8800121afc00] inet_release at ffffffff8179de0c
  247. #28 [ffff8800121afc20] sock_release at ffffffff8170399f
  248. #29 [ffff8800121afc40] sock_close at ffffffff81703a12
  249. #30 [ffff8800121afc50] __fput at ffffffff8120da14
  250. #31 [ffff8800121afc98] ____fput at ffffffff8120db8e
  251. #32 [ffff8800121afca8] task_work_run at ffffffff8109da8f
  252. #33 [ffff8800121afcd8] do_exit at ffffffff81082c37
  253. #34 [ffff8800121afd48] do_group_exit at ffffffff810834c3
  254. #35 [ffff8800121afd78] get_signal at ffffffff8108f672
  255. #36 [ffff8800121afdf8] do_signal at ffffffff8102d537
  256. #37 [ffff8800121afef8] exit_to_usermode_loop at ffffffff8100320c
  257. #38 [ffff8800121aff30] syscall_return_slowpath at ffffffff81003c6e
  258. #39 [ffff8800121aff50] int_ret_from_sys_call at ffffffff81830150
  259.    RIP:00007f0aaf3f40fa  RSP:00007f0aaf2ddd40  RFLAGS:00000293
  260.    RAX: fffffffffffffdfc  RBX:0000000000000000  RCX:00007f0aaf3f40fa
  261.    RDX:00007f0aaf2ddd80  RSI:0000000000000000  RDI:0000000000000001
  262.    RBP:00007f0aaf2ddd80   R8:0000000000000000   R9:0000000000000007
  263.    R10:0000000000000000  R11:0000000000000293  R12:0000000000000000
  264.    R13:00007ffeba0f765f  R14:00007f0aaf2de9c0  R15:0000000000000000
  265.    ORIG_RAX:00000000000000e6  CS:0033  SS:002b
  266. crash>
  267. crash> dis -l tcp_v4_rcv+2735
  268. /home/lybxin/MyRes/linux-source-4.4.0/net/ipv4/tcp_ipv4.c:1663
  269. 0xffffffff8178920f<tcp_v4_rcv+2735>:   mov    0x5d0(%rax),%rdi

 

 

 

 

 

 

 

 

 

 

 

 





转载于:https://www.cnblogs.com/lshs/p/6113077.html

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: 《Python Crash Course 第二版》是一本非常受欢迎的Python编程指南。本书的作者是Eric Matthes,他以简明易懂的方式向读者介绍了Python编程的基础知识和高级应用技巧。 这本书适合初学者,因为它从最基础的概念开始,循序渐进地引导读者进入编程的世界。第一部分介绍了Python的基础语法和数据类型,包括变量、列表、字典、条件语句和循环等。读者可以学习如何编写简单的程序,并通过练习巩固所学知识。 接下来,本书介绍了函数、文件和异常处理等更高级的主题。读者将学会如何定义和使用函数,如何读写文件,以及如何处理可能出现的错误和异常情况。这些知识对于编写更复杂的程序非常重要。 第三部分是本书的亮点,它介绍了如何使用Python开发Web应用程序和数据可视化工具。读者将学习使用Django框架创建动态网站,并使用Matplotlib库绘制图表和图形。这些内容对于希望进一步深入学习Python的读者来说非常有价值。 此外,本书还包含了一些项目,读者可以根据自己的兴趣选择并完成这些项目。这样可以巩固所学知识,并将其应用于实际问题解决中。 总之,《Python Crash Course 第二版》是一本适合初学者的Python编程指南。它通过简单明了的语言和实用的示例,帮助读者掌握Python编程的基础知识和高级应用技巧,从而能够应对各种编程任务和挑战。无论你是编程新手还是有经验的开发者,这本书都值得一读。 ### 回答2: 《Python Crash Course》(第二版)是一本面向初学者的Python编程入门教材。本书的作者是Eric Matthes,通过简洁明了的风格和实用的示例,帮助读者从零基础开始学习Python编程。 《Python Crash Course》第二版主要分为两个部分。第一部分涵盖了基本的Python语法、数据类型、流程控制、函数、类等基础知识。通过易懂的解释和大量的练习,读者可以逐步掌握Python的基本概念和语法规则。 第二部分则着重于实际项目的开发。这一部分包含了使用Python开发游戏、Web应用程序和数据可视化的实践项目。通过这些项目的实战,读者可以实际应用所学的Python知识,并且深入了解Python在不同领域的应用。 《Python Crash Course》第二版的优点在于编排紧凑,内容实用,并且提供了大量的练习题和项目实践。读者可以通过这些练习和项目加深对Python编程的理解和掌握。 总的来说,《Python Crash Course》第二版适合那些希望迅速入门Python编程的初学者。无论是作为自学教材还是教学辅助资料,都能够帮助读者建立起扎实的Python编程基础。 ### 回答3: 《Python Crash Course》第二版是一本非常受欢迎的Python编程入门教材。它由Eric Matthes编写,旨在向初学者介绍Python编程的基础知识和技巧。 这本书分为两个部分。第一部分主要介绍Python编程的基础知识。它从Python的安装开始,逐步介绍了Python的基本语法、变量、数据类型、条件语句、循环语句等基本概念和使用方法。这些章节通过简洁明了的解释和大量的实例演示帮助读者快速上手Python编程。 第二部分则重点介绍了Python编程的实际应用。它包含了许多有趣的项目,如数据可视化、Web应用开发、游戏开发等。通过这些项目,读者可以学习如何使用Python来解决实际问题,并掌握相应的编程技巧和方法。此外,书中还提供了大量的练习题和实践项目,读者可以通过实际动手操作来巩固所学的知识。 《Python Crash Course》第二版的特点之一是其简单易懂的讲解风格和精心设计的项目示例。作者通过深入浅出的方式,以生动和有趣的语言来解释复杂的概念和技术,使读者能够轻松理解。此外,书中还提供了丰富的示例代码和注释,供读者参考和借鉴。 总的来说,《Python Crash Course》第二版是一本非常适合初学者的Python编程教材。无论你是否有编程经验,都可以通过这本书系统地学习Python的基础知识和实际应用,并逐渐掌握Python编程的技能。如果你对Python编程感兴趣,这本书绝对值得一读。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值