|
在Linux下调试程序一般用GDB来执行。 这里简要介绍一下是否gdb调试程序的方法: (1)进入gdb调试: gdb + 已经编译通过的可执行程序 -》 就进入调试模式。例如:gdb MiddlePublisher (2)r + 运行时的参数 -》 开始运行可执行程序。例如 r -lxml2 -f refile (3)b + 断点 -》设置调试的断点。两种:一种是:b CMSTask.cpp:200 表示在CMSTask.cpp文件的第200行设置断点。另一种:b TaskManager (08/24/2007 06:58:53) [查看全文] Linux下的C++编程初识, Linux下C++编程和在Windows下的没有什么两样,它同样需要编译、链接、调度、运行等步骤,只不过执行这些步骤在两种操作系统下所做的不是同样的事情。 在Windows下有TC, BC, VC等编译器,它们极大地方便了程序的编辑编译等,在Windows下你只需要看明白菜单就可以了。而在Linux下是Gcc, G++, Gdb等工具,刚开始时你可能甚至不知道如何下手去调试程序,你也可能甚至不知道程序在哪里编辑。不过这些都不是问题,慢慢来我们都能行! (08/23/2007 20:31:52) [查看全文] Linux-2.6.21.3编译详细过程总结,系统:RedHat RHEL5 (2.6.18-8.el5) 1、从www.kernel.org下载linux-2.6.21.3.tar.bz2 #wget http://www.kernel.org/pub/linux/kernel/v2.6/linux-2.6.21.3.tar.bz2 2、解压到/usr/src #tar jxvf linux-2.6.21.3.tar.bz2 -C /usr/src/linux-2.6.21.3;cd /usr/src/ 3、创建一个linux-2.6.21.3的软连接 linux #ln -s /usr/src/linux-2.6.21.3 /usr/src/linux;cd /usr/src/linux 4、优化,修改内核源代码 (08/23/2007 20:29:08) [查看全文] 关于Linux下/sbin/init程序的执行过程,init进程的主要任务是根据/etc/rc文件中设置的信息,执行其中设置的命令,然后根据/etc/inittab文件中的信息,为每一个允许登录的终端设备使用fork()创建一个子进程,并在每个新创建的子进程中运行agetty (getty)程序。而init进程则调用wait(),进入等待子进程结束状态。每当它的一个子进程结束退出,它就会根据wait()返回的pid号知道是哪个对应终端的子进程结束了,因此就会为相应终端设备再创建一个新的子进程,并在该子进程中重新执行agetty程序。这样,每个被允许的终端设备都始终有一个对应的进程为其等待处理。 (08/23/2007 07:54:35) [查看全文] Linux javac 出现段错误的解决,上GOOGLE找了很多资料,没有发现,后来突然想起来,我把系统的语言从英文改成了中文,换回英文。 (08/23/2007 07:13:01) [查看全文] Linux下共享库的建立,大多数LINUX程序都使用共享库。如果你感觉不到的话,大多数的C程序要用到的共享库libc.so.X,其中X是版本号。 1、检查程序的共享库 用ldd程序可以查询可执行程序所需要的共享库。下面是对一个用gcc2.96编译器编译的一般C程序做的查询(该程序使用的是ELF二进制格式): (08/22/2007 07:33:21) [查看全文] 在Linux编程中使用gcc,为了了解linux的内核,使用vmware装了个Debian Linux。由于用惯了windows 一下子还改变不过来思维习惯(windows真是害人不浅啊^_^)。哈哈,装了后先写个c程序热热身,找了半天gcc竟然没装(因为是只装了debian的基本系统),那就先装个gcc吧。使用linux自带的软件管理器,插入安装盘,找到gcc,点击apply即可(看似简单的一句话,花了我n久时间啊)。 (08/22/2007 07:32:21) [查看全文] soname 形式一般为lib.so.,以symbol link的方式存在于文件系统中,version的不同反映了接口的改变,其指向的实际文件的名字通常是在soname后加上..。 ldd/ldconfig 一个程序/shared库一般都要依赖其他的一些库,这可以用ldd来查看,它列出了依赖的库的soname,因为实际依赖是库的接口,而soname正是反映了库的接口信息。linux使用ELF作为可执行程序和库的格式,这些依赖的库的soname保存在ELF的某个fileld里。当一个可执行程序执行时,ld.so负责把它所依赖的shared库加载到内存并链接,它按照以下顺序寻找shared库: (08/22/2007 07:31:07) [查看全文] 关于怎样查出一个库函数到底在哪个库文件中,我想到一个变通的办法,以查找fcntl函数在哪个库文件中为例吧: 1、找到一个使用fcntl的可执行文件,如test_fcntl。实在不行,自己编一个只有fcntl函数的c文件,然后编译一下得了。 2、使用“ldd test_fcntl”命令,可以追踪出该可执行文件到底使用了哪些库文件。通常可能有几个到几十个。 (08/21/2007 07:45:16) [查看全文] linux下sysctl命令的使用:保存内核参数并起效,1, sysctl命令的作用 在运行时配置内核参数 2,用法举例: -w 用此选项来改变一个sysctl设置 例:sysctl -w net.ipv4.ip_forward=1 -p 载入sysctl配置文件 如-p后未指定路径,则载入 /etc/sysctl.conf 例: sysctl -p /etc/sysctl.conf 3,修改/etc/sysctl.conf可以保存设置在机器重启后仍然有效 (08/20/2007 10:09:15) [查看全文] 关于Linux内核编译及应用层检测,1、下载 kernel source code(本人所用:fedora Core6, 2.6.18) netfilter l7-protocols 2、 tar -zxvf linux-2.6.18.1.tar.gz (内核源代码解压缩到/usr/src目录下linux-2.6.18.1) tar -zxvf netfilter-layer7-v2.13.tar.gz tar -zxvf l7-protocols-2006-06-03.tar.gz (本人将其解压缩到root主目录下) 3、给系统打补丁(针对不同的系统内核,分别打netfilter和l7-protocols的补丁,在两个安装路径的readme里面有详细描述) (08/19/2007 08:00:54) [查看全文] arm-linux-gcc与arm-elf-gcc有什么不同,如果能用一句话说明白arm-linux-gcc和arm-elf-gcc的区别的话,如何来说呢? arm-linux-gcc是针对arm + linux的开发环境的,kernel使用的是linux,不是uclinux,arm是有硬件MMU的。 (08/19/2007 07:59:05) [查看全文] |
内容分类
本周热门内容
赞助商连接
|