• imx6Q 4.1.15 Kgtp support


    1) Kgtp介绍
        Kgtp项目主页是:http://code.google.com/p/kgtp/
        如其项目主页所描述,Kgtp是一个实时且轻量级的Linux跟踪内核调试工具。也许说是一个内核跟踪调试接口更合适,通过它来连通内核和GDB,使得GDB可以对内核进行跟踪调试。GDB既可以是在本机,也可以在另外一台机器上,甚至还可以进行离线调试,而这些感觉应该都是GDB本身提供的Targets、Trace Files等功能,而Kgtp主要还是进行内核调试信息的收集与交互、导出等,当然,Kgtp可能也会提供一些其它辅助GDB的功能。

    2) 内核源代编译,添加Kprobes、Uprobes支持
    make menuconfig ARCH=arm
    enable CONFIG_KPROBES=y and CONFIG_UPROBES=y
    make (build kernel src code)

      3) GTP LKM编译
      vim kgtp topdir Makefile
      KERNELVERSION := 4.1.15
      KERNELDIR := /home/jiujin/linux/
      CROSS_COMPILE :=/home/jiujin/workbench/toolchain/gcc-linaro-7.2.1-2017.11-x86_64_arm-linux-gnueabihf/bin/arm-linux- gnueabihf-                                                                                                              
      ARCH := arm
      vim gtp.c
      #if (LINUX_VERSION_CODE >= KERNEL_VERSION(3,6,22))
      #define __get_cpu_var get_cpu_var
      #endif


    [jiujin@kgtp]$ make
    make ARCH=arm CROSS_COMPILE=/home/jiujin/workbench/toolchain/gcc-linaro-7.2.1-2017.11-x86_64_arm-linux-gnueabihf/bin/arm-linux-gnueabihf- -C /work/aosp/kernel_imx/ M=/home/jiujin/workbench/kgtptools/kgtp modules
    make[1]: Entering directory '/work/aosp/kernel_imx'
      CC [M]  /home/jiujin/workbench/kgtptools/kgtp/gtp.o
    /home/jiujin/workbench/kgtptools/kgtp/gtp.c: In function ‘gtp_task_pt_regs_get_val’:
    /home/jiujin/workbench/kgtptools/kgtp/gtp.c:2008:9: warning: cast from pointer to integer of different size [-Wpointer-to-int-cast]
      *val = (int64_t)task_pt_regs(get_current());
             ^
      Building modules, stage 2.
      MODPOST 1 modules
      CC      /home/jiujin/workbench/kgtptools/kgtp/gtp.mod.o
      LD [M]  /home/jiujin/workbench/kgtptools/kgtp/gtp.ko
    make[1]: Leaving directory '/work/aosp/kernel_imx'
    /home/jiujin/workbench/toolchain/gcc-linaro-7.2.1-2017.11-x86_64_arm-linux-gnueabihf/bin/arm-linux-gnueabihf-gcc -O2 -static -o getmod getmod.c
    /home/jiujin/workbench/toolchain/gcc-linaro-7.2.1-2017.11-x86_64_arm-linux-gnueabihf/bin/arm-linux-gnueabihf-gcc -O2 -static -o getframe getframe.c
    /home/jiujin/workbench/toolchain/gcc-linaro-7.2.1-2017.11-x86_64_arm-linux-gnueabihf/bin/arm-linux-gnueabihf-gcc -O2 -static -o putgtprsp putgtprsp.c




  • 相关阅读:
    c++文件对齐
    笔试题——C++开发简单记录错误模块
    dp算法之有代价的最短路径
    Linux虚拟机安装教程
    C++判断回文
    干货 | 10分钟带你掌握branch and price(分支定价)算法超详细原理解析
    干货 | 10分钟教你用column generation求解vehicle routing problems
    干货 | 10分钟带你彻底了解column generation(列生成)算法的原理附java代码
    干货 | 10分钟搞懂branch and bound(分支定界)算法的代码实现附带java代码
    干货 | 10分钟带你全面掌握branch and bound(分支定界)算法-概念篇
  • 原文地址:https://www.cnblogs.com/hongjiujin/p/8269229.html
Copyright © 2020-2023  润新知