linux学习 运行时确定程序出错的位置
首先,在编译程序时,增加-g选项,使执行文件包含符号信息。其次,在程序开始运行时,调用api函数设置信号处理函数(如signal(), sigaction()等),用来处理各种信号。例如程序发生”除0错误”时,就会发出一种信号。最后,完成一个函数堆栈输出函数。用backtrack()获取函数调用堆栈,然后用backtrace_symbols()转换为字符串来显示。
我在eclipse环境下,完成了demo:
1. 用鼠标右键单击工程,选择属性,弹出属性对话框。
2. 在属性对话框中,选择Build->setting。在g++/gcc编译属性中添加编译参数”-g”。
3. 创建一个void trace_show(int sig)函数,用来处理信号。在其中输出函数调用堆栈信息。
4. 在程序启动位置,调用sigaction()函数。
附录:信号表
名称 默认动作 说明
SIGHUP 终止进程 终端线路挂断
SIGINT 终止进程 中断进程
SIGQUIT 建立CORE文件 终止进程,并且生成core文件
SIGILL 建立CORE文件 非法指令
SIGTRAP 建立CORE文件 跟踪自陷
SIGBUS 建立CORE文件 总线错误
SIGSEGV 建立CORE文件 段非法错误
SIGFPE 建立CORE文件 浮点异常
SIGIOT 建立CORE文件  
相关文档:
一、安装虚拟机VMware
二、在虚拟机上安装linux
三、安装VMware tools
1、虚拟机菜单栏—>VM—>Install VMware Tools
2、进入操作系统安装VMware Tools
四、更新源并更新可用的程序列表
......
Linux文件I/O主要由read、write、open、close、lseek五个函数组成;
一、文件描述符
在嵌入式Linux中每打开一个文件都有一个描述符与之对应,该描述符是一个非负整数;
当用open打开或新建一个文件时,该函数的返回值就是该文件的描述符;
......
来源:cnbeta 作者:cnbeta 2008-10-31 出处:pcdog.com
我不知道为什么“只有0.10068%的Linux内核开发者领薪水”这种稀里糊涂的想法流传不息,但它确实在流传.所以,我只想一劳永逸地说,就绝大部分而言,Linux是由一些主要的美国公司雇用的软件工程师 ......
Windows下的源码阅读工具Souce Insight凭 借着其易用性和多种编程语言的支持,无疑是这个领域的“带头大哥”。Linux/UNIX环境下呢?似乎仍然是处于百花齐放,各有千秋的春秋战国时代,实 际上,似乎其环境下的任何软件都是处于一种逐鹿中原的态势,也许这就是“集市”之于“大教堂”的优势所 ......