• 第十章


    一.嵌入式调试方法: 

    1.模拟器。比如Qtopia Core可以用奇趣提供的Frame Buffer模拟工具qvfb,ARM硬件模拟可以用SkyEye开源项目。 

    2.远程调试。调试器还在PC上,调试器与被调试的程序通过网络通信。 

    3.通过LOG和Core Dump等文件事后分析。 

    二.对于复杂的Linux驱动以及HAL等程序库,需要使用各种方法对其进行测试。如设置断点,逐步跟踪代码,输出调试信息等。本章主要讲述了如何利用开发板、Android模拟器以及一些函数、工具调试嵌入式Linux内核模块、可执行程序和共享库。

    1.打印内核调试信息:printk

    该函数的用法和printf函数类似,只不过printk函数运行在内核空间,printf函数运行在用户空间。函数原型: asmlinkage printk(const char *fmt, ...) 第一个参数表示格式字符串。后面是可变参数。

    2.防止printk函数降低Linux驱动性能。

    虽然使用printk函数可以很方便地将消息写入日志文件或控制台。但大量使用printk函数频繁地操作日志文件或者控制台设备文件会严重影响Linux驱动的性能。因此Linux在开发的阶段可以使用printk函数输出消息,而在正式发布Linux驱动的时候去掉。可以通过C语言中的编译指令来控制printk函数的输出。

    3.通过虚拟文件系统(/proc)进行数据交互

    在Linux文件系统中,/proc经常被用来作为内核空间与用户空间进行数据交互的工具。/proc是虚拟文件系统,是内存映射。所有对/proc的操作都是对内存的读写。所以读写/proc文件的速度要比设备文件系统/dev要快。有四个函数:

    proc_mkdir

    create_proc_entry

    create_proc_read_entry

    remove_proc_entry

    4.调试工具

    (1).用gdb调试用户空间程序。

    (2).用gdbserver远程调试用户空间程序

    (3).用kgdb远程调试内核程序

     

     http://i.cnblogs.com/EditPosts.aspx?opt=1

  • 相关阅读:
    组装query,query汇总,query字段
    POJ 1276, Cash Machine
    POJ 1129, Channel Allocation
    POJ 2531, Network Saboteur
    POJ 1837, Balance
    POJ 3278, Catch That Cow
    POJ 2676, Sudoku
    POJ 3126, Prime Path
    POJ 3414, Pots
    POJ 1426, Find The Multiple
  • 原文地址:https://www.cnblogs.com/zhangyuye/p/5650750.html
Copyright © 2020-2023  润新知