转自:http://www.itwendao.com/article/detail/404132.html 目录(?)[-] 一Core Dump核心转存 二Linux程序地址分析 一Core Dump核心转存 二Linux程序地址分析 Linux应用程序运行出现错误,有时候并不会马上就体现出来.-_-可能是由于错误的条件还没触发把. 但是发生的错误应该在哪里查找呢?—这时候,我们的Core Dump就派上用场了. 一.Core Dump——核心转存 定义: Core Dump又叫核心转存.当程…
linux应用程序地址布局 在学习Linux应用程序开发时,经常会遇到如下概念:代码段.数据段.BSS段(Block Started by Symbol,又名:未初始化数据段).堆(heap)和栈(stack).而这些部分也是构成Linux应用程序的重要组成部分. 一.内存布局 1.从低地址到高地址分别为:代码段.数据段.BSS段.堆.栈 2.堆向高内存地址生长 3.栈向低内存地址生长 二.数据存放 1.代码段:代码,全局常量(const).字符串常量   2.数据段:全局变量(初始化以及未初始…
微软在去年发布了Bash On Windows, 这项技术允许在Windows上运行Linux程序, 我相信已经有很多文章解释过Bash On Windows的原理, 而今天的这篇文章将会讲解如何自己实现一个简单的原生Linux程序运行器, 这个运行器在用户层实现, 原理和Bash On Windows不完全一样,比较接近Linux上的Wine. 示例程序完整的代码在github上, 地址是 https://github.com/303248153/HelloElfLoader 初步了解ELF格…
http://advancedlinuxprogramming.com提供了本书电子版的免费下载. 1 与执行环境交互 关于参数 C语言程序的main()函数使用两个参数和执行环境交互--(int)argc和(char*)argv[].前者表示所执行命令的参数个数,后者包含了所执行命令的各个参数.(char*)argv[]的第一个元素为程序本身的位置,其后为程序的参数. 看例子: #include <stdio.h> int main(int argc, char* argv[]) { pri…
1 linux创建自启动程序    自启动的两种方法,都经过自己测试.1.1 自启动程序方法1:    在etc/rc.local在里面加入/home/robin/code/autoruntest > /dev/null &(其中autoruntest 测试程序名称,下同).即可自启动1.2 自启动程序方法2:    创建linux服务,步骤如下:1)        写服务启动脚本文件(后附例子)2)        修改脚本文件chmod 777 autoruntest3)        脚…
Valgrind 概述 体系结构 Valgrind 是一套Linux下,开放源代码(GPL V2)的仿真调试工具的集合.Valgrind由内核(core)以及基于内核的其他调试工具组成.内核类似于一个框架(framework),它模拟了 一个CPU环境,并提供服务给其他工具:而其他工具则类似于插件 (plug-in),利用内核提供的服务完成各种特定的内存调试任务.Valgrind的体系结构如下图所示: 图 1 Valgrind 体系结构 Valgrind包括如下一些工具: Memcheck.这是…
Linux程序包管理 Linux中软件的安装主要有两种形式:一种是直接下载源代码包自行编译后安装,另一种直接获取rpm软件包进行安装. 程序的组成部分: 二进制程序:程序的主体文件,比如我们运行一个ls命令就是一个二进制程序. 库文件:程序的公用功能模块,比如A程序需要用一个打印机,B程序也需要一个打印机就可以公用这一个模块了.在window下库文件为.dll格式,linux下为/lib/*so格式的文件. 配置文件:通过设置配置文件来改变程序启动时的运行特征. 帮助手册:使用的帮助文档.  …
应用 Valgrind 发现 Linux 程序的内存问题 如何定位应用程序开发中的内存问题,一直是 inux 应用程序开发中的瓶颈所在.有一款非常优秀的 linux 下开源的内存问题检测工具:valgrind,能够极大的帮助你解决上述问题.掌握 valgrind 的使用以及工作原理,能够有效地定位进而避免应用开发中的内存问题. 应用 Valgrind 发现 Linux 程序的内存问题 回页首 Valgrind 概述 体系结构 Valgrind 是一套Linux下,开放源代码(GPL V2)的仿真…
IA-32/Linux按字节编址:在保护模式下,IA-32采用段页式虚拟存储管理方式,存储地址采用逻辑地址.线性地址和物理地址来进行描述. 逻辑地址由48位组成,包含16位段选择符(高13位为段表项的index)和32位段内偏移量(有效地址=基址寄存器+变址寄存器×比例因子+偏移量),通过段描述符取到段表中的对应段表项的段基址,加上有效地址得到线性地址(位数由虚拟地址空间大小决定). PS:逻辑地址和线性地址是虚拟地址的两种不同表示形式,描述的都是4GB虚拟地址空间中的一个存储地址. 最后通过分…
第十六章.Linux程序包管理之yum及源代码安装 目录 yum介绍 yum配置文件 yum的repo配置文件中可用的变量 yum命令的使用 使用光盘作为本地yum仓库 如何创建yum仓库 编译安装的三步骤 开源程序代码的获取方式 安装后的配置 16.1.yum简介 Yum(全称为 Yellow dog Updater, Modified)是redhat系列linux系统的包管理工具.就是类似windows下安装软件那个下一步下一步的东西.由于linux的开源,所以linux下的软件有大量组件依…