一个程序的release版本,在开发环境下按F5启动则一切正常,双击图标启动则出现内存异常(提示信息为:×××指令引用的×××内存,该内存不能为"read")。请问如何调试此类错误?

解决方案 »

  1.   

    ×××指令引用的×××内存?结合生成的.map文件就可以找出出现问题的代码大致在什么位置。
      

  2.   

    debug版本在内存分配的时候会先帮你清空,但是release不会,我们也遇到这样的问题,细心调试一下就可以解决,告诉你个诀窍,你可以把relase版本变成可调试的relase版本,这样好多问题都能很方便的解决
      

  3.   

    对,估计可能是工作目录的影响, ide中默认工作目录是与makefile同一级目录的, 但是release的exe则有多了一层release目录。
      

  4.   

    都不是楼上说的这些情况。我确实是打开一个数据文件并对文件进行操作,数据打开是没有问题的,因为脱离开发环境,程序依然能够计算一部分数据。问题是数据未计算完毕就出错了。
    我的开发环境是vc.net 2003,程序编译为带调试信息的。
      

  5.   

    不单是release版本会独立启动出错,debug版本独立启动也出这样的错误。我查到是数组越界错误,但是对数组操作的代码再三检查都没发现错误。我尝试在可能出错的附近加入记录运行状态的日志文件代码,这样就没有任何错误了,怪。
      

  6.   

    会不会是数组定义的问题,定义了 int a[3],然后使用了a[3] = 3???猜测,尽尽是猜测!
      

  7.   

    Rebuild
    出错之后再调试,看是那里的问题
      

  8.   

    方法提供:1用release调试。
    2生成TXT文件的方式去看断在哪个函数部分。
    3、用微软的DEBUG调试库加进去。就可以知道是哪一行了。(这个估计你弄不出来。麻烦。要下载环境包。)
      

  9.   

    请问vc2003如何设置生成.map文件?
      

  10.   

    项目-->...属性-->链接器-->调试-->生成映射文件-->是(/MAP)