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
四、更新源并更新可用的程序列表
......
<!--
@page { margin: 2cm }
P { margin-bottom: 0.21cm }
-->
4
月
10
日,科技部就“国家自主创新产品认定工作”发出通知,公开征求意见,其中的
指导思想有重大突破。具体情况如何?
2009
年
10
月
30
日,在我国政府 ......
Windows下的源码阅读工具Souce Insight凭 借着其易用性和多种编程语言的支持,无疑是这个领域的“带头大哥”。Linux/UNIX环境下呢?似乎仍然是处于百花齐放,各有千秋的春秋战国时代,实 际上,似乎其环境下的任何软件都是处于一种逐鹿中原的态势,也许这就是“集市”之于“大教堂”的优势所 ......
Linux设备驱动程序学习笔记系列文章原作者是:Tekkaman Ninja,他博客地址:
http://blog.chinaunix.net/u1/34474/showart_404278.html
在此向Tekkaman Ninja表示感谢,写出这么好的文章,使我少走了很多弯路。
Linux设备驱动程序学习(0)-Hello, world!模块
文章来源:http://blog.chinaunix.net/u2/62910/showa ......