各位大侠:
  有这样一个问题,当程序运行时,突然停掉它,crash了,停在了一个函数里,watch了一下,一个指针成员变量的vfptr看起来是一个正常值,但是vtable中的虚函数查看时,都显示error: expression can't be evaluated, 该函数会进入多次,crash之前,跟进去的话,是可以看到vtable中虚函数的地址的,但crash时,在watch时就变成了expression can't be evaluated, 该指针成员变量其他成员都可以看到值,而且看起来好像也正常。
不知道“error: expression can't be evaluated”提示表明什么现象? 是不是说明该指针成员在其他地方被释放了?但我看了一下没有地方释放它啊。
各位大侠能否给一些指导?
看到的结果类似于下面:
vfptr    0x1088c0c
 [0]     error: expression can't be evaluated
 [1]     error: expression can't be evaluated
 。

解决方案 »

  1.   

    突然停掉它--->是指关闭程序吗? 是的话,那crash很可能是指针啥的释放有问题,更有可能是你说的"是不是说明该指针成员在其他地方被释放了?"了
      

  2.   

    在Output窗口上显示:
    First-chance exception at 0x7c81eb33 in MediaServer.exe: 0x80010105: 服务器出现意外情况。.
    First-chance exception at 0x7c918fea in MediaServer.exe: 0xC0000005: Access violation writing location 0x00000010.
    First-chance exception at 0x7c81eb33 in MediaServer.exe: 0x80010105: 服务器出现意外情况。.
    First-chance exception at 0x0120b4b8 (RtpDll.dll) in MediaServer.exe: 0xC0000005: Access violation reading location 0x01089c0c.
    Unhandled exception at 0x0120b4b8 (RtpDll.dll) in MediaServer.exe: 0xC0000005: Access violation reading location 0x01089c0c.我有个问题,最后一行:0x0120b4b8指的是代码段中代码地址,后面的0xC0000005不知道指的是什么地址?0x1089c0c 就是上面的vfptr    0x1088c0c , 上面写错了,就是vfptr的值,但只vtable中的函数就 expression can't be evaluated各位大侠有何见解?
      

  3.   

    把你 crash的exe等对应的pdb文件一起同dump放到windbg等中间去查看,看出错的call stack