![](https://img-blog.csdnimg.cn/20201014180756913.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
Linux系统与编程
文章平均质量分 72
simbi
232
展开
-
valgrind 详细说明
调不尽的内存泄漏,用不完的ValgrindValgrind 安装1. 到www.valgrind.org下载最新版valgrind-3.2.3.tar.bz22. 解压安装包:tar –jxvf valgrind-3.2.3.tar.bz23. 解压后生成目录valgrind-3.2.34. cd valgrind-3.2.35. 运行./autog转载 2014-12-12 16:10:47 · 492 阅读 · 0 评论 -
linux下文件的颜色
普通文件, 常见的文本文件和设置文件--白色可执行文件 文件名后附加 * 绿色目录文件, 文件名后加 / 蓝色符号链接文件, 文件名后加 @ 浅蓝色压缩文件转载 2010-01-20 15:21:00 · 305 阅读 · 0 评论 -
gdb常用指令
多线程调试:set auto-solib-add 0 handle SIG32 nostop noprint pass 1.break FUNCTION 在某个函数上设置断点。函数重载时,有可能同时在几个重载的函数上设置了断点 break +OFFSET break -OFFSET 在当前程序运行到的前几行或后几行设置断点 break LINENUM 在行号为LIN转载 2009-11-23 17:33:00 · 401 阅读 · 0 评论 -
example of log4cpp properties configuration
log 的优先级别解读,参阅源码 log4cpp-0.3.5rc3/include/log4cpp/Priority.hh由高到低EMERGFATALALERTCRITERRORWARNNOTICEINFODEBUGNOTSET对应到 Category 相应函数,参阅源码 log4cpp-0.3.5rc3/include/log4cpp/Catego转载 2009-11-20 16:47:00 · 752 阅读 · 0 评论 -
封装log4cpp
log4cpp 是参考 log4j 所写的 c++ 版本的写 log 的库。可以在这里下载 http://log4cpp.sourceforge.net/ 我的使用方法是:1,定义了一个 _LOG4CPP 宏,用来打开或关闭 log4cpp 的调用,以便在完全不需要 log 的情况下可以运行,例如进行性能测试时;又比如 log4cpp 可能有内存泄露,关闭使用它,可以检查转载 2009-11-20 12:00:00 · 3672 阅读 · 2 评论 -
log4cplus学习笔记(二)
log4cplus在很多方面做的都很出色,但是使用过程有些地方感觉不爽。在继续吹捧之前我先把不爽之处稍微提一提,然后继续介绍关于线程和套接字的知识。### 一些可以改进之处 ###1. 用户自定义LogLevel的实现机制不够开放在第五篇中曾经介绍过如何实现用户自行定义LogLevel,为了实现比较理想的效果,甚至还需要改log4cplus的源代码。:(2. 生成Logger转载 2009-11-20 10:08:00 · 1340 阅读 · 0 评论 -
og4cpp的安装
以 root 用户安装 log4cpp,采用版本是 log4cpp-0.3.5rc3.tar.gz 解包文件 cd /usr/local tar zxvf log4cpp-0.3.5rc3.tar.gz 进入源码目录,并运行配置命令,增加 pthread 支持 cd log4cpp-0.3.5rc3 ./configure --转载 2009-11-19 16:53:00 · 469 阅读 · 0 评论 -
log4cplus学习笔记(一)
(一)log4cplus是C++编写的开源的日志系统,功能非常全面,用到自己开发的工程中会比较专业的,:),本文介绍了log4cplus基本概念,以及如何安装,配置。 ### 简介 ###log4cplus是C++编写的开源的日志系统,前身是java编写的log4j系统.受Apache Software License保护。作者是Tad E. Smith。log4cplus具有线程安全、灵活转载 2009-11-20 10:05:00 · 1496 阅读 · 0 评论 -
便利的开发工具-log4cpp快速使用指南
级别: 初级李群 (liqun@nsfocus.com)绿盟科技2003 年 9 月 01 日log4cpp是个基于LGPL的开源项目,是基于优秀的日志处理跟踪项目Java语言的log4j移植过来的。log4j介绍的文档很多,在java领域使用的也比较广泛,而这个功能强大的库对国内的C++语言开发人员却使用的不多。这里从开发人员使用的角度介绍这个库,使开发人员用最少的代价尽快掌握这种技转载 2009-11-19 15:52:00 · 841 阅读 · 0 评论 -
linux关于vi替换命令的使用说明
vi/vim 中可以使用 :s 命令来替换字符串。以前只会使用一种格式来全文替换,今天发现该命令有很多种写法(vi 真是强大啊,还有很多需要学习),记录几种在此,方便以后查询。:s/vivian/sky/ 替换当前行第一个 vivian 为 sky:s/vivian/sky/g 替换当前行所有 vivian 为 sky:n,$s/vivian/sky/ 替换第 n 行开始到最后一行中每一行的转载 2009-11-19 10:03:00 · 390 阅读 · 0 评论 -
IO - 同步,异步,阻塞,非阻塞
同步(synchronous) IO和异步(asynchronous) IO,阻塞(blocking) IO和非阻塞(non-blocking)IO ,我相信这几个词困扰过很多人,更痛苦的是,如果你查阅过文献资料,你会发现不同的资料中的解释是不一样的,例如在wiki中,异步和非阻塞被当成了一个概念 。出现这种情况的原因,我认为很大程度上是因为IO这个概念本身就很宽泛,它其实包含了好几个层面。比如说转载 2009-11-11 17:24:00 · 383 阅读 · 0 评论 -
The C10K problem
[Help save the best Linux news source on the web -- subscribe to Linux Weekly News!] Its time for web servers to handle ten thousand clients simultaneously, dont you think? After all, the web is转载 2009-11-11 14:53:00 · 440 阅读 · 0 评论 -
TCMalloc:线程缓存的Malloc
作者:Sanjay Ghemawat, Paul Menage原文翻译:ShiningRay动机TCMalloc要比glibc 2.3的malloc(可以从一个叫作ptmalloc2的独立库获得)和其他我测试过的malloc都快。ptmalloc在一台2.8GHz的P4机器上(对于小对象)执行一次malloc及free大约需要300纳秒。而TCMalloc的版本同样的操作大约只需要转载 2009-11-12 12:40:00 · 340 阅读 · 0 评论 -
epoll精髓
在linux的网络编程中,很长的时间都在使用select来做事件触发。在linux新的内核中,有了一种替换它的机制,就是epoll。相比于select,epoll最大的好处在于它不会随着监听fd数目的增长而降低效率。因为在内核中的select实现中,它是采用轮询来处理的,轮询的fd数目越多,自然耗时越多。并且,在linux/posix_types.h头文件有这样的声明:#define __FD_S转载 2009-11-11 12:25:00 · 296 阅读 · 0 评论 -
借助core 文件进行segment fault程序调试
Linux core dump file一、core dump1.何谓 core? 在使用半导体作为内存的材料前,人类是利用线圈当作内存的材料(发明 者为王安),线圈就叫作 core ,用线圈做的内存就叫作 core memory。如今 ,半导体工业澎勃发展,已经没有人用 core memory 了,不过,在许多情况下, 人们还是把记忆体叫作 core 。2.何谓 core d转载 2010-03-19 11:55:00 · 958 阅读 · 0 评论 -
关于LD_DEBUG
关于LD_DEBUG 技术分享 » linux | 阅读(37) | 评论(0) Apr102010本人也就是查找64bit系统里安装memcached时的问题找到的资料。引用LD_DEBUGThe dynamic library loader used in linux (part of glibc) has some neat tri转载 2010-04-19 11:24:00 · 1505 阅读 · 1 评论 -
GDB查看堆栈变量
查看栈信息—————当程序被停住了,你需要做的第一件事就是查看程序是在哪里停住的。当你的程序调用了一个函数,函数的地址,函数参数,函数内的局部变量都会被压入“栈”(Stack)中。你可以用GDB命令来查看当前的栈中的信息。下面是一些查看函数调用栈信息的GDB命令: backtrace bt 打印当前的函数调用栈的所有信息。如:转载 2015-02-01 23:11:14 · 10151 阅读 · 0 评论 -
Valgrind的使用方法
Valgrind是运行在Linux上一套基于仿真技术的程序调试和分析工具,它包含一个内核──一个软件合成的CPU,和一系列的小工具,每个工具都可以完成一项任务──调试,分析,或测试等。Valgrind可以检测内存泄漏和内存违例,还可以分析cache的使用等,灵活轻巧而又强大,能直穿程序错误的心脏,真可谓是程序员的瑞士军刀。 一、Valgrind的主要功能 Valgrind工具转载 2014-11-25 17:44:41 · 452 阅读 · 0 评论 -
linux内核部件分析(二)——原子性操作atomic_t
在任何处理器平台下,都会有一些原子性操作,供操作系统使用,我们这里只讲x86下面的。在单处理器情况下,每条指令的执行都是原子性的,但在多处理器情况下,只有那些单独的读操作或写操作才是原子性的。为了弥补这一缺点,x86提供了附加的lock前缀,使带lock前缀的读修改写指令也能原子性执行。带lock前缀的指令在操作时会锁住总线,使自身的执行即使在多处理器间也是原子性执行的。xchg指令不带lock前转载 2014-09-29 15:48:15 · 790 阅读 · 0 评论 -
Linux 下core文件的使用
转储文件(core dump)本来是在程序运行出错的时候产生的。转储文件记录了进程出错时的内存映像,以及进程执行的上下文环境,如寄存器的值等。它的主要用途是在程序运行崩溃时记录下进程的瞬时情况,从而为找出导致程序崩溃的原因提供宝贵的信息。 如果程序在执行过程中崩溃,在一定的条件下有可能会产生转储文件(常被称为core dump文件),core文件是该进程(异常终止时)的内存映像(同时加转载 2014-09-29 10:13:47 · 317 阅读 · 0 评论 -
GDB 查看死锁
死锁:一种情形,此时执行程序中两个或多个线程发生永久堵塞(等待),每个线程都在等待被 其他线程占用并堵塞了的资源。例如,如果线程A锁住了记录1并等待记录2,而线程B锁住了记录2并等待记录1,这样两个线程就发生了死锁现象。gdb调试死锁的方法:gdb attach pidthread apply all bt找到_lll_lo转载 2014-09-17 14:47:17 · 1388 阅读 · 0 评论 -
GDB -- 多线程堆栈
1.死机后,输入: info threads ------- 查看所有thread信息2. thread apply all bt 显示所有的线程堆栈3. thread apply 1 bt 显示所有的线程堆栈转载 2014-09-17 14:18:49 · 955 阅读 · 0 评论 -
gdb中忽略信号处理 SIGPIPE
GDB调试网络程序时,会遇到SIGPIPE信息,默认GDB会把程序停下来,即使程序使用signal(SIGPIPE, SIG_IGN);来忽略信号。用handle命令设置一下缺省的signal的处理行为即可: handle SIGPIPE nostop print如果连信息提示都不想看见,可以这样设置: handle SIGPIPE nostop noprint转载 2014-09-16 19:29:47 · 467 阅读 · 0 评论 -
让linux程序后台运行
最近把java web项目部署到weblogic上,一直通过windows端的F-Secure操作服务器,每次启动weblogic使用./startWebLogic.sh,但是发现退出终端后,weblogic也是自动退出,查了资料,发现Unix/Linux下一般想让某个程序在后台运行,很多都是使用 & 在程序结尾来让程序自动运行。比如我们要运行mysql在后台:转载 2014-09-12 15:53:38 · 272 阅读 · 0 评论 -
用GDB调试程序常用命令
常用的使用命令1)使用GCC编译时加参数 –g 例:gcc tmp01.c –o tmp01 -g2)gdb tmp013)(gdb) l : 查看载入的文件(list)4)(gdb) b 6 : 在第6行处设置断点5)(gdb) info b : 查看设置的断点转载 2014-09-09 15:18:02 · 316 阅读 · 0 评论 -
gdb调试的layout使用
layout:用于分割窗口,可以一边查看代码,一边测试。主要有以下几种用法:layout src:显示源代码窗口layout asm:显示汇编窗口layout regs:显示源代码/汇编和寄存器窗口layout split:显示源代码和汇编窗口layout next:显示下一个layoutlayout prev:显示上一个layoutCtrl + L:刷新窗口Ctr转载 2014-09-09 14:54:51 · 542 阅读 · 0 评论 -
vmware redhat5.4避免自动安装方法
<br />在vmware6.5.2中安装redhat5.4时默认会自动安装,这样我们就不能为其分配挂载点和进行其它配置。要想解决这个问题,只需在vmware中设置完系统安装环境后,不要勾选“打开电源后创建虚拟机”,然后进入虚拟系统存放目录,删除“autoinst.iso”文件即可。这个文件是当你在虚拟机中配置完安装环境后在你指定的系统存放目录中生成的。vm的虚拟光驱会自动加载此iso文件,由该文件引导安装redhat。转载 2010-06-24 15:04:00 · 1237 阅读 · 0 评论 -
Linux 技巧:让进程在后台可靠运行的几种方法
级别: 中级申 毅 (shenyyi@cn.ibm.com), 软件工程师, IBM 中国软件开发中心2008 年 5 月 29 日想让进程在断开连接后依然保持运行?如果该进程已经开始运行了该如何补救? 如果有大量这类需求如何简化操作?我们经常会碰到这样的问题,用 telnet/ssh 登录了远程的 Linux 服务器,运行了一些耗时较长的任务, 结果却由于网络的不转载 2010-05-28 10:46:00 · 319 阅读 · 0 评论 -
Linux 例行性命令的建立
什么是例行性命令? Linux 系统的例行性命令有哪些? 仅执行一次的工作排程: at 循环执行的例行性命令: crontab 系统的 crontab 设定: /etc/crontab 安全的防护: /var/log/cron 记录文件 本章习题练习 什么是例行性命令?每个人或多或少都有一些约会或者是工作,有的工作是例行性的,例如每年一次的加薪、每个月一次的工作报告、每转载 2010-04-29 10:02:00 · 420 阅读 · 0 评论 -
epoll为什么这么快
epoll是多路复用IO(I/O Multiplexing)中的一种方式,但是仅用于linux2.6以上内核,在开始讨论这个问题之前,先来解释一下为什么需要多路复用IO.以一个生活中的例子来解释.假设你在大学中读书,要等待一个朋友来访,而这个朋友只知道你在A号楼,但是不知道你具体住在哪里,于是你们约好了在A号楼门口见面.如果你使用的阻塞IO模型来处理这个问题,那么你就只能一直守候在A号楼门口等待朋原创 2009-11-11 11:58:00 · 307 阅读 · 0 评论 -
EPOLL简单示例
epoll有两种模式,Edge Triggered(简称ET) 和 Level Triggered(简称LT).在采用这两种模式时要注意的是,如果采用ET模式,那么仅当状态发生变化时才会通知,而采用LT模式类似于原来的select/poll操作,只要还有没有处理的事件就会一直通知.以代码来说明问题:首先给出server的代码,需要说明的是每次accept的连接,加入可读集的时候采用的都是ET模式,原创 2009-11-11 11:52:00 · 443 阅读 · 0 评论 -
将信号用作 Linux 调试工具
2005 年 12 月 19 日通过重点分析使用信号处理程序捕获到的数据,您可以加速调试过程中耗时最多的一个步骤:寻找 bug。本文介绍了 Linux® 信号的背景知识,并给出了已在 PPC Linux 测试通过的示例,然后介绍如何设计自己的信号处理程序来输出信息,从而快速定位代码中有问题的部分。信号 就是软件中断,可以向正在执行的程序(进程)发送有关异步事件发生的信息。大部分硬件 t转载 2009-08-22 17:40:00 · 421 阅读 · 0 评论 -
学习笔记03-学习《精通UNIX下C语言编程及项目实践》
六、低级文件编程库 低级文件编程库常常用于访问终端、管道、设备和套接字等特殊文件, 一般不用于普通磁盘文件, 这是标准文件编程库的特长. 低级文件编程库听起来似乎低级, 其实它是UNIX中的I/O系统调用. 它们使用文件描述符, 直接读写各类文件. 低级文件编程库在输入输出上只有块读写的功能. 文件锁 多用户多任务操作系统非常重要的一个内容就是文件锁. 用户在更新文件转载 2009-04-29 14:25:00 · 385 阅读 · 0 评论 -
学习笔记02-学习《精通UNIX下C语言编程及项目实践》第二篇: 文件子系统
第二篇: 文件子系统 普天之下,莫非王土;率土之滨,莫非王臣. UNIX之中,莫非文件. 四、文件系统结构 磁盘在使用前, 需要分区和格式化. 格式化操作将在磁盘分区中创建文件系统, 它们将确定文件的存储方式和索引方法, 确定磁盘空间分配和回收算法. UNIX文件系统的存储由目录-i节点-数据块>三级构成,其中目录存储了文件的层次结构, 数据块存储了文件的具体转载 2009-04-29 14:14:00 · 584 阅读 · 0 评论 -
学习笔记01-学习《精通UNIX下C语言编程及项目实践》 起步篇
千里之行,始于足下。一、UNIX初步UNIX自1969年诞生以来,已经发展为System III & V、BSD和Linux三大分支。UniX通过shell与用户交互,它是用户与系统间的界面。使用好shell对于学习使用UNIX来说是必须的。不需要你记住所有的命令,但基础的文件操作、目录操作及系统命令等却是必须的。Vi对于初学者是难点,不过只要通过一段时间的练习就能习惯;而且你会很转载 2009-04-29 14:08:00 · 1027 阅读 · 0 评论 -
学习笔记10-学习《精通UNIX下C语言编程及项目实践》
十四章 共享内存 管道, 消息队列和信号量都需要借助第三方对象进行通信; 而共享内存正好弥补了这些缺陷, 它是最快的IPC对象. 在本质上, 共享内存是一端物理内存. 共享内存简介 共享内存中最重要的属性是内存大小和内存地址, 进程在访问共享内存前必须先将共享内存映射到进程空间的一个虚拟地址中, 然后任何对该虚拟地址的数据操作都将直接作用到物理内存上. 共享内存由进程创建,转载 2009-04-29 17:11:00 · 425 阅读 · 0 评论 -
Linux下各个目录的分类
在Linux之中有以下的文件类型:使用ls -l命令可以知道文件的类型,在Linux之中有以下7中文件类型:目录 d普通文件 -字符设备转载 2009-04-27 10:02:00 · 411 阅读 · 0 评论 -
ps aux 中STAT 解释
运行 ps aux 的到如下信息: ps auxUSER PID %CPU %MEM VSZ RSS TTY STAT START TIME COMMANDsmmsp 3521 0.0 0.7 6556 1616 ? Ss 20:40 0:00 sendmail: Queue runner@01:00:00 froot转载 2009-04-14 11:28:00 · 2032 阅读 · 0 评论 -
LINUX下安装php mysql apache phpmyadmin 详解
本文转贴自www.linuxsir.org上本人非敬仰的“北南南北”兄弟的原原创,各位可以通过下面的地址 来支持他http://www.linuxsir.org/bbs/showthread.php?s=&threadid=77079。对于这个贴子的内容,我还没有能力尝试过,不过见他实在写得非详细和精彩,留下来做个备份先吧,后面有能力再实践一下,下面为原文内容。 用源码包安装php-4.34+转载 2009-04-14 10:41:00 · 2445 阅读 · 0 评论 -
浅析Linux下core文件
张华 (zhanghua@eyou.net) 2006 年 8 月 02 日 当我们的程序崩溃时,内核有可能把该程序当前内存映射到core文件里,方便程序员找到程序出现问题的地方。最常出现的,几乎所有C程序员都出现过的错误就是“段错误”了。也是最难查出问题原因的一个错误。下面我们就针对“段错误”来分析core文件的产生、以及我们如何利用core文件找到出现崩溃的地方。何谓core文件 当一转载 2009-03-17 17:21:00 · 345 阅读 · 0 评论