This article was firstly published from http://oliveryang.net. The content reuse need include the original link.

Crash coding notes

1. Where could I found coding examples?

See crash whitepaper, Command Extensions section. This document also has crash command usages and a case study for kernel debugging.Please study it carefully before working on crash.

2. Public APIs defined in defs.h

Crash public APIs are defined in defs.h.

  • Don not change existing APIs in defs.h
  • The code changes in defs.h should not break the 3rd party crash extension source code build
  • If changes can be put into private files, don not change in defs.h
  • Make code changes in defs.h as simple as possible.

3. Other coding and testing guidelines

  • Run “make warn” to fix all warnings.

  • It would be better, if variables, APIs, and CLI output naming could reflect kernel data structure naming.

  • CLI changes should also add man page changes in help.c

  • Test must be done on both 32 and 64 bit kernels

  • Per your code changes, need to consider the test on different kernel versions

  • If you don not have enough test resources, please discuss with maintainer to leverage community test resources.

  • Before sending out the patch, please make sure your changes is on top of latest upstream patch

4. Build and test environment setup

Make sure you had installed following packages. I used Fedora CLIs as examples.

  • Basic development tools

    sudo yum -y groupinstall “Development Tools”

  • patch

    sudo yum install -y patch

  • ncurses-devel

    sudo yum install -y ncurses-devel

  • zlib-devel

    sudo yum install -y zlib-devel

  • bison and byacc

    yum install -y bison
    yum install –y byacc

  • kernel debug info packages, if required.

    for 64 bit x86 kernel,

    debuginfo-install kernel

    for 32 bit x86 kernel,

    debuginfo-install kernel-PAE

Logo

开放原子开发者工作坊旨在鼓励更多人参与开源活动,与志同道合的开发者们相互交流开发经验、分享开发心得、获取前沿技术趋势。工作坊有多种形式的开发者活动,如meetup、训练营等,主打技术交流,干货满满,真诚地邀请各位开发者共同参与!

更多推荐