首页 > 代码库 > IsBadReadPtr|IsBadWritePtr调试崩溃

IsBadReadPtr|IsBadWritePtr调试崩溃

遇到一未找到必然出现条件的崩溃,不知道什么时候能触发崩溃,崩溃dump显示,试图访问了非法的内存或者写入了非法的内存

此时如下两个函数就比较有用了:

 

[cpp] view plaincopy
 
  1. BOOL WINAPI IsBadReadPtr(  
  2.   __in  const VOID *lp,  
  3.   __in  UINT_PTR ucb  
  4. );  
  5.   
  6. BOOL WINAPI IsBadWritePtr(  
  7.   __in  LPVOID lp,  
  8.   __in  UINT_PTR ucb  
  9. );  


可以用这两个函数在崩溃附近的地方加上判断,附加进程打断点或者记日志,运行程序崩溃的时候会立马断下来,这是就很容易分析崩溃的原因了!

 

经验:不容易必然重现的崩溃,在分析dump毫无头绪的情况下,思路应该是,1>从dump与日志分析,努力寻找必然崩溃的条件,2,增加必然崩溃的代码,分析dump