- 博客(15)
- 资源 (3)
- 收藏
- 关注
原创 Ubuntu实践(9) : core文件的来龙去脉
一、为什么要开启core文件 debug是一个很时髦的概念。在linux应用层程序开发的过程中,core文件在排查问题中扮演着至关重要的角色,例如程序访问非法内存产生段错误或者断言退出,core文件一般情况下可以保存案发现场的蛛丝马迹,只为水落石出的一刻。此外,阅读开源代码的时候,gcore的造错可以看到函数调用的堆栈,有助于理解代码的逻辑。二、什么时候开启c
2013-11-23 17:56:58
3909
原创 Linux C实践(1):不可忽略或捕捉的信号—SIGSTOP和SIGKILL
一、SIGSTOP和SIGKILL不可忽略 当信号发生时,忽略信号几乎适用于所有的信号,不过有两个信号除外,SIGSTOP和SIGKILL。这里把SIGINT放在一起做对比测试。通过键盘键入信号,ctrl+c代表中断SIGINT,ctrl+\代表退出SIGQUIT,ctrl+z代表停止。前台进程收到这些信号,就会采取相应动作。1)忽略SIGINT信号按下
2013-10-26 11:35:07
43998
7
原创 gdb实践(1): 进程CPU 100%排查
进程CPU 100%卡在那里没反应了,这时候没有coredump的文件分析,但可以通过强大的gdb调试。 下面写了一个简单的CPU 100%的死循环测试程序(t.c): 编译运行,发现程序迟迟没有执行结束: 使用top命令查看了一下,./a.out的可执行程序已经CPU 100%了:
2013-04-26 23:16:43
4819
原创 Cppcheck实践(1):介绍和安装
介绍 Cppcheck是一款开源的C/C++代码的静态扫描工具。不像C/C++编译器和其他的扫描工具,Cppcheck不进行语法错误检查,它只检查那些编译器无法检查的bugs。安装以下以linux平台为例子,讲述Cppcheck的安装。 1)下载:开源地址http://sourceforge.net/projects/cppcheck/file
2013-04-17 22:04:46
5748
原创 gcc实践(1): warning: suggest parentheses around assignment used as truth value [-Wparentheses]
#include int main(void){ int a = 1; int b = 2; if (a = b) { //do nothing } return 0;} 在gcc下使用-Wall选项编译,出现告警: warning: suggest parentheses arou
2013-03-13 21:23:44
24481
2
原创 Ubuntu实践(8):sudo探索
sudo(superuserdo) 普通用户使用su切换为超级用户(即root用户),但是使用su的缺点之一是必须要先告知超级用户的密码。 sudo使普通用户不需要知道root的密码即可获得权限。在Ubuntu系统中,管理员可以给普通用户授予某些sudo的权限。在普通用户需要获取特殊权限时,其可在命令前加上“sudo”,此时sudo将会询问该使用者自己的密码(以
2013-01-12 11:53:49
1277
原创 Ubuntu实践(3):在windows中安装ubuntu (续)
本主题的前一篇文章主要介绍了如何在windows中安装ubuntu。考虑到篇幅太长,接下来的内容是单独介绍如何提高开机速度的。关于GRUB 自从9.10版本(Karmic Koala)开始,GRUB(GRandUnifiedBootloader) 2(1.98或者更新的版本)是Ubuntu默认的启动加载器和管理器,把Ubuntu系统从硬盘中加载到内存中运行。在电
2012-12-25 22:53:57
1362
原创 Ubuntu实践(7):更换内核
Ubuntu提供了内核的*.deb包,可以简单地为系统更替内核,是一种很安全的方式。以下通过Ubuntu11.10(Oneiric),逐步演示具体的操作,其他版本亦然。 这是升级前的内核版本: 接下来,到以下的URL获取Ubuntu内核的.deb包,你将在网页上看到内核不同版本的目录。挑选你所需要的内核版本下载,注意,必须是同一个Ubuntu版本下的,
2012-12-13 16:07:06
1176
原创 Ubuntu实践(6):默认的shell
从Ubuntu 6.10开始,系统默认的shell,/bin/sh被改为dash(the Debian Almquist Shell)。在先前的版本中,默认的shell是bash(the GNU Bource-Again Shell)。 由上可见,/bin/sh是dash的软连接(使用的是Ubuntu 12.04LTS),dash和bash很相似但不一样。
2012-12-02 18:04:23
1982
原创 Ubuntu实践(5):DNS服务器设置
12.04LTS中的resolv.conf是动态生成的,对它直接进行的手动修改都会丢失,因为它在resolvconf下一次重启的时候将被重写。resolv.conf文件内容里首先就有提示:# Dynamic resolv.conf(5) file for glibc resolver(3) generated by resolvconf(8)# DO NOT EDIT THIS
2012-11-27 23:18:37
1235
原创 Ubuntu实践(4):安装wxPython
ubuntu的python默认是没有安装wxPython的,简单的验证方法是在终端输入如下命令: python import wx 如果你的ubuntu没有安装wxPython,将会出现产生结果: Traceback (most recent call last): File "", line 1, in ImportE
2012-11-25 12:13:17
3654
原创 Ubuntu实践(3):在windows中安装ubuntu
关于Wubi ubuntu很酷,8.04开始就正式提供了Wubi(基于windows的安装程序,Windows-based Ubuntu Installer),可以在windows系统中创建一个几GB的虚拟硬盘,将ubuntu独立安装在其中,并把windows系统的硬盘挂载进来。 这样有很明显的好处,尤其是对刚接触linux不久的人来说。无需跑VMware,一心
2012-11-24 00:17:36
4026
原创 Source Insight: UTF-8格式编码无乱码输入
众所周知,Source Insight不支持UTF-8格式编码。目前本人所使用的3.5版本是不支持的,后续版本不知是否考虑支持。 对于有编码洁癖,又钟爱Source Insight的人来说,遇到不得不在代码中嵌入UTF-8的情况,真的很头疼。这里通过“hello, world”的例子(test.c),介绍一种折中的办法,把代码中的UTF-8字符(例如汉字)转换成其UTF-8的编码后
2012-11-06 23:21:08
4067
原创 Ubuntu实践(2):在线升级最新版本
通过do-release-upgrade命令可以在线升级ubuntu的最新版本,十分方便。例如我原来的ubuntu是11.10版本的,11年装的,现在ubuntu官方发布12版本了,操作如下: 其中cat /etc/issue和lsb_release -a如上所示,是查看ubuntu当前版本的两种手段。 需要注意,在升级的过程中,有些选项需要
2012-11-05 23:26:09
1250
原创 Ubuntu实践(1):激活root用户和密码
激活root用户 刚安装完Ubuntu,root用户默认是被冻结的,可以通过终端,输入以下命令激活: sudo passwd root 例如,我刚安装完Ubuntu 12.10的虚拟机,系统启动后的用户是king,进入终端以后,按照如图所示的步骤,就可以设置root的密码。 需要注意的是,在使用Ubuntu的过程中,
2012-11-04 10:24:51
1537
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人