【问题标题】:Debugging a DLL through a program通过程序调试 DLL
【发布时间】:2013-09-13 17:29:08
【问题描述】:

所以我有一个开源项目,我对其进行了更改并生成了一个 dll。

接下来我在我的一个项目中使用了那个 dll。

但是我所做的更改存在一些问题,所以我想在我的 dll 代码中应用一些断点,以便检查一些变量值。

是否可以在 DLL 中应用断点,然后当我的程序使用该 dll 进行函数调用时,我放置的 dll 源中的断点被激活。

我已经搜索了互联网,这真的很混乱,因为我是新手,所以我真的不知道如何继续。

我只是想激活我在源中插入的断点。

【问题讨论】:

  • 如果您正在修改 DLL 的代码,为什么不将代码包含在您的解决方案中并将其用作项目参考?然后调试它就像您解决方案中的任何其他项目一样。
  • 嗯,这个项目真的很大,本身对其他开源项目有很多依赖。
  • 好的,但无论如何你已经在修改和重新编译它了。所以你已经解决了这些依赖关系。
  • 由于项目如此庞大和复杂,我想我将在我的应用程序解决方案中包含整个 dll 解决方案。是对的和可能的吗?
  • +1 干得好,清楚你在寻找什么并能够传达它!

标签: c# .net debugging dll


【解决方案1】:

我会将这两个项目一起添加到一个解决方案中,并为您的项目中的开源项目创建一个project reference。完成后,您可以在开源项目中的任何位置设置断点,它会像您的项目一样中断。只要确保一切都处于debug 模式。

【讨论】:

  • 我自己也得到了同样的解决方案 :)
【解决方案2】:

你调试一个进程。要么用调试器启动你的程序,要么在之后附加它。然后在 DLL 中的代码或函数上设置断点。

一些调试器允许您在模块加载之前在模块上添加断点(比如您的 DLL 在进程执行的后期加载)。

【讨论】:

  • 所以我在 dll 源中设置的断点一旦使用它们的进程从调试器开始就会被激活?
  • 从调试进程开始。然后在 DLL 中的代码上设置断点。如果 DLL 尚未加载,则根据调试器的不同,您可能必须等待设置断点,直到 DLL 在内存中。
猜你喜欢
  • 2011-12-25
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2014-02-07
  • 1970-01-01
  • 2012-06-10
  • 2010-09-13
  • 2015-07-31
相关资源
最近更新 更多