VS2015 调试中的一些问题汇总 (3) 0xC0000005: 读取位置 0x00000000 时发生访问冲突


(1) V S一直显示“正在从以下位置***加载符号”的解决办法

进入VS---工具---选项----调试----符号,看右边有个“Microsoft符号服务器”,将前面的勾去掉,(可能还有删除下面的那个缓存)。然后就不会在调试时加载了!

(2) VS 调试时“还没有为该文档加载任何符号”

有的时候调试会出现这种问题:


然后断点就不会中断了。

解决方案:

比较常见的是

1.工具->选项->调试->常规->要求源文件与原始版本完全匹配的勾取消。


2.尝试重新编译项目 , 因为项目未重新编译过的话其中更改的代码就不会生效(这种情况主要在"附加到进程“的调试方法中出现)。

3.依赖项目更改 , 需要重新编译这几个关联项目。

4.别调成Release格式生成了:


用Debug才行:



上述方案可能没有包含全部的解决方法,但该问题最根本的原因,还是因为当前代码的调试信息没有被成功生成到对应的位置下,请根据该原因寻找对应的解决方法。


(3)  0xC0000005: 读取位置 0x00000000 时发生访问冲突
如果你对null 进行操作就会产生空指针异常

Object obj = new Object();

你要知道 obj是一个Object指针变量,指向Object类的一个实例

我们说obj是一个对象 实质是它指向一个对象的首地址 

如果这个指针变量obj 没有指向任何空间 你调用它的方法和属性就会出错

例如 Object obj = new Object();

     obj.equals("123");这个是没错的

但换下面语句 Object obj = null;

     obj.equals("123");就会出现空指针异常
未处理的异常: 0xC0000005: 读取位置 0x00000000 时发生访问冲突

     在使用的过程中,出现了标题中的错误,首先在网上搜了一些方法,费了好大的劲,终于解决了,

关于0xC0000005问题:

0xC0000005: Access Violation错误调试- -

1》数据越界或是定义的指针未释放.

2》空的指针的可能性最大。使用指针前最好能显式的赋值! 
应该是指针的问题

3》内存访问错误,检查指针,是否为空,是否越界等

可能性 3 种 
1: 
char *p; 
p = new char[number]; 
delete [] p; 
.... 
// always using p.... 
p = xxx; // access violation 

2: 
char *p; 
memcpy(p, xxx, number); // access violation 

3: 
char *p; 
p = new char[number]; 
delete [] p; 
......... 
delete [] p; // access violation


~~~~~~~~~~~~~~~~~~~~~~

我发现的问题是如下 lpTexts[9] 定义错误, 不应该用 

LPTSTR lpTexts = new TCHAR(9);   // 问题处,导致程序关闭回收时,空指针错误

应该用:TCHAR lpTexts[9];

配合下面 ini 文件读取的使用,

GetPrivateProfileString(TEXT("RegionSetup"),TEXT("in_Size"),TEXT("0.333"),lpTexts,8, TEXT(".\\specValue.ini"));

~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~









猜你喜欢

转载自blog.csdn.net/guosongye/article/details/80246808