【问题标题】:How can I debug into an Intel C++ library from managed code?如何从托管代码调试到英特尔 C++ 库?
【发布时间】:2011-11-13 23:20:54
【问题描述】:

我有一个 C#/NUnit 测试调用使用英特尔 C++ 编译器(版本 12,我相信)编译的 C++ 库。我有 PDB,禁用“只是我的代码”,启用非托管代码调试。尽管如此,普通的调试还是行不通——它说它没有源代码,也没有提供解体显示。

另外:我在处理这个问题时经常遇到 VS2010 崩溃的问题。

只是好奇有没有人遇到过这个问题。

【问题讨论】:

  • 使用 Visual Studio 或其他调试器?

标签: c# c++ debugging unmanaged intel


【解决方案1】:

没有神奇的解决方案。您需要源代码才能在源代码级别逐步执行代码。

您应该能够单步调试汇编代码,但根据您的 ASM 熟练程度,这可能不是很有帮助。 ;)

如果您无权访问源代码,您只需要尽您所能,调试您可以看到的代码。

【讨论】:

  • 啊。如果无法自动找到 PDB 和源,调试器是否不会显示选项?
  • “浏览查找来源”选项已禁用
  • 这可能是因为它找不到 PDB。
【解决方案2】:

PDB 文件需要位于加载程序集的同一目录中。 NUnit 将测试 dll 复制到一个临时目录并从那里加载它——它是否复制了 PDB。

一种检查方法是使用 ProcMon(它可以显示所有文件访问)并过滤 PDB 文件以查看它试图从哪里加载它。 ProcMon 可从 MS 免费获得:

http://technet.microsoft.com/en-us/sysinternals/bb896645

【讨论】:

  • 不,PDB 与其他测试程序集一起存储。
  • 1.安装 Procmon。 2. 运行它并将过滤器设置为包含以 .pdb 结尾的文件 3. 在调试器中运行 NUnit。 4. 注意 PDB 文件是从哪里加载的——它们在那里吗?
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2010-09-18
  • 2011-01-31
  • 2011-04-29
  • 2013-12-29
相关资源
最近更新 更多