问一个很常见的问题,关于内存访问出错的。(200分)

  • 主题发起人 forgot2000
  • 开始时间
F

forgot2000

Unregistered / Unconfirmed
GUEST, unregistred user!
我的程序产生内存泄露了,我想知道到底是哪句话出错,但Delphi很“智能”化地定位在Delphi自带的源码上了,而我只需要知道是我自己程序的错误究竟是在哪一行呀!有没有什么办法让Delphi忽略掉跟踪Delphi自身源码的功能?让我可以知道我的程序中究竟是哪一行出错?
 
>>但Delphi很“智能”化地定位在Delphi自带的源码上
是你的设置出了问题,正常情况下是忽略自身代码的
你在DEBUG选项里面修改一个设置就可以恢复,
 
project->options->Directories/Conditionals里面,去掉Debug Source Path.
另外,内存泄漏跟内存访问出错是根本不同的两回事,
申请的内存再也没办法找到--称为泄漏
使用了没有申请过的内存--称为非法访问
不要搞错了
 
究竟是哪个设置,楼上的兄弟不要跟我解释术语行不行,我的程序既有内存泄露也有访问非法,
但这个不是重点,我的问题就是怎样才能不跟踪源码,把Debug Source Path去掉也不行,Delphi
还是弹出一个对话框说找不到.pas文件,要求我手动定位该文件,我真的晕倒了!~~~~
 
哦,那可能是你使用了一些控件了,比如INDY我就遇到过,不过你可以这样:
在弹出时选择Inorge,然后按F7,这样的话,程序就会跑到出错的函数的最末了,
这样可以确定是哪个函数/过程内的错,然后在它出错前加断点,就可以知道到底是哪句错了
 
完全不依靠源码就能定位程序中的一切错误是不可能的,就是Visual C++也有一样的问题。
因为Delphi无法确定你会用什么样的方式调用它。
不一定要你去跟踪源码,用Call stack看一看是哪个模块调用了它,就好办了。
另外再看看Project Options里面的Use debug DCU是不是打开了,一般是用不着的。
 
会用Soft ICE 吗?
 
Call stack在哪儿,我根本没有找到呀!按F7不行,光标一直在源码某行"Raise ..."处停
着不动了。我根本不知道到底是哪个过程调用它的。
 
View->Debug Window->Call stack
 
多人接受答案了。
 
顶部