摘要: 使用C/C++语言开发程序时,当程序crash的时候产生coredump文件对于调试程序是很有帮助的。在RedhatLinux系统中默认是不生成coredump文件的,这是因为在/etc/profile文件中有这样一行ulimit-S-c0>/dev/null2>&1如何打开coredump呢?最简单的方法是用户在自己的~/.bash_profile中加入ulimit-S-cunlimited>/dev/null2>&1,这样设置后允许当前用户生成没有大小限制的coredump文件。此外还有两种系统级修改生成coredump的方法。第一种方法是修改/et 阅读全文
posted @ 2011-12-06 18:59 夏大王 阅读(1225) 评论(0) 推荐(0) 编辑
摘要: 抓内存错误时,挂gdb运行程序,总是碰到Program received signal SIG32, Real-time event 32.的问题,程序总是被挂起,然后就需要不停的c(continue),很麻烦 解决方法:在进入gdb之后,运行程序之前,输入handle SIG32 nostop命令,可以让程序接收到sig32信号时,不挂起*** glibc detected *** ./server: double free or corruption (!prev): 0x08a03b88 ***http://topic.csdn.net/u/20090812/15/43cae1c5-9. 阅读全文
posted @ 2011-12-06 18:56 夏大王 阅读(4155) 评论(0) 推荐(0) 编辑
摘要: C程序设计中,内存操作相关的错误可以说是最常见,同时也是非常隐蔽的一类错误。这类错误往往导致程序莫名其妙地崩溃、耗尽系统资源,或是形成严重的安全弱点。在 FreeBSD,以及多数其他 BSD 派生的系统中,重复 free() 在默认情况下都会导致 C 函数库调用 abort() 终止程序。除了 malloc(3) 函数族本身的设计之外,这也是一项非常重要的安全特性。与此相反,包括 *BSD 在内的多数系统的 C 函数库并不对堆进行审计,也就是说,从 API 设计者的观点来看,内存泄漏并不被认为是非常严重的程序设计问题。为什么会有这样的区别呢?事实上,内存泄漏同样可以导致比较严重的问题,例如响应 阅读全文
posted @ 2011-12-06 17:00 夏大王 阅读(887) 评论(0) 推荐(0) 编辑