自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(22)
  • 资源 (9)
  • 收藏
  • 关注

转载 巧用backtrace系列函数,在不具备gdb环境的Linux系统上大致定位段错误位置

1: 段错误产生的原因简而言之,产生段错误就是访问了错误的内存段,一般是你没有权限,或者根本就不存在对应的物理内存,尤其常见的是访问0地址.一旦一个程序发生了越界访问,系统就采取内存保护措施,并给那个程序发送SIGSEGV信号,程序接到那个信号后就知道segmentation fault出现了。想对”段错误”有更详细的了解可以去阅读“Linux下的段错误产生的原因及调试方法” 这篇

2012-04-26 11:53:53 520

转载 目标文件格式分析工具: ar,nm,objdump,objcopy,readelf

前言如果普通编程不需要了解这些东西,如果想精确控制你的目标文件的格式或者你想查看一下文件里的内容以便作出某种判断,那么你可以看一下下面的工具:ar,nm,objdump,objcopy。具体用法请参考man在线手册。ar基本用法    ar命令可以用来创建、修改库,也可以从库中提出单个模块。库是一单独的文件,里面包含了按照特定的结构组织起来的其它的一些文件(称做

2012-04-26 11:44:02 583

转载 Playing with ptrace, Part II

Dec 01, 2002  By Pradeep Padala inSysAdminIn Part II of his series on ptrace, Pradeep tackles the more advanced topics of setting breakpoints and injecting code into running processes.

2012-04-26 11:15:45 450

转载 Playing with ptrace, Part I

Nov 01, 2002  By Pradeep Padala inSysAdminUsing ptrace allows you to set up system call interception and modification at the user level.Have you ever wondered how system callscan b

2012-04-26 11:10:53 486

转载 ltrace的原理

ltrace的功能是能够跟踪进程的库函数调用,它是如何实现的呢? 在ltrace源代码从chinaunix.net中下载下来,做了一个粗略的分析。 ltrace其实也是基于ptrace。我们知道,ptrace能够主要是用来跟踪系统调用,那么它是如何跟踪库函数呢? 首先ltrace打开elf文件,对其进行分析。在elf文件中,出于动态连接的需要,需要在elf文件中保存函数的符

2012-04-26 10:51:38 3139

转载 strace实现原理

引子:1.在Linux系统中,进程状态除了我们所熟知的TASK_RUNNING,TASK_INTERRUPTIBLE,TASK_STOPPED等,还有一个TASK_TRACED。这表明这个进程处于什么状态?2.strace可以方便的帮助我们记录进程所执行的系统调用,它是如何跟踪到进程执行的?3.gdb是我们调试程序的利器,可以设置断点,单步跟踪程序。它的实现原理又是什么?所有这

2012-04-26 10:50:05 742

转载 [sed] linux sed 批量替换字符串

perl -pi -e 's|ABCD|Linux|g' `find ./ -type f`(perl的参数-p相当于while(http://oreilly.com/pub/h/73)等价于sed -i -e 's|ABCD|Linux|g' `find ./ -type f``多文件操作可用xargs,更直观一些。------------------------

2012-04-25 11:49:36 652

转载 系统调用和c库之间的关系

Tips: 用man查询函数时候有些并不能直接man + 函数名查到,例如:man fopen    man 2 open所以可以用man+数字+函数名来试试,具体的内容可以查看  /usr/local/share/man/下面对应的目录___________________________________________________________________________

2012-04-24 17:01:32 1003

原创 gcc __attribute__关键字举例之visibility

visibility用于设置动态链接库中函数的可见性,将变量或函数设置为hidden,则该符号仅在本so中可见,在其他库中则不可见。    g++在编译时,可用参数-fvisibility指定所有符号的可见性(不加此参数时默认外部可见,参考man g++中-fvisibility部分);若需要对特定函数的可见性进行设置,需在代码中使用__attribute__设置visibility属性。

2012-04-24 16:53:22 4253

原创 gcc __attribute__关键字举例之constructor/destructor

constructor属性设置函数在所有函数之前执行,destructor设置函数在所有函数退出后执行。test.cc#include void __init(){ printf("before main\n");}void __exit(){ printf("after main\n");}void __init() __attribute__ ((co

2012-04-23 17:55:17 1104

原创 gcc __attribute__关键字举例之alias

GCC使用__attribute__关键字来描述函数,变量和数据类型的属性,用于编译器对源代码的优化。alias属性用于设置一个函数的别名。以下程序为C++版本,C版本去掉extern "C"即可test.cc#include extern "C" int __fun() { printf("in %s\n",__FUNCTION__); return 0;}

2012-04-23 17:34:26 6196 1

转载 Linux进程通信:管道要点

popen一般用于获取命令执行的输出,或者对命令进行输入(采用无名管道):FILE *popen(const char *command, const char *type);pipe用于无名管道:int pipe(int pipefd[2]);mkfifo用于有名管道:int mkfifo(const char *pathname, mode_t mode);

2012-04-20 17:14:14 575

转载 Linux下进程间通信:管道-pipe函数

摘要:在本系列序中作者概述了 linux 进程间通信的几种主要手段。其中管道和有名管道是最早的进程间通信机制之一,管道可用于具有亲缘关系进程间的通信,有名管道克服了管道没有名字的限制,因此,除具有管道所具有的功能外,它还允许无亲缘关系进程间的通信。 认清管道和有名管道的读写规则是在程序中应用它们的关键,本文在详细讨论了管道和有名管道的通信机制的基础上,用实例对其读写规则进行了程序验证,这样做有利于

2012-04-20 17:02:44 446

转载 linux 命名管道fifo实现进程间小数据通信

/* int mkfifo(const char *pathname, mode_t mode);   创建命名管道,成功返回0,失败返回-1。   程序运寻则操作的内容存在于管道文件中,一退出内容则被清空了。EEXIST:用于判断命名管道文件是否存在,存在就可以不用创建。 */#include #include #include #include #i

2012-04-20 16:49:47 735

原创 C++覆盖系统函数的方法

在编写程序时,我们有时会有覆盖系统函数的需求。比如针对glibc中fork线程不安全的bug,我们可以在程序中实现一个特定的fork,伪代码如下:pid_t fork(void){ lock(); fork();//system call unlock();}将这个程序编译为myfork.o。我们的目标是,对于所有使用fork的库,当我们同时链接myfork

2012-04-20 15:02:44 2279 1

原创 pstack实现

注意,使用pstack查看系统进程的堆栈时需要sudo。注意第一行使用的bash,不可用dash。------------------------------------#!/bin/bashif test $# -ne 1; then    echo "Usage: `basename $0 .sh` " 1>&2    exit 1fiif te

2012-04-19 11:29:27 1382

转载 Linux下多线程查看工具(pstree、ps、pstack)

pstack实现参考http://blog.csdn.net/starstarstone/article/details/7476815------------------------------------------------------------------------------------------------1. pstreepstree以树结构显示进程$ p

2012-04-19 11:22:11 659

转载 bash与dash的差别

如今Debian和Ubuntu中,/bin/sh默认已经指向dash,这是一个不同于bash的shell,它主要是为了执行脚本而出现,而不是交互,它速度更快,但功能相比bash要少很多,语法严格遵守POSIX标准,下面简要列举下从bash迁移到dash一般需要注意的问题1.定义函数bash: function在bash中为关键字igi@gentoo ~ $ foo(){ echo $0;}

2012-04-19 11:16:19 702

转载 limit of inotify

本文可解决函数inotify_add_watch发生ENOSPC错误的问题。-------------------------------------------------------------------------------------------ProblemWhen dropbox or guard says like:Unable to monito

2012-04-19 10:42:38 2009

原创 查看glibc版本的方法

方法1:ldd --version方法2:写一个程序检测#include #include int main (void) { puts (gnu_get_libc_version ());  return 0; }

2012-04-19 10:35:21 1114

转载 5 simple ways to troubleshoot using Strace

其中第三条可使用下面的命令查看所有线程的状态strace -f -p 15427strace vs. ltrace:strace追踪系统函数(对应man 2);ltrace追踪库函数(对应man 3),ltrace也可同时追踪系统函数(参数-S)。---------------------------------2008-06-11 00:09 UTC 5

2012-04-18 16:24:59 796

转载 right-left rule

The "right-left" rule is a completely regular rule for deciphering Cdeclarations. It can also be useful in creating them.First, symbols. Read * as "pointer to" - always on the left side

2012-04-06 11:25:50 477

libxml2-2.7.6.tar.gz

安装php5所需要的基本支持库,安装方法可参考http://blog.csdn.net/starstarstone/article/details/6894842

2012-08-23

httpd-2.4.2.tar.gz

apache安装文件,安装方法可参考http://blog.csdn.net/starstarstone/article/details/6894842

2012-08-23

php-5.4.6.tar.bz2

php5安装文件,安装方法可参考http://blog.csdn.net/starstarstone/article/details/6894842

2012-08-23

Mastering Perl.pdf

Learning Perl,Intermediate Perl,和Mastering Perl共同组成所谓的Perl入门三部曲

2011-07-19

Intermediate Perl.pdf

Intermediate Perl,俗称羊骆驼书,介绍perl面向对象、模块等高级内容。

2011-07-19

c#版五子棋(人机对弈模式)

最近在学习C#,写了个五子棋的小游戏,把原代码也传给大家。 电脑选择下棋点的主要算法分为两部:1.将每个落子点进行评分(有棋或禁手点评为最低);2.从第一部中选出5个得分最高的落子点,采用回溯算法求得最佳落子点。(代码中有注释) 希望大家有什么建议或者发现了Bug告诉我啊! 我这几天有时间会进一步完善这个小游戏,到时再传上来。

2007-03-06

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除