最近调试程序学到的几个挺有用的函数,分享一下,希望对用C/C++的朋友有所帮助!1. 
调用栈系列下面是函数原型:1234#include "execinfo .h"int backtrace(void **buffer, int 
size);char **backtrace_symbols(void...
                            
                            
                                分类:
编程语言   时间:
2014-05-24 03:19:36   
                                阅读次数:
263
                             
                    
                        
                            
                            
                                高效线程使用圣典 
严格来讲,线程的系统开销很大。系统必须为线程分配并初始化一个线程内核对象,还必须为每个线程保留1MB的地址空间(按需提交)用于线程的用 
户模式堆栈,分配12KB左右的地址空间用于线程的内核模式堆栈。然后,紧接着线程创建后,Windows调用进程中每个DLL都有的一个函数来通知进程....
                            
                            
                                分类:
编程语言   时间:
2014-05-23 10:25:32   
                                阅读次数:
399
                             
                    
                        
                            
                            
                                1.预备知识
  1.关于栈,在windows里面的堆栈其实很简单,当学了才知道哈,呵呵,第一要记住的是windows里面的栈是向低地址生长的(extended,延伸,呵呵,顺便丰富下英语的单词量,确实是少的可怜),你可以这样认为,栈就像是一个倒立的箱子,箱子的口子是向下的,底是向上的,这里就表明了系统栈的分布也是延伸方向是由高地址向低地址extended,在最初的...
                            
                            
                                分类:
其他好文   时间:
2014-05-20 13:49:05   
                                阅读次数:
399
                             
                    
                        
                            
                            
                                转自:http://www.cnblogs.com/ypchenry/p/3668572.html1.gdb的原理熟悉linux的同学面试官会问你用过gdb么?那好用过,知道gdb是怎么工作的么?然后直接傻眼。。。 
gdb是怎么接管一个进程?并且能获取这个进程的变量、堆栈、寄存器、内存映像等信息的呢...
                            
                            
                                分类:
数据库   时间:
2014-05-18 20:06:56   
                                阅读次数:
471
                             
                    
                        
                            
                            
                                今天运行了一个比较大的程序,处理的数据达到126MB数据,将数据导入数据库中,用eclipse 来访问时候,总是出现java.lang.OutOfMemoryError:Java heap space的错误,上网查了一些资料,原来是堆栈溢出的状况,eclipse默认的情况下,堆栈的空间应该是64MB, 所以有时候处理的数据的时候,容易出现堆栈溢出的情况,下面总结了几种方法,解决这个问题。
...
                            
                            
                                分类:
编程语言   时间:
2014-05-18 15:53:30   
                                阅读次数:
274
                             
                    
                        
                            
                            
                                在51单片机中,不能直接修改PC,但有一种方法是可以改变PC的。函数调用里会把PC值压入堆栈中,调用结束后,会把PC值弹出到PC中。...
                            
                            
                                分类:
其他好文   时间:
2014-05-18 09:19:59   
                                阅读次数:
221
                             
                    
                        
                            
                            
                                #include 
#define MAX_TASKS 2 //任务槽个数.必须和实际任务数一至
#define MAX_TASK_DEP 12 //最大栈深.最低不得少于2 个,保守值为12.
unsigned char idata task_stack[MAX_TASKS][MAX_TASK_DEP];//任务堆栈.
unsigned char idata task_sp[MA...
                            
                            
                                分类:
其他好文   时间:
2014-05-18 05:12:43   
                                阅读次数:
339
                             
                    
                        
                            
                            
                                在这之前,你要知道Task就是一个堆栈,栈顶的activity就是当前显示的activity,启动一个新的activity的时,一般直接压入堆栈,并成为当前运行的activity,前一个activity仍然在堆栈中,按下back键时,当前activity出栈,而前一个恢复为当前运行的activity...
                            
                            
                                分类:
其他好文   时间:
2014-05-16 00:40:58   
                                阅读次数:
521
                             
                    
                        
                            
                            
                                这周有位新同事请我帮忙看一个关于信号处理的问题,程序希望在收到一个信号后退出,而他在信号处理方法里却做了许多事,包括释放一些全局内存等。这样问题就产生了,程序不定时的就挂死了,用gdb一看,所有的线程都挂在了pthread_once方法里,而似乎每个线程都在处理信号,其中产生问题的线程堆栈如下:Thread 1 (Thread 0x7f41252f3720 (LWP 31542)):#0 0x00...
                            
                            
                                分类:
其他好文   时间:
2014-05-15 19:33:14   
                                阅读次数:
248
                             
                    
                        
                            
                            
                                中断信号的作用.使CPU转而去运行正常控制流之外的代码.为了它.就要在内核态堆栈保存程序计数器的当前值(eip和cs寄存器).并把与中断类型相关的一个地址放在程序计数器.中断处理与进程切换的差异:由中断或异常处理程序执行的代码不是一个进程,而是内核控制路径.代表中断发生时正在运行的进程执行.其比进程...
                            
                            
                                分类:
其他好文   时间:
2014-05-15 11:36:26   
                                阅读次数:
304