当前位置: 代码迷 >> C++ Builder >> c++builder 怎么调试
  详细解决方案

c++builder 怎么调试

热度:7395   发布时间:2013-02-26 00:00:00.0
c++builder 如何调试
公司用C++Builder开发的管理软件在退出时不时出现下面的错误:

Access Vilolate at address 40A2A405,Read of address OE6C2794.Process stopped.Use Step or Run to continue.
点了“确定”就出了 “CPU”框:
大概框内容如下
[0x007040a0]=0x00000000 Thread # 0x00000B5C

40A2A405 807A0800       cmp byte ptr [edx+0x08],0x00
40A2A409   7504         jnz +0x04
40A2A40B  33C0          xor eax,eax 
40A2A40D  EB02          jmp +0x02
40A2A40F  B001          mov al,0x01
40A2A411  5D            pop ebp
40A2A412  C20400        ret 0x0004
40A2A415  8D4000        lea eax,[eax+0x00]
dsnapcon60.@Sconnect@TscocketTransport@SetConnected$qqso:
40A2A418  55            push ebp
40A2A419  8BEC          mov ebp,esp
...................................等等 
点前进 都是锁定在 40A2A405 807A0800       cmp byte ptr [edx+0x08],0x00 这行,


请各位大侠教教我这个小菜怎么样来调试?究竟是哪一行出了错,感谢不尽!!


------解决方案--------------------------------------------------------
在debug状态下运行的时候,可以在view->debug windows->modules窗口查看当前项目的模块列表,里面有各个模块相应的地址,根据出错地址40A2A405查一下属于哪个函数,然后再进一步查找原因
------解决方案--------------------------------------------------------
应该是用了多线程,程序退出的时候线程释放顺序不正确,导致有些资源被释放了,后面代码仍在访问 
  相关解决方案