zoukankan      html  css  js  c++  java
  • Delphi

    网上看到很多人问delphi中如何调试 DLL 的,众大侠回答也基本一致,但是,我使用时却时灵时不灵,今天发现了原因。

    完整的调试 DLL方法如下:

    1)新建一个 DLL 工程,名字就叫 MyDll 吧,编译后生成 MyDll.dll,我们要调试的就是它了。

    2)新建一个用来调试 MyDll 的 Application 工程,名字就叫 MyDllTest 吧,编译后生成的可执行性文件为 MyDllTest.exe,这就是我们用来调试 MyDll.dll 的宿主程序

    3)MyDllTest.exe 所在目录中不能有 MyDll.dll(重要!)

    4)MyDllTest 采用静态调用的方法调用 MyDll.dll 的导出函数(重要!)

    5)进入 MyDll 工程,执行菜单“Run”->“Parameters”,将弹出的对话框的 Local 页中的“Host Application”设置为上面的 MyDllTest.exe(含路径)

    完成以上步骤,就可以在 MyDll 工程中执行“Run”了,也可以进行调试。

    以上3)、4)、5)为重点,第三点在大多数网上的解答中都没有提到,也是我使用时时灵时不灵的原因(不清楚这个原因前,我还特地把 MyDll.dll 复制到 MyDllTest.exe 所在目录下,导致调试不能进行)。

    在网上有人提到要把工程配置中的“Directories/Conditions”页中的“Output Direcotry”清空,也就是说输出目录要为工程文件所在目录,我试了一下,将其设置为“./bin”,也同样完全可以调试,因此输出目录是什么无关紧要。

    [ 补充 ] 还要注意的是,调试 dll 的时候,被调试的 dll 和宿主程序不能在同一个 Project Group中,也就是说,你不要把 dll 和宿主程序放在同一个 Project Group中再进行调试,一定要单独打开 dll 工程进行调试。否则,调试也会不成功。 (2006-12-04 新发现)

    补充:(源于fengzhizhu大侠的回复)如果上述方法不管用,那么关闭工程,然后再打开要调试的工程,一般即可。

    ---------------------------------------------------------------------------------------------------------------

    其实,"时灵时不灵",是由于DELPHI的"活动路径"造成的.楼主说的方法固然可行,但在下觉得不是根本原因.
    所谓"活动路径",就是在DELPHI中在代码中最后打开过的文件所在的文件路径,如果该路径不是你要调试的DLL所在路径,你设的断点一般是不会被中断的.当你通过打开该DLL的PAS后,再调试,此时即可以中断了.

    参考:

    https://blog.csdn.net/niniu/article/details/1420472

  • 相关阅读:
    C#实现通过拼多多分享微信公众号实现查询优惠券、佣金比率
    淘宝客常用接口整理
    京东联盟开发(1) 商品SKUID采集
    Grafana 安装及 Windows 应用程序服务配置工具 NSSM使用
    Windows Server 2008R2 配置网络负载平衡(NLB)
    IIS 日志分析工具:Log Parser Studio
    curl: (25) Failed FTP upload: 550 解决方案
    搭建TFS 2015 Build Agent环境(四)
    Dump中查看dictionary信息的方法
    Dump中查看DataTime时间方法
  • 原文地址:https://www.cnblogs.com/sunylat/p/13927979.html
Copyright © 2011-2022 走看看