【问题标题】:Debugging C# to Intel C++ in different projects在不同的项目中调试 C# 到 Intel C++
【发布时间】:2011-09-10 04:03:46
【问题描述】:

这里与这个问题类似:

Old Question about C# debugging

我正在尝试在 Visual Studio 2008 中调试一个在多个项目中使用并使用 Intel 的 C++ v 11 编译器(即,不是标准编译器)编译的库。我用来调试的当前平台是 C#通过 p/invoke 调用 C++ 方法的程序。

除了在 C++ 代码中启动一些巨大的循环并将调试器附加到进程之外,有没有办法调试到 C++ 代码(已在调试模式下编译)?现在,C# 代码正好跨过 C++ 调用。

我已经设置了它,以便我可以调试托管和非托管/本机代码,以及调试“不是我的代码”,但这些设置似乎无关紧要。

我真的非常想避免将 C++ 项目添加到 C# 项目中;正如我所说,它是一个被多个程序调用的库,因此这样做会对其他程序和维护产生严重后果。

【问题讨论】:

  • 我现在遇到了同样的问题。你知道怎么做吗?

标签: .net c++ debugging


【解决方案1】:

我记得在 WPF 开发的早期(项目本身,当时我在 MSFT),我们不得不使用两个调试器,用于本地代码的 WindDbg 和 .Net 独立调试器(不记得了所谓的)并在两者中设置断点。不确定 VS 是否支持。

【讨论】:

  • 您不能将两个调试器附加到同一个进程。所以这在这里行不通。
【解决方案2】:

答案:为dll设置调试可执行文件和运行目录,然后尝试从dll作为单独的项目进行调试。即在一个 sln 文件中加载 intel 项目,然后将 C# 项目放在另一个 sln 文件中。

然后,当您尝试通过 f5/调试按钮调试 dll 时,可执行文件将启动,并且代码将执行,直到您设置的断点为止。

确保有一个后期构建步骤将 dll 放入与 C# 可执行文件相同的目录中;否则,dll 将与实际运行的代码不同步,结果会很奇怪(即断点未对齐等)。

此外,使用这种方法,您将失去编辑并继续(或者,如果有办法保留它,我不知道),但至少您可以调试。

(为@Dmitri Nesteruk 发布的答案)

【讨论】:

    猜你喜欢
    • 2014-06-01
    • 2014-11-19
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多