Linux-调试
文章平均质量分 79
wangjidong198612
这个作者很懒,什么都没留下…
展开
-
内存溢出攻击分析
2012-07-27 08:54 2592人阅读 评论(0) 收藏 举报cmd语言character工作buffer扩展什么是内存溢出?简单的说,内存溢出就是程序向内存写入了比分配更多的空间更多的内容。攻击者据此控制程序执行的路径,冒名执行它的代码。对那些好奇这一切都是如何发生的人,本文试图详细介绍攻击的实现机制并提出一些预防措施。从我们知道的经验来看,大多都听说过这些攻击,但转载 2015-07-09 18:44:14 · 409 阅读 · 0 评论 -
Linux 调试 core dump文件
查看默认的一些参数,注意core file size是个0,程序出错时不会产生core文件了。$ ulimit -acore file size (blocks, -c) 0data seg size (kbytes, -d) unlimitedfile size (blocks, -f) unlimitedmax locked memory (kbytes, -l) 4转载 2015-08-20 17:01:38 · 274 阅读 · 0 评论 -
查看linux cpu和内存利用率
在系统维护的过程中,随时可能有需要查看 CPU 使用率,并根据相应信息分析系统状况的需要。在 CentOS 中,可以通过 top 命令来查看 CPU 使用状况。运行 top 命令后,CPU 使用状态会以全屏的方式显示,并且会处在对话的模式 -- 用基于 top 的命令,可以控制显示方式等等。退出 top 的命令为 q (在 top 运行中敲 q 键一次)。 操作实例: 在命令行转载 2015-08-20 16:59:41 · 284 阅读 · 0 评论 -
利用GDB进行多线程调试
分一、多线程调试多线程调试重要就是下面几个命令:info thread 查看当前进程的线程。 thread 切换调试的线程为指定ID的线程。 break file.c:100 thread all 在file.c文件第100行处为所有经过这里的线程设置断点。 set scheduler-locking off|on|step,这个是问得最多的。在使用step或者co转载 2015-08-20 16:56:42 · 243 阅读 · 0 评论 -
Linux系统内存错误产生的原因及调试方法
总而言之,产生段错误就是访问了错误的内存段,一般是你没有权限,或者根本就不存在对应的物理内存,尤其常见的是访问0地址. 一般来说,段错误就是指访问的内存超出了系统所给这个程序的内存空间,通常这个值是由gdtr来保存的,他是一个48位的寄存器,其中的32位是保存由它指向的gdt表,后13位保存相应于gdt的下标,最后3位包括了程序是否在内存中以及程序的在cpu中的运行级别,指向的gdt是由转载 2015-09-08 11:37:46 · 1248 阅读 · 0 评论 -
kill 进程一个简单函数接口
//主要使用到函数popen、pclose(fp)、kill、void kill_app_process(char* name){FILE* fp;char buf[32];char cmd[100];char c_pid[8];int pid[10] = {0,};int k,i, index=0;snprintf(cmd,sizeof(cmd), "原创 2015-08-05 16:58:16 · 466 阅读 · 0 评论 -
Valgrind简单用法
Valgrind的主要作者Julian Seward刚获得了今年的Google-O'Reilly开源大奖之一──Best Tool Maker。让我们一起来看一下他的作品。Valgrind是运行在Linux上一套基于仿真技术的程序调试和分析工具,它包含一个内核──一个软件合成的CPU,和一系列的小工具,每个工具都可以完成一项任务──调试,分析,或测试等。Valgrind可以检测内存泄漏和内存违例,转载 2015-08-16 21:20:51 · 246 阅读 · 0 评论 -
Linux下的调试工具
Linux下的调试工具 随着XP的流行,人们越来越注重软件的前期设计、后期的实现,以及贯穿于其中的测试工作,经过这个过程出来的自然是高质量的软件。甚至有人声称XP会淘汰调试器!这当然是有一定道理的,然而就目前的现实来看,这还是一种理想。在日常工作中,调试工具还是必不可少的。在Linux下,调试工具并非只有gdb,还有很多其它调试工具,它们都各有所长,侧重方面也有所不同。本文介绍几种转载 2015-08-16 21:19:28 · 252 阅读 · 0 评论 -
Linux下利用backtrace追踪函数调用堆栈以及定位段错误
通常情况系,程序发生段错误时系统会发送SIGSEGV信号给程序,缺省处理是退出函数。我们可以使用 signal(SIGSEGV, &your_function);函数来接管SIGSEGV信号的处理,程序在发生段错误后,自动调用我们准备好的函数,从而在那个函数里来获取当前函数调用栈。举例如下:#include #include #include #include #i原创 2015-07-20 15:27:15 · 709 阅读 · 0 评论 -
C语言函数调用栈剖析
理解调用栈最重要的两点是:栈的结构,EIP/EBP/ESP寄存器的作用。1.栈结构首先必须明确一点也是非常重要的一点,栈是向下生长的,所谓向下生长是指从内存高地址->低地址的路径延伸,那么就很明显了,栈有栈底和栈顶,那么栈顶的地址要比栈底低。2.EIP/EBP/ESP寄存器对x86体系的CPU而言,在函数调用过程中,系统会用到下面三种寄存器:1.EIP寄存器里存储的转载 2015-07-20 16:46:14 · 280 阅读 · 0 评论 -
内存出错信号处理例子 void signal_handler()
signal(SIGSEGV,set_on_segment_fault); void set_on_segment_fault(int sig){struct sigaction act;memset(&act, 0, sizeof(act));act.sa_flags = SA_SIGINFO;act.sa_sigaction = handler;sigactio原创 2015-07-20 17:01:45 · 565 阅读 · 0 评论 -
backtrace&&backtrace_symbols 查找段错误 打印堆栈信息
backtrace系列函数:使用范围适合于没有安装GDB或者想要快速理清楚函数调用顺序的情况backtrace系列函数1.Function: int backtrace (void **buffer, int size)//用来获取堆栈信息。size需要获取的堆栈层次,该函数返回返回值是实际获得的堆栈层次2.char ** backtrace_symbols (void *原创 2015-07-20 15:08:15 · 1020 阅读 · 0 评论 -
Linux开发中常见段错误问题原因分析
分类: Linux 嵌入式Linux C和C++2012-09-22 20:35 1701人阅读 评论(0) 收藏 举报linux多线程socket平台stringc1 使用非法的内存地址(指针),包括使用未经初始化及已经释放的指针、不存在的地址、受系统保护的地址,只读的地址等,这一类也是最常见和最好解决的段错误问题,使用GDB print一下即可知道原因。 2 内存读转载 2015-07-09 18:27:25 · 371 阅读 · 0 评论 -
LINUX GDB调试实例
分类: Linux2011-07-05 00:14 604人阅读 评论(0) 收藏 举报linux程序调试工具工具图形unixcgi————GDB是GNU开源组织发布的一个强大的UNIX下的程序调试工具。或许,各位比较喜欢那种图形界面方式的,像VC、BCB等IDE的调试,但如果你是在UNIX平台下做软件,你会发现GDB这个调试工具有比VC、BCB的图形化调试器更强大的功能。所谓转载 2015-07-09 15:30:53 · 395 阅读 · 0 评论 -
段错误原因分析和查找
段错误原因分析和查找分类: linux开发 linux命令2014-07-10 15:02 2348人阅读 评论(0) 收藏 举报目录(?)[+]http://www.cnblogs.com/panfeng412/archive/2011/11/06/2237857.html最近在Linux环境下做C语言项目,由于是在一个原有项目基础之上转载 2015-09-15 00:09:34 · 1225 阅读 · 0 评论