第十章-嵌入式linux调试技术

嵌入式调试方法:

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

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

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

stdprm 标准打印机 LPT1端口

stdaux 标准串行设备 COM1端口

stdin并不一定来自键盘,stdout和stderr也并不一定显示在屏幕上,可以将它们重定向到其他设备或磁盘文件上。

使用fprintf()时,第一参数推荐使用stderr而不要使用stdout,因为stderr的运行级要高一些,程序在异常退出时stderr可以输出,而stdout就不行。

cmd >file 把stdout重定向到file中

cmd >>file 把stdout追加到file中

cmd 2>>file 1>&2 把stderr追加到file中,再把stdout追加到stderr中

在C程序中通过freopen()进行重定向

FILE *freopen(const char *filename,const char mode,FILE *stream)

比如freopen("err.log","w",stderr)就把stderr重定向到err.log文件了

控制log的级别

比如QT中提供qDebug(),qWarning(),GTK中也有相应的g_debug(),g_error(),内核调试的printk()也提供很多级别。

在编译时利用QT提供的宏QT_NO_DEBUG_output就可以将qDebug("var=%d\n",var)去掉了,下次需要时还可以通过重新编译找回来。

时间: 2024-11-06 07:32:43

第十章-嵌入式linux调试技术的相关文章

嵌入式Linux调试技术

Linux内核调试被很多人认为是很困难的,很多人宁愿直接使用printk函数输出调试信息,也不愿意使用各种命令进行调试.对于复杂的Linux驱动及HAL等程序,需要使用各种方法对其进行测试.printk函数与printf函数类似,而printk函数运行在内核空间,printf函数运行在用户空间. 嵌入式调试方法: 1.模拟器.比如Qtopia Core可以用奇趣提供的Frame Buffer模拟工具qvfb,ARM硬件模拟可以用SkyEye开源项目. 2.远程调试.调试器还在PC上,调试器与被调

Android深度探索(卷1)HAL与驱动开发 心得体会 第十章 嵌入式Linux的调用技术

Android深度探索(卷1)HAL与驱动开发 心得体会 第十章  嵌入式Linux的调用技术 对于复杂的Linux驱动以及HAL等程序库,需要使用各种方法对其进行调试.例如,设置断点,逐步跟踪代码.输出调试信息等.虽然嵌入式Linux在调试方面并没有Visual Studio.Delphi.Eclipse这些可视化工具方便,但是学习一些这方面的技术无疑更有助于开发强大而稳定的Linux内核模块. 对于嵌入式Linux内核模块,可执行程序.代码库的调试可能更要复杂些.因为在大多数时候需要至少两台

掌握 Linux 调试技术

掌握 Linux 调试技术 在 Linux 上找出并解决程序错误的主要方法 Steve Best ([email protected])JFS 核心小组成员,IBM 简介: 您可以用各种方法来监控运行着的用户空间程序:可以为其运行调试器并单步调试该程序,添加打印语句,或者添加工具来分析程序.本文描述了几种可以用来调试在 Linux 上运行的程序的方法.我们将回顾四种调试问题的情况,这些问题包括段错误,内存溢出和泄漏,还有挂起. 本文讨论了四种调试 Linux 程序的情况.在第 1 种情况中,我们

第十章 嵌入式Linux的调试技术

本章的主要内容是嵌入式Linux的调试技术.对于复杂的Linux驱动及HAL等程序库,需要使用各种方法对其进行调试. 一.打印内核调试信息:printk 该函数的用法与printf函数类似,只不过printk函数运行在内核空间,printf函数运行在用户空间.像Linux驱动这样的Linux内核程序只能使用printk函数输出调试信息.Printk函数在printk.c文件中实现,该文件的路径:/root/kernel/linux_kernel_2.6.36/kernel/printk.c. 二

Android深度探索(卷1)HAL与驱动开发 第十章 嵌入式Linux的调试技术 读书笔记

对于复杂的Linux驱动以及HAL等程序库,需要使用各种方法对其进行测试.如设置断点,逐步跟踪代码,输出调试信息等.本章主要讲述了如何利用开发板.Android模拟器以及一些函数.工具调试嵌入式Linux内核模块.可执行程序和共享库. 1.打印内核调试信息:printk 该函数的用法和printf函数类似,只不过printk函数运行在内核空间,printf函数运行在用户空间.函数原型: asmlinkage printk(const char *fmt, ...) 第一个参数表示格式字符串.后面

第十章 嵌入式linux的调试技术 心得笔记

1.主要讲了对于复杂的Linux驱动以及HAL等程序库,需要使用各种方法对其进行调试.例如,设置断点.逐步跟踪代码.输出调试信息等. 2.打印内核调试信息:printk printk 函数的用法与printf 函数类似,只不过printk函数运行在内核空间, printf函数运行在用户空间.也就是说,像Linux 驱动这样的Linux内核程序只能使用printk函数输出调试信息. 3.防止printk函数降低Linux驱动性能 虽然使用printk 函数可以很方便地将消息写入日志文件或控制台.但

第十章嵌入式Linux 的调试技术

对于复杂的Linux驱动及HAL等程序库,需要使用各种方法对其进行调试,例如,设置断点.逐步跟踪代码.输出调试信息等.Printk函数运行在内核空间,printf函数运行在用户空间. 初始化Linux驱动 Static int _init printk_demo_init(void) 卸载Linux驱动 Static void _exit printk_demo_exit(void) 使用printk函数可以很方便地将消息写入日志文件或控制台,但大量使用printk函数操作日志文件或控制台设备文

第十章嵌入式Linux的调试技术

1.对于复杂的Linux驱动及HAL等程序库,需要使用各种方法对其进行调试,例如,设置断点.逐步跟踪代码.输出调试信息等. 2.Printk函数运行在内核空间,printf函数运行在用户空间. 3.初始化Linux驱动 Static int _init printk_demo_init(void) 4.卸载Linux驱动 Static void _exit printk_demo_exit(void) 5.使用printk函数可以很方便地将消息写入日志文件或控制台,但大量使用printk函数操作

掌握 Linux 调试技术【转】

转自:https://www.ibm.com/developerworks/cn/linux/sdk/l-debug/index.html 您可以用各种方法来监控运行着的用户空间程序:可以为其运行调试器并单步调试该程序,添加打印语句,或者添加工具来分析程序.本文描述了几种可以用来调试在 Linux 上运行的程序的方法.我们将回顾四种调试问题的情况,这些问题包括段错误,内存溢出和泄漏,还有挂起. 2 评论 Steve Best ([email protected])JFS 核心小组成员,IBM 2