【问题标题】:Cannot step into the code while debugging a C DLL file in Visual Studio 2012在 Visual Studio 2012 中调试 C DLL 文件时无法单步执行代码
【发布时间】:2012-11-02 23:34:06
【问题描述】:

我有一个单独的 Visual Studio 解决方案,其中的 DLL 是用 C 编写的。我在另一个解决方案中使用它;在控制台 C++ 项目中。在调试控制台项目时,我进入了一个 DLL 函数。

但是,打开的页面报告 There is no source code available for the current location 调用堆栈位置为 MyConsole.exe!_tailMerge_MyLibrary_dll()。我在控制台项目中使用延迟加载 DLL 文件。当显示无源代码页面时,我检查输出窗口并找到加载的 DLL 行的符号。为什么 Visual Studio 2012 无法单步执行此 DLL 代码?

【问题讨论】:

  • 你的dll是用调试信息构建的吗?
  • 生成调试信息:是 (/DEBUG)
  • 我不确定,但听起来 VS 能够加载 dll,但它不知道在哪里(在您的机器上)可以找到源文件。 dll 包含它需要链接和编译的二进制文件,但它没有物理源文件。我怀疑您需要将构成 dll 的文件导入您的项目并将其指向文件,以便调试器能够让您“单步执行”它们。
  • 我添加了 dll 项目来测试控制台解决方案,但没有任何结果。还是找不到源代码
  • @AlvinWong 那么它需要将 dll 项目添加到 c++ 控制台所在的解决方案中,并将项目引用添加到控制台项目中?

标签: c++ c visual-studio dll visual-studio-debugging


【解决方案1】:

在处理外部项目时,Visual Studio 会询问您是否有代码。如果您取消该过程,请求的文件将被添加到解决方案的列表中,并且它会记住不再请求该文件。

检查您的Solution Property Pages > Debug Source Files。首先,确保您的文件不在不要查找这些源文件:,然后确保将源的位置添加到包含源代码的目录中。这应该有助于解决问题。

【讨论】:

  • 我添加了带有dll源的文件夹没有效果
  • c#控制台项目没有问题
  • 您是否为您的 DLL 生成了 PDB?
  • 无论如何,那在c#测试控制台项目中是行不通的
  • 并通过 step into 浏览其来源?这是不可能的。确保在调试版本中生成了 pdb
【解决方案2】:

我遇到了同样的问题,以下解决了我的问题。我在主项目的属性页面上将“调试器类型”设置为“混合”。我的主要项目是托管代码,而 .dll 是本机的。

【讨论】:

    猜你喜欢
    • 2013-12-19
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-10-18
    • 2013-05-01
    • 1970-01-01
    • 2018-02-03
    • 2013-02-17
    相关资源
    最近更新 更多