DLL为何无法调试? (100分)

  • 主题发起人 主题发起人 10End
  • 开始时间 开始时间
1

10End

Unregistered / Unconfirmed
GUEST, unregistred user!
我编写的DLL在编译完运行时,程序无法在断点处停下,这是为什么呢?我有设Debug信息,
可执行文件是另一项目组编写的。
 
请详细说明
 
就是普通的用Delphi编写的DLL,不论我在哪里设断点,选择RUN调用DLL,程序都不会停下来,
好像没在编译环境中运行那样,不知道为什么?
 
当然,DLL怎么通RUN呢,它要用一HOST程序调用才行,比如写ISAPI,要把IIS调入作HOST,
在DLL里放断点,运行HOST程序即可
 
你在run的params中设置运行参数了吗?
 
run的params中设置运行参数了,就是要调用这个DLL的程序,并且成功地调用了这个DLL,
只是没有中断下来
 
奇怪,因该可以调试的,代码贴出来看看
 
好大的代码,估计在设置上……唉:(,估计有经验者会知道
 
也许你设置断点的地方根本就是没编译到的地方。你多设置几个断点,一步一步跟踪看看
 
cacao_cacao:
我设了一串断点都不起作用
另外我的DLL是HOST程序根据数据库配置动态调用的,不知道是不是这个原因,Delphi没这功能
 
你的Host程序所调用的Dll必须为你正在编译调试的dll.所以你的问题很可能是
你的Host程序所调用的Dll不是你正在编译调试输出的Dll,如:
假如你正编译Dll为Test.Dll,输出路径为D:/Test/
而Host调用D:/Test.dll(可能你把Dll移到D:/目录下),这样Host调用的Dll
实际上不是你正在编译的Dll.
 
RUN -> Parameters -> Host Application -> Load!
 
李崇文说的有道理,既然你设的一大串端点都没有起作用,就很有可能是该DLL跟本就没
被主程序调用
 
首先选择dll的项目,RUN -> Parameters,在host application输入调它的那个exe,
点Load也行,直接运行另一个项目也行,我就是这样调行的,怎么样,给分吧?
 
李崇文:
是我的DLL,因为硬盘上只有这么一个TEST.DLL,没有其它。另外,我在程序中加上
showmessage('test');马上也显示了,可就是没停下来。
 
xianjun,marknew:
你们说的我都做了,就是停不下来:(
 
把PROJECT OPTIONS的COMPILER的选项都选上试试
 
一定是你的输出路径有问题
 
把PROJECT OPTIONS的COMPILER的选项都选上,能正确运行路径肯定没问题。:(
 
后退
顶部