UNIX环境高级编程
上漂的雪
这个作者很懒,什么都没留下…
展开
-
《UNIX环境高级编程》中apue.h的问题
运行程序清单1-1(列出一个目录中的所有文件) 提示 "错误:apue.h:没有那个文件或目录". 很是受打击,果断google解决之。 apue.h是作者自定义的一个头文件,包括程序所需的常用头文件及出错处理函数。所以因该将它放入系统头文件中(Linux下是 /usr/include),这样gcc编译器就可以找到它了。 去http://www.apuebook.转载 2013-09-07 17:02:17 · 564 阅读 · 0 评论 -
进程的内存空间
1代码区/段:存储函数的代码,函数指针就是函数在代码区的地址(首地址)。 2全局区: 初始化的全局变量,static变量,读写都可以。 3 BSS区: 未初始化的全局区。BSS段在main()执行之前会自动清零。 4 堆区 : 也叫自由区,程序员全权掌控堆区。容易引发内存泄漏malloc(),free(). 5 栈区 : 系统自动管理,函数的参数,局部变量(非sta原创 2013-12-04 23:20:52 · 729 阅读 · 0 评论 -
Unix/Linux的内存分配
程序员所接触的都是虚拟内存地址。每个进程都有0-4G的虚拟内存地址,本质上就是一个整数。这个整数 先天是不能够存储数据的,否则会引发段错误。虚拟内存地址,只有映射零物理内存/硬盘文件后,才能存 储数据,才占据内存。 虚拟内存地址分为用户空间和内核空间。0-3G为用户空间,3-4G是内核空间。用户空间不能直接访问内核空间,但可以通过系统提供的函数进入内核空间。内存地址的基本单位是字节,内存原创 2013-12-04 23:10:12 · 1336 阅读 · 0 评论 -
gdb调试常用命令
调用gdb编译需要在cc后面加 -g参数再加-o; [root@redhat home]#gdb 调试文件:启动gdb (gdb) l :(字母l)从第一行开始列出源码 (gdb) break n :在第n行处设置断点 (gdb) break func:在函数func()的入口处设置断点 (gdb) info break: 查看断点信息 (gdb) r:运行程序转载 2014-05-13 17:23:39 · 517 阅读 · 0 评论 -
segmentation fault core dump
在代码量较多时,调试比较困难。常用方法是在源码中插入大量的printf语句。但是当发生segmentation fault时,定位就比较复杂了。 core dump又叫核心转储, 当程序运行过程中发生异常, 程序异常退出时, 由操作系统把程序当前的内存状况存储在一个core文件中, 叫core dump. (linux中如果内存越界会收到SIGSEGV信号,然后就会core dump)转载 2014-05-20 14:16:32 · 2114 阅读 · 0 评论