crash常用命令讲解

Linux Crash分析入门(三):crash命令 可以看到汇编指令,通过offset可以找到具体地址对应的具体指令。crash就出现在该指令上。里提到,用crash工具分析kdump生成的dump.xxx文件的命令是。获取到某个函数的某个offset位置,但无法获取这个位置是哪条指令。命令查看非linux内核的结构体,例如我的私有驱动。的.s,可以找到具体是哪条指令导致crash。bt -c 6:查看 CPU 6 上的调用栈。查看系统崩溃之前的kernel日志,与。命令功能强大,边用边查,在此不举例。可以查看bt命令相关的用法。可以查看func函数的。 阅读详情
AI摘要

本文介绍了crash工具,RedHat开源的内核分析工具,用于解析内核dump文件,演示了log、ps、bt、runq、task等常用命令及其功能,帮助开发者快速定位和分析内核稳定性问题。

背景

        crash工具是redhat公司的提供的一个开源的内核分析工具,它是在gdb的基础上实现了解析内核的功能,比如查看各个线程的内核栈、各任务的状态、内存的使用情况、中断的统计计数等等,我们可以根据当前内核里的数据来分析一些偶现的稳定性问题。这篇文章我们讲解一些常用的crash命令,让大家能快速上手。

运行crash

        在项目中crash常用于分析内核的dump文件,用qemu来生成内核dump文件并用crash工具解析的详细步骤请参考 通过qemu和crash分析崩溃内核 这篇文章。crash运行起来后的日志如下:

max@ubuntu2204:~$ ./crash-8.0.4/crash dump.img linux-stable/build/vmlinux --machdep vabits_actual=48 
crash 8.0.4
Copyright (C) 2002-2022  Red Hat, Inc.
……
……
      KERNEL: linux-stable/build/vmlinux
    DUMPFILE: dump.img
        CPUS: 8
        DATE: Sun Jan 21 23:02:14 CST 2024
      UPTIME: 00:02:57
LOAD AVERAGE: 0.76, 0.25, 0.09
       TASKS: 98
    NODENAME: (none)
     RELEASE: 6.7.0
     VERSION: #8 SMP PREEMPT Sun Jan 21 22:29:54 CST 2024
     MACHINE: aarch64  (unknown Mhz)
      MEMORY: 2 GB
       PANIC: ""
         PID: 0
     COMMAND: "swapper/0"
        TASK: ffff8000824d3ec0  (1 of 8)  [THREAD_INFO: ffff8000824d3ec0]
         CPU: 0
       STATE: TASK_RUNNING (ACTIVE)
     WARNING: panic task not found
crash> 
crash>

如上所示,crash运行起来后会打印出crash的版本信息和dump文件中的内核的相关信息,同时显示“crash>”提示符,这表示crash初步解析dump文件成功了。下面我们继续演示如何通过crash命令查看内核里的数据。

crash常用命令

log命令

log命令可以查看内核ringbuffer中的全部日志,如下:

crash> log
[    0.000000] Booting Linux on physical CPU 0x0000000000 [0x411fd070]
[    0.000000] Linux version 6.7.0 (max@ubuntu2204) (aarch64-linux-gnu-gcc (Linaro GCC 7.5-2019.12) 7.5.0, GNU ld (Linaro_Binutils-2019.12) 2.28.2.20170706) #8 SMP PREEMPT Sun Jan 21 22:29:54 CST 2024
[    0.000000] KASLR disabled on command line
[    0.000000] random: crng init done
[    0.000000] Machine model: linux,dummy-virt
[    0.000000] efi: UEFI not found.
[    0.000000] NUMA: No NUMA configuration found
……
……
crash>

ps命令

ps命令可以查看当前内核中都有哪些任务,该命令会打印出各个任务的pid、ppid、任务状态、该任务对应的task_struct的虚拟地址、任务名称等等,如下:

crash> ps
      PID    PPID  CPU       TASK        ST  %MEM      VSZ      RSS  COMM
>       0       0   0  ffff8000824d3ec0  RU   0.0        0        0  [swapper/0]
>       0       0   1  ffff000002d68ec0  RU   0.0        0        0  [swapper/1]
>       0       0   2  ffff000002d69d80  RU   0.0        0        0  [swapper/2]
>       0       0   3  ffff000002d6ac40  RU   0.0        0        0  [swapper/3]
>       0       0   4  ffff000002d6bb00  RU   0.0        0        0  [swapper/4]
>       0       0   5  ffff000002d6c9c0  RU   0.0        0        0  [swapper/5]
>       0       0   6  ffff000002d6d880  RU   0.0        0        0  [swapper/6]
        0       0   7  ffff000002d6e740  RU   0.0        0        0  [swapper/7]
        1       0   2  ffff000002cf8000  IN   0.0     2276     1228  linuxrc
        2       0   3  ffff000002cf8ec0  IN   0.0        0        0  [kthreadd]
        3       2   0  ffff000002cf9d80  IN   0.0        0        0  [pool_workqueue_]
        4       2   0  ffff000002cfac40  ID   0.0        0        0  

其中左侧有” > ”箭头标注的任务就是当前各个cpu上正在运行的任务。

bt命令

bt命令是查看内核中某些任务的内核栈,比如bt -a是查看当前各个cpu上正在运行的任务的内核栈,如下:

crash> bt -a
PID: 0        TASK: ffff8000824d3ec0  CPU: 0    COMMAND: "swapper/0"
 #0 [ffff8000824c3d40] cpu_do_idle at ffff8000810a2a24
 #1 [ffff8000824c3d50] default_idle_call at ffff8000810a2b9c
 #2 [ffff8000824c3d70] do_idle at ffff8000800d6094
 #3 [ffff8000824c3de0] cpu_startup_entry at ffff8000800d6338
 #4 [ffff8000824c3e00] rest_init at ffff8000810a2e84
 #5 [ffff8000824c3e20] arch_call_rest_init at ffff800081b9096c
 #6 [ffff8000824c3e30] start_kernel at ffff800081b90ecc
……
……

当前系统中有8个cpu,所以bt -a命令会依次打出8个cpu上运行的任务的内核栈。同时也可以通过指定某个任务的pid或task_struct来打印该任务的内核栈,比如查看pid为17的任务的内核栈,如下:

crash> bt 17
PID: 17       TASK: ffff000002d68000  CPU: 0    COMMAND: "migration/0"
 #0 [ffff800082a93d60] __switch_to at ffff8000810a80d4
 #1 [ffff800082a93d80] __schedule at ffff8000810a8418
 #2 [ffff800082a93e10] schedule at ffff8000810a8a2c
 #3 [ffff800082a93e30] smpboot_thread_fn at ffff8000800b8898
 #4 [ffff800082a93e70] kthread at ffff8000800b29ac
crash>

比如查看task_struct的虚拟地址为ffff000002d53b00的任务的内核栈,如下:

crash> bt ffff000002d53b00
PID: 13       TASK: ffff000002d53b00  CPU: 0    COMMAND: "rcu_tasks_kthre"
 #0 [ffff800082a73ca0] __switch_to at ffff8000810a80d4
 #1 [ffff800082a73cc0] __schedule at ffff8000810a8418
 #2 [ffff800082a73d50] schedule at ffff8000810a8a2c
 #3 [ffff800082a73d70] rcu_tasks_one_gp at ffff800080109b00
 #4 [ffff800082a73e20] rcu_tasks_kthread at ffff800080109f28
 #5 [ffff800082a73e70] kthread at ffff8000800b29ac
crash>

runq命令

runq命令可以查看当前各个cpu对应的rq上都有哪些就绪任务,该命令会分别打印出rq上的rt和cfs的就绪队列上的任务,如下:

crash> runq
CPU 0 RUNQUEUE: ffff00007fb33000
  CURRENT: PID: 0      TASK: ffff8000824d3ec0  COMMAND: "swapper/0"
  RT PRIO_ARRAY: ffff00007fb33200
     [no tasks queued]
  CFS RB_ROOT: ffff00007fb330c0
     [no tasks queued]
……
……
CPU 7 RUNQUEUE: ffff00007fbcd000
  CURRENT: PID: 100    TASK: ffff000008268000  COMMAND: "dd"
  RT PRIO_ARRAY: ffff00007fbcd200
     [no tasks queued]
  CFS RB_ROOT: ffff00007fbcd0c0
     [no tasks queued]
crash>

task 命令

task命令可以查看某个任务对应的task_stuct实例里的各个成员的值,比如查看pid为3的任务,如下:

crash> task 3
PID: 3        TASK: ffff000002cf9d80  CPU: 0    COMMAND: "pool_workqueue_"
struct task_struct {
  thread_info = {
    flags = 8,
    {
      preempt_count = 4294967298,
      preempt = {
        count = 2,
        need_resched = 1
      }
    },
    cpu = 0
  },
  __state = 1,
  saved_state = 0,
  stack = 0xffff800082a20000,
  usage = {
……
……

也可以根据某个task_struct实例的虚拟地址查看该实例里的各个成员的值,如下:

crash> task ffff000002cf9d80
PID: 3        TASK: ffff000002cf9d80  CPU: 0    COMMAND: "pool_workqueue_"
struct task_struct {
  thread_info = {
    flags = 8,
    {
      preempt_count = 4294967298,
      preempt = {
        count = 2,
        need_resched = 1
      }
    },
    cpu = 0
  },
  __state = 1,
  saved_state = 0,
  stack = 0xffff800082a20000,
……
……

p 命令

p命令可以打印出某个变量的值,也可以打印出某个结构体实例中的各成员的值,如下:

crash> p linux_banner
linux_banner = $2 = 0xffff800081620c30 <linux_banner> "Linux version 6.7.0 (max@ubuntu2204) (aarch64-linux-gnu-gcc (Linaro GCC 7.5-2019.12) 7.5.0, GNU ld (Linaro_Binutils-2019.12) 2.28.2.20170706) #8 SMP PREEMPT Sun Jan 21 22:29:54 CST 2024\n"
crash>

比如打印出 init_mm 这个实例里各个成员的值,如下:

crash> p init_mm
init_mm = $3 = {
  {
    {
      mm_count = {
        counter = 1
      }
    },
    mm_mt = {
      {
        ma_lock = {
          {
            rlock = {
              raw_lock = {
……
……

sym命令

sym命令用于处理符号相关的操作,比如把某个符号转换成对应的虚拟地址,假如我们要找到linux_banner字符数组的起始虚拟地址, 对应的命令如下:

crash> sym linux_banner
ffff800081620c30 (D) linux_banner
crash>

rd 命令

rd命令可以读取指定虚拟地址或物理地址的数据,比如读取起始地址为ffff800081620c30,长度为 128 的这段内存的数据,如下:

crash> rd ffff800081620c30 128
ffff800081620c30:  65762078756e694c 2e36206e6f697372   Linux version 6.
ffff800081620c40:  78616d2820302e37 3275746e75627540   7.0 (max@ubuntu2
ffff800081620c50:  6161282029343032 696c2d3436686372   204) (aarch64-li
ffff800081620c60:  2d756e672d78756e 6e694c2820636367   nux-gnu-gcc (Lin
ffff800081620c70:  20434347206f7261 393130322d352e37   aro GCC 7.5-2019
ffff800081620c80:  352e37202932312e 20554e47202c302e   .12) 7.5.0, GNU 
ffff800081620c90:  616e694c2820646c 74756e69425f6f72   ld (Linaro_Binut
ffff800081620ca0:  393130322d736c69 322e32202932312e   ils-2019.12) 2.2
ffff800081620cb0:  373130322e322e38 3823202936303730   8.2.20170706) #8
ffff800081620cc0:  45525020504d5320 6e75532054504d45    SMP PREEMPT Sun
ffff800081620cd0:  203132206e614a20 34353a39323a3232    Jan 21 22:29:54
ffff800081620ce0:  3230322054534320 0000000000000a34    CST 2024.......

同时我们也可以通过-r参数把这段内存里的数据单独保存到指定文件,如下:

crash> rd ffff800081620c30 128 -r test.dat
128 bytes copied from 0xffff800081620c30 to test.dat
crash>

vtop 命令

vtop命令是把虚拟地址转换成对应的物理地址,比如把虚拟地址ffff800081620c30转成对应的物理地址,如下:

crash> vtop ffff800081620c30
VIRTUAL           PHYSICAL        
ffff800081620c30  41820c30        

PAGE DIRECTORY: ffff800081b86000
   PGD: ffff800081b86800 => 10000000bffff003
   PUD: ffff00007ffff010 => 10000000bfffe003
   PMD: ffff00007fffe058 => 60000041800781
  PAGE: 41800000  (2MB)

     PTE        PHYSICAL  FLAGS
60000041800781  41800000  (VALID|RDONLY|SHARED|AF|PXN|UXN)

      PAGE       PHYSICAL      MAPPING       INDEX CNT FLAGS
fffffc0000060800 41820000                0        0  1 3fffc0000004000 reserved
crash>

其中PHYSICAL的值就是对应的物理地址。

pte 命令

pte命令可以把一个页表项里的值转换为对应的物理地址,如下:

crash> pte 18000000bfff7003
      PTE         PHYSICAL  FLAGS
18000000bfff7003  bfff7000  (VALID)
crash>

kmem 命令

kmem命令可以查看内存的相关信息,比如查看当前内存的使用情况,如下:

crash> kmem -i
                 PAGES        TOTAL      PERCENTAGE
    TOTAL MEM   505032       1.9 GB         ----
         FREE   486466       1.9 GB   96% of TOTAL MEM
         USED    18566      72.5 MB    3% of TOTAL MEM
       SHARED      408       1.6 MB    0% of TOTAL MEM
      BUFFERS       59       236 KB    0% of TOTAL MEM
       CACHED      453       1.8 MB    0% of TOTAL MEM
         SLAB     2707      10.6 MB    0% of TOTAL MEM
   TOTAL HUGE        0            0         ----
    HUGE FREE        0            0    0% of TOTAL HUGE
   TOTAL SWAP        0            0         ----
    SWAP USED        0            0    0% of TOTAL SWAP
    SWAP FREE        0            0    0% of TOTAL SWAP
 COMMIT LIMIT   252516     986.4 MB         ----
    COMMITTED        0            0    0% of TOTAL LIMIT
crash> 

struct命令

struct命令实现了结构体操作相关的功能,比如可以查看某个结构体内的各成员的偏移,以及该结构体总的大小,如下:

crash> struct -o tasklet_struct
struct tasklet_struct {
   [0] struct tasklet_struct *next;
   [8] unsigned long state;
  [16] atomic_t count;
  [20] bool use_callback;
       union {
  [24]     void (*func)(unsigned long);
  [24]     void (*callback)(struct tasklet_struct *);
       };
  [32] unsigned long data;
}
SIZE: 40
crash>

也可以按照指定结构体来解析指定的内存,比如:

crash> struct tasklet_head ffff00007fb2aa98
struct tasklet_head {
  head = 0x0,
  tail = 0xffff00007fb2aa98
}
crash>

除了上面列举到的命令外,crash还有一些其他命令,比如list、waitq、vm等等,大家可以通过help命令查看详细说明,这里不再一一列举。

        我们在解决实际问题过程中,可以根据crash的各个命令灵活组合运用,从而获取到自己需要的信息,找到有用的线索。

请关注微信公众号 “Linux研习社” 获取更多技术内容:

Linux Kdump和Crash工具 Kdump是一种基于kexec的Linux内核崩溃捕获机制,简单来说系统启动时会预留一块内存,当系统崩溃调用命令kexec(kdump kernel)在预留的内存中启动kdump内核,该内核会将此时内存中的所有运行状态和数据信息收集到一个coredump文件中以便后续分析调试。 阅读详情

相关推荐

ARM64架构下Kdump与Crash工具实战指南

本文详细介绍了在ARM64架构下使用Kdump与Crash工具进行内核崩溃分析的实战指南。从环境准备、工具编译到内核配置与内存预留,再到Kdump配置全流程和Crash高级分析技巧,全面解析了ARM64架构下的特殊注意事项和常见问题解决方案,帮助开发者高效定位和解决内核崩溃问题。

weixin_29201933的博客 245

Crash工具介绍和常见命令使用

本文主要介绍crash工具的使用以及常用的命令。crash工具,常用来分析内核的coredump以及应用的coredump,功能非常强大。

lunhui2016的博客 6902

深入理解iOS Crash Log

Crash Log Crash Log的主要来源有两种: Apple提供的,可以从用户设备中直接拷贝,或者从iTunes Connect(XCode)下载 三方或者自研Framework统计,三方服务包括Fabric,Bugly等。 这篇文章讲到的Crash Log是Apple提供的。 获取 设备获取 USB连接设备,接着在XCode菜单栏依次选择:Window -&gt;...

Leo的专栏 3万+

Crash使用

crash工具的使用

鑫鑫缺点金的博客 3311

嵌入式Linux系统oops与kernel crash区别全面讲解

深入剖析嵌入式Linux系统中oops与crash的触发机制与表现差异,帮助开发者快速定位内核问题,提升系统稳定性与调试效率。

weixin_33557333的博客 981

Android Crash之Java Crash分析

本篇先探讨Java Crash,Native Crash我们会在下一篇重点讨论。1. 这类错误一般是由Java层代码触发的2. 一般情况下程序出错时会弹出提示框,JVM虚拟机退出3. 一般的Crash工具都能够捕获,系统也提供了API举个栗子====我们可以看到,button是没有被实例化的,我们调用它的方法就会让程序崩溃,如下图所示:通过Crash堆栈信息定位问题上面就是一个很简单的Crash啦,相信很多同学在开发过程中一定遇到过这种情况,万恶的空指针啊,啊,啊。

2501_90390009的博客 1603

crash常用的调试命令

我的crash常用命令如下所示: log/dmesg: 打印出故障现场的kmsg缓冲区log_buf中的内容。 struct:展示结构体的定义,或者从指定的地址开始解析一个结构体。 union:与struct类似,但是用于union的展示 p:print查看某个变量的值,实际上是调用gdb的p命令 whatis:展示结构体、联合体等定义 bt <pid>:展示调用堆栈信息,如果不加参数...

程序猿Ricky的日常干货 1万+

【ARM Linux 系统稳定性分析入门及渐进 1 -- Crash 工具简介】

还可以准备好系统,以便在系统崩溃的情况下引导进入另一内核。值得一提的是,crash也可以用来分析实时的系统内存,是一个很强大的调试工具。由于kdump利用kexec启动捕获内核,绕过了 bootloader,所以第一个内核的内存得以保留。将捕获内核的地址传递给生产内核,从而在系统崩溃的时候找到捕获内核的地址并运行。里面的某个寄存器里面写个值,来表明重启的原因,当再次重启的时候,会去读该寄存器,获取重启的原因。系统一旦崩溃,内核就没法正常工作了,这个时候将由 kdump 提供一个用于捕获当前运行信息的内核,

CodingCos的博客 3278

crash工具解析_3.3.3 内核态调测工具:kdump&crash——crash解析

什么是crash linux 系统内核发生崩溃的时候,可以通过 kdump 等方式收集内核崩溃之前的内存,生成转储文件 vmcore和dmesg。内核开发者通过分析该 vmcore 文件就可以诊断出内核崩溃的原因,从而进行操作系统的代码改进。 crash 就是一个被广泛使用的内核崩溃转储文件分析工具,掌握 crash 的使用技巧,对于定位问题有着十分重要的作用。crash使用接上文,系统安装kdu...

weixin_39705435的博客 3518

【App测试】adb常见命令以及App日志分析方法

软件测试的一些介绍,主要针对App测试,涉及到adb命令,主要包括连接方式(USB连接和WiFi连接),安装卸载,以及常用的日志分析。

qq_45534066的博客 3304

13-单片机模块化程序: 单片机AT指令配置模块程序模板(非阻塞版)

资料源码:https://gitee.com/yang456/OpenProgrammingModuleForMCU.git 点击加入群聊【单片机,物联网,上位机】: 说明1:知识从未如此性感。 烂程序员关心的是代码,好程序员关心的是数据结构和它们之间的关系! 说明2:学的是思想,而非程序!此代码思路适用于所有的单片机。 说明3:学会以后,下面的代码可能会跟你一辈子! 说明4:这一系列文章是为大幅度裁剪本人博客文章!使博客文章更有条理。便于推其它教程! 拷贝这两个文件到自己的工程 ..

杨奉武的博客 1280

【Linux】内核崩溃调试:如何使用kdump等工具调试内核崩溃

内核崩溃是操作系统中非常严重的问题,可能导致系统无法正常运行。使用kdump等工具可以帮助我们捕获和分析内核崩溃时的内存转储,从而找出问题的根源。本文将介绍如何使用kdump等工具调试内核崩溃,帮助你掌握内核调试的基本方法。

科技改变人类,技术成就未来 1731

OpenClaw(原Clawdbot/Moltbot)本地部署快速指南

支持Telegram、Slack、Discord、iMessage等多平台接入,通过配置文件或环境变量填写对应平台的Token,配置后执行。支持对接OpenAI、Anthropic、阿里云百炼等云端模型,也可搭配Ollama使用本地模型。默认仅允许已配对用户交互,群聊场景建议开启Docker沙箱模式,在配置文件设置。执行后跟随指引确认安全说明,进入QuickStart模式,默认网关端口为。可查看已加载模型,通过绑定的通讯通道发送测试指令,响应正常即部署完成。,限制非主会话操作权限,提升安全性。

wukangjupingbb的博客 8479

Logcat 使用笔记

一、Android log 缓冲区 radio:查看包含无线装置/电话相关消息的缓冲区。 events:查看已经过解译的二进制系统事件缓冲区消息。 main:查看主日志缓冲区(默认),不包含系统和崩溃日志消息。 system:查看系统日志缓冲区(默认)。 crash:查看崩溃日志缓冲区(默认)。 all:查看所有缓冲区。 default:报告main、system 和crash 缓冲区 二、Logcat 命令使用 1. Log日志的基本格式 日期 时间 ...

xiaoyu_wu的博客 739

S4 HANA 1809+折旧过账(AFAB/AFABN)凭证行数据存储逻辑变迁:从BSEG到ACDOCA的深度解析

本文深度解析了S4 HANA 1809+版本中折旧过账(AFAB/AFABN)凭证行数据存储逻辑的变迁,从传统的BSEG表迁移到ACDOCA表。文章详细探讨了这一变更的技术背景、官方设计意图及实际影响,包括数据存储量减小和系统性能提升等优势。同时提供了升级项目的应对策略和最佳实践建议,帮助用户顺利过渡到新的数据存储模型。

weixin_28731223的博客 294

ROS2 多机器人导航仿真入门教程(一)

RMF 是建立在 ROS 2 基础上的一系列可重复使用、可扩展的库和工具,可实现任何类型机器人系统的异构机群的互操作性。RMF 利用标准化的通信协议与部署机器人的基础设施、环境和自动化系统进行通信,以优化关键资源(如机器人、电梯、门、通道等)的使用。它通过资源分配和通过 RMF 核心(将在本书后面详细介绍)防止共享资源冲突,从而为系统增加智能。RMF 灵活而强大,几乎可以在任何通信层上运行,并与任何数量的物联网设备集成。RMF 的架构设计允许随着环境自动化水平的提高而扩展。

2506_90492529的博客 1659

Android11日志系统

本文系统介绍了Android日志系统的架构与实现原理。主要内容包括:1) 日志系统的核心组件logd进程及其环形缓冲区结构;2) liblog模块作为NDK应用与日志系统的接口;3) Logcat命令行工具的使用方法及过滤语法;4) 详细分析了日志写入和读取的流程,包括应用层、Native层及内核日志的处理机制;5) 阐述了logd内部组件如LogListener、LogReader的工作原理。全文通过架构图、类图和流程图直观展示了Android日志系统从写入、存储到读取的完整链路,为开发者理解和使用日志功

jsm1010的博客 1020

在 ABAP 平台配置 OAuth 2.0 Client(OA2C_CONFIG):一份可落地的全景实践

本文详细介绍了在ABAP平台中配置OAuth 2.0客户端的完整流程。重点讲解了四种授权类型(Client Credentials、Authorization Code、SAML 2.0 Bearer Assertion、Resource Owner Password Credentials)的适用场景和配置要点,以及客户端认证的三种方式(Client Secret、Client Certificate、mTLS)。文章提供了操作步骤、排错建议和工程实践指导,包括端点配置、回调地址管理、scopes设置等关

2007 年 ~ 2025 年,深耕 SAP 技术 18 年 355

分析Crash 日志一

分析Crash 日志 1、Header Incident Identifier: B6FD1E8E-B39F-430B-ADDE-FC3A45ED368C CrashReporter Key: f04e68ec62d3c66057628c9ba9839e30d55937dc Hardware Model: iPad6,8 Process: TheElements [303] Path: /priv...

onebutterfly 8567

【Bug已解决】codex: conversation context window exceeded / Token limit reached — CodeX CLI 上下文窗口超限解决方案

CodeX CLI 上下文窗口超限(context_length_exceeded)的解决方案,含开新会话、更大窗口模型、精简提示与限制工具输出。

博客 4181

Cadence OrCAD Capture原理图中为功能模块分配ROOM的方法

本文详解介绍原理图设计阶段为原理图模块分配ROOM的方法。

fydar的博客 1346

Android Crash

*** 当给定线程由于给定的未捕获异常而终止时调用此方法。* Java 虚拟机将忽略此方法引发的任何异常。* @param t 导致异常的线程* @param e 未捕获的异常*/

望佑 1449

计算机控制技术及应用

《计算机控制技术及应用》通过总结作者的科研成果和吸收国内外的先进理论、方法和技术,以计算机控制系统的网络化、开放化、智能化和集成化发展趋势为主线索,主要介绍计算机控制系统的基本概念和计算机控制系统的典型形式,计算机控制系统的数学描述与基本分析方法,以及数字PID控制器、最少拍控制系统、达林算法、状态变量设计法等设计方法及其各种改进算法。重点突出计算机控制系统输入输出通道接口的设计方法和典型控制系统的设计案例与实现方法等。

IOS Crash 分析 (二)

IOS Crash 分析 之 二 IOS crash 简述Crash底层原理常见的Crash 原因 IOS crash 简述 IOS 开发中遇到Crash是很正常的事情,相信每个开发者都遇到过,有些能复现的crash 很好解决,对于OC项目很多都是野指针问题导致,对于Swifit项目很多都是强解包导致。在上一篇文章中已经收集了很多导致crash的问题汇总。具体请参考:IOS Crash问题分析汇总...

kyl282889543的博客 611

Statistics and Machine Learning Toolbox

Statistics and Machine Learning Toolbox(带书签),MATLAB统计学习工具

廖雪峰Python教程[完整版]

廖雪峰的python教程整理的,已经排好版了,而且还是完整的,适合小白

crash 和 anr的区别

crash 和 anr的区别 crash 表现:程序奔溃或闪退。 影响:1、程序无法继续运行,数据丢失。2、糟糕的用户体验 产生原因: 从Android框架可区分为Application Crash和Native Crash。 Application Crash由于java层线程因未捕获异常而终止,由系统的void uncaughtException(Thread t,Throwable e) 方法进行捕获和处理,通常会给出界面弹窗提示“***已停止运行。”。 Application Crash常见

sinat_26192119的博客 1万+

迈瑞BS系列全自动生化分析仪LIS协议接口手册(内含HL7和ASTM)

迈瑞BS系列全自动生化分析仪LIS协议接口手册,内含HL7和ASTM)

crash实战:手把手教你使用crash分析内核dump

Kdump是Linux的一种内核崩溃捕获机制,Linux内核遇到致命错误崩溃时会触发Kdump机制将崩溃时的现场保存下来,以便后续分析和故障排查。目前市面上有很多分析Kdump的工具,例如trace32, crash tool,本文介绍crash tool在手机领域的应用,并重点介绍一些实用的技巧。然而,本文的重点并不是介绍crash tool的工作原理和基础命令,也不是为了介绍Kdump转储的原...

内核工匠 1万+
上一篇: 通过qemu和crash分析崩溃内核
下一篇: 并发、同步、竞争
Linux研习社
博客等级 码龄3年 164粉丝 8原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值