文章分类 - linux develop
摘要:向来写的调试信息都是随意输出,无论是查看起来还是写起代码来都不方便,于是写了一个debug信息输出库,便于输出debug信息。debug信息分为close,info,warning,error,critical五级,分别以不同的颜色输出,使用DEBUG1,DEBUG2,DEBUG3,DEBUG4宏来调用,全局变量g_debug定义为0时,关闭debug信息输出,高等级会使低于这个等级的debug信息输出,高于的则不输出,如g_debug=3,DEBUG1,DEBUG2,DEBUG3的都会输出,DEBUG4则不输出,这样用起来方便多了。代码如下:/* **********************
阅读全文
摘要:许多开源项目代码中都有自定义的调试信息的相关的函数。比如u-boot中(来自common.h头文件)#ifdefDEBUG #definedebug(fmt,args...)printf(fmt,##args) #definedebugX(level,fmt,args...)if(DEBUG>=level)printf(fmt,##args); #else #definedebug(fmt,args...) #definedebugX(level,fmt,args...) #endif/*DEBUG*/ #ifdef DEBUG#define debug(fmt,args...)...
阅读全文
摘要:1. 调试带参数的程序: a. gdb --args 程序名 arg1,arg2... b. gdb 程序名 然后 set args arg1,arg2... 这里的 arg1, arg2... 不再包含程序名 show args 命令可以查看设置好的运行参数2. 显示源代码 a. list list <linenum> 显示程序第linenum行的周围的源程序。 list <function> 显示函数名为function的函数的源程序。 list 显示当前行后面的源程序。 list - 显示当前行前面的源程...
阅读全文
摘要:libc指C函数库,这是一个通称,而glibc是GNU实现的libc,至于glib是一组较高层的函数库,比如链表、Hash等,在linux中glib是建立在glibc之上的,qt的库就叫做qt,也是建立在glibc和其他一些基本库之上???。GLib是Gtk +库和Gnome的基础。GLib可以在多个平台下使用,比如Linux、Unix、Windows等。GLib为许多标准的、常用的C语言结构提供了相应的替代物。GLib中定义了好多有用的数据结构,如单(双)向连表,可变长的数组等,线程池等有用的东西。使用GLib库的程序都应该包含GLib的头文件glib.h。Glibc 是提供系统调用和基本函
阅读全文
摘要:[root@opentv c_and_pointer]# gcc ./a.out core.20325 ./a.out: file not recognized: File truncatedcollect2: ld returned 1 exit status[root@opentv c_and_pointer]# gdb ./a.out core.20325 GNU gdb (GDB) Fedora (7.0-3.fc12)Copyright (C) 2009 Free Software Foundation, Inc.License GPLv3+: GNU GPL version 3 o
阅读全文
摘要:学习gdb时候出现的Missing separate debuginfos, use: debuginfo-install glibc-2.11.2-1.i686debuginfo-install glibc-2.11.2-1.i686I found many persons had the same problem with me,and saw many personsgooglethe key word"missing separte debuginfo""missing separate debuginfo" "glibc gdb&qu
阅读全文
摘要:I'm trying to figure out where the arbtd deamon is sending my core files. In the old days it would write to the application directory, like core.pid. Now it seems the arbtd has taken over; however, when I look in /var/cache/abrt I do not see my core file. Note:$ cat /proc/sys/kernel/core_pattern
阅读全文
摘要:core dump的概念:A core dump is the recorded state of the working memory of a computer program at a specific time, generally when the program has terminated abnormally (crashed). In practice, other key pieces of program state are usually dumped at the same time, including the processor registers, which.
阅读全文
摘要:调试方法:1.gcc 加 -g(gdb)编译2.ulimit -c unlimited3.运行可执行文件4.gdb 可执行文件名 core文件名(core.5616)GDB调试core文件样例(如何定位Segment fault)core dump又叫核心转储, 当程序运行过程中发生异常, 程序异常退出时, 由操作系统把程序当前的内存状况存储在一个core文件中, 叫core dump. (linux中如果内存越界会收到SIGSEGV信号,然后就会core dump)在程序运行的过程中,有的时候我们会遇到Segment fault(段错误)这样的错误。这种看起来比较困难,因为没有任何的栈、tr
阅读全文
摘要:1. 前言:有的程序可以通过编译, 但在运行时会出现Segment fault(段错误). 这通常都是指针错误引起的.但这不像编译错误一样会提示到文件->行, 而是没有任何信息, 使得我们的调试变得困难起来.2. gdb:有一种办法是, 我们用gdb的step, 一步一步寻找.这放在短小的代码中是可行的, 但要让你step一个上万行的代码, 我想你会从此厌恶程序员这个名字, 而把他叫做调试员.我们还有更好的办法, 这就是core file.3. ulimit:如果想让系统在信号中断造成的错误时产生core文件, 我们需要在shell中按如下设置:#设置core大小为无限ulimit -c
阅读全文
摘要:Shell 简介Shell 语言对于接触 LINUX 的人来说都比较熟悉,它是系统的用户界面,提供了用户与内核进行交互操作的一种接口。它接收用户输入的命令并把它送入内核去执行。实际上 Shell 是一个命令解释器,它解释由用户输入的命令并且把它们送到内核。它没有一般编程语言的“编译 - 链接 - 运行”过程。不仅如此,Shell 有自己的编程语言用于对命令的编辑,它允许用户编写由 shell 命令组成的程序。Shell 编程语言具有普通编程语言的很多特点,比如它也有循环结构和分支控制结构等,用这种编程语言编写的 Shell 程序与其他应用程序具有同样的效果。当然,Shell 功能也是很强大的。
阅读全文
摘要:BusyBox 的诞生BusyBox 最初是由 Bruce Perens 在 1996 年为 Debian GNU/Linux 安装盘编写的。其目标是在一张软盘上创建一个可引导的 GNU/Linux 系统,这可以用作安装盘和急救盘。一张软盘可以保存大约 1.4-1.7MB 的内容,因此这里没有多少空间留给 Linux 内核以及相关的用户应用程序使用。BusyBox 许可证BusyBox 是按照 GNU General Public License(GPL)许可证发行的。这意味着如果我们在一个项目中使用 BusyBox,就必须遵守这个许可证。我们可以在 BusyBox Web 站点(请参看本文后
阅读全文
摘要:issue:it doesn't work to call g_main_loop_quit when the main thread is running, for example, execute a long loop.
阅读全文
摘要:Linux size 命令的用法显示一个目标文件或者链接库文件中的目标文件的各个段的大小,当没有输入文件名时,默认为a.out。 size:支持的目标: elf32-i386 a.out-i386-linux efi-app-ia32 elf32-little elf32-big srec symbolsrec tekhex binary ihex trad-core。命令格式:size 范例:[root@localhost lib]# size /usr/lib/libOpenIPMIposix.so.0.0.1text data bss dec hex filename13123 616
阅读全文
摘要:Linux是一个优秀的开发环境,但是如果没有好的开发工具作为武器,这个环境给你带来的好处就会大打折扣。幸运的是,有很多好用的Linux和开 源开发工具供你选择,如果你是一个新手,你可能不知道有哪些工具可用。本文将介绍其中十个杰出的开源开发工具,它们将帮助你提升自己的开发效率。 1、Bluefish Bluefish是进行Web开发时最受欢迎的IDE之一。它能够处理编程和标记语言,但是该工具的重点用途在于创建动态和交互式网站。和许多 Linux应用程序一样,Bluefish是一个轻量级工具,运行速度非常快,它所占据的资源只有同类工具的30%到40%。Bluefish可以一次打 开多个文档(...
阅读全文
摘要:http://www.ibm.com/developerworks/cn/linux/l-glib/index.html简介: GLib是GTK+和GNOME工程的基础底层核心程序库,是一个综合用途的实用的轻量级的C程序库,它提供C语言的常用的数据结构的定义、相关的处理函数,有趣而实用的宏,可移植的封装和一些运行时机能,如事件循环、线程、动态调用、对象系统等的API。它能够在类UNIX的操作系统平台(如LINUX, HP-UNIX等),WINDOWS,OS2和BeOS等操作系统台上运行。GLib需要一个支持线程的操作系统和一个字符集间转换函数iconv的支持,事实上大多现代的操作系统都有以上两
阅读全文
摘要:The .ko extension is placed on kernel modules (loadable drivers) in Linux.Further,'.ko' extension is called 'kernel Object', and is implemented fromkernel 2.6 onwards, this is perhaps the biggest change as far asloadable kernel modules are concerend.For example, the serialdevice driv
阅读全文
摘要:在pc机上编译的程序,利用nfs共享在ok2440上执行时出现了这个错误:#./HelloWorld./HelloWorld line 1: syntax error: "(" unexpected经过查找这个错误是由于编译程序所使用的编译器是gcc,使用gcc编译的程序可以在pc机上运行而不能在开发板上运行;而要想程序在开发半上运行就需要使用编译器arm-linux-gcc进行编译,使用arm-linux-gcc编译的程序只能在开发板上运行而不能在pc机上运行,否则将出现bash: ./HelloWorld.o:无法执行二进制文件!
阅读全文
摘要:简介:GLib是GTK+和GNOME工程的基础底层核心程序库,是一个综合用途的实用的轻量级的C程序库,它提供 C语言的常用的数据结构的定义、相关的处理函数,有趣而实用的宏,可移植的封装和一些运行时机能,如事件循环、线程、动态调用、对象系统等的API。它能 够在类UNIX的操作系统平台(如LINUX, HP-UNIX等),WINDOWS,OS2和BeOS等操作系统台上运行。GLib需要一个支持线程的操作系统和一个字符集间转换函数iconv的支持,事实上大多现代的操作系统都有以上两项功能。GLib由基础类型、对核心应用的支持、实用功能、数据类型和对象系统五个部分组成的。GLib 的最新版本是GLi
阅读全文
摘要:1 写在前面 Linux下编程一直被诟病的一点是: 没有一个好用的IDE, 但是听说Linux牛人, 黑客之类的也都不用IDE.但是对我等从Windows平台转移过来的Coder来说, 一个好用的IDE是何等的重要啊, 估计很多人就是卡在这个门槛上了, "工欲善其事,必先利其器"嘛, 我想如果有一个很好用的IDE, 那些Linux牛人也会欢迎的. 这都是劳动人民的美好愿望罢了,我今天教大家把gvim改装成一个简易IDE, 说它"简易"是界面上看起来"简易", 下面开始介绍今天的工作了. ...
阅读全文