visual-studio - 使用/clr 编译的 C++-CLI 库调试 C 可执行文件

标签 visual-studio visual-studio-2010 c++-cli

我正在使用 Visual Studio 2010 调试主要用 C 编写的应用程序。通常,我可以很好地附加调试器,但是当我链接到用 C++/CLI 编写的库时遇到了一些问题。

如果我用 /clr 编译库标志(我最终将不得不为此做尚未编写的库)然后我失去了调试整个 C 应用程序的所有能力,即使是与库调用无关的部分。我得到了一个带有黄色三角形和感叹号的空圆圈,应该是一个红色的断点圆圈。将鼠标悬停在它上面只会给我一个工具提示,上面写着“断点当前不会被命中。没有可执行代码与此行相关联。可能的原因包括:条件编译或编译器优化。”

然后,如果我链接到没有 /clr 编译的完全相同的库标志,我再次能够调试我的应用程序。

我知道 Visual Studio 不太可能调试用 C++/CLI 编写的库,这没关系。我只想保留调试应用程序其余部分的能力,至少可以看到我调用外部库的结果。

另一个复杂的因素是这个项目不是由 Visual Studio 构建的。它是使用使用 cl 的外部 make 系统编译的。 ,所以我可以自定义任何需要以这种方式发送给编译器的命令。

有谁知道为什么我目前不能按照我想要的方式调试库?关于我怎么做的任何建议?

最佳答案

附加时必须选择调试器的类型。请注意对话框中的“附加到”标签。按 Select 按钮并勾选“Native”以获得对调试 native 代码的支持。还需要在您的任何断点命中之前加载 DLL。如果您不确定是否已完成,请查看 Debug > Windows > Modules 调试器窗口以查看加载的 DLL。一旦调试器看到 DLL 加载并设置断点,断点指示器就会从空心变为实心红色。

否则支持调试 C++/CLI,您可以勾选“托管”和“ native ”复选框。并在任何一种代码中设置断点。唯一不支持的是从托管代码到 native 代码并返回的单步执行。需要模式开关来激活正确的调试引擎,这需要代码命中断点。

并考虑您 native 项目中的调试选项,您可以指定一个 EXE 来启动。这样您就可以简单地按 F5 开始调试并跳过附加麻烦。

关于visual-studio - 使用/clr 编译的 C++-CLI 库调试 C 可执行文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10214144/

相关文章:

javascript - 用于 JavaScript/VBScript 的 Visual Studio 项目模板?

c# - 如何获取项目之间共享的app.settings文件的相对文件路径

c++ - VS2010 LoadFrame 在 Release模式下失败并出现错误 1401

c++ - Visual C++ 错误 "cannot convert parameter 1 from ' HANDLE' to 'HANDLE &' "

c# - ReSharper 表示 Console.ReadLine() 返回空值

c++ - 尝试将 SDL 2 与 Visual Studio c++ 一起使用

c++ - C++应用程序在VS2010和VS2008中的性能

visual-studio-2010 - TFS 2010、VS 2010 并将分支转换为文件夹

.net - C++/CLI 终结器和运算符

.net - 使用 C++/CLI 包装非托管 C++ 类库 - 问题 2 - 集合