【问题标题】:Problem setting breakpoint in a DLL for an attached process using Visual Studio 2019使用 Visual Studio 2019 在 DLL 中为附加进程设置断点的问题
【发布时间】:2019-05-27 21:57:43
【问题描述】:

我正在使用 Autodesk Fusion 360 插件示例“SpurGear”。调试插件涉及附加到 Fusion 360 进程并在本机 C++ DLL 中设置断点。使用 Visual Studio 2017 可以按预期工作,在调试器中的断点行停止。在 VS 2019 中使用相同的项目和重现步骤,调试器不会触发断点并直接流过。

VS 2019 对该项目所做的唯一升级更改是添加了 WindowsTargetPlatformVersion 10.0 以及从 v140 到 v142 的 PlatformToolset 更改。

我找不到恢复正确行为所需的任何新编译器/链接器设置。也许这是 VS 2019 中的一个错误?!有没有让这个调试场景在新的 VS 中工作的经验?

【问题讨论】:

  • 将平台改回 VS 2017 的平台,但仍在使用 VS 2019 有什么影响吗?
  • 撤消 VS 2019 所做的更改(删除版本 10 行并将 v142 更改回 v140)后,它仍然无法命中断点。所以这似乎不是编译器/链接器的问题。
  • 嗨,Scott,无论是使用平台工具集 V140 还是 V142,项目都可以成功重建吗?如果你在VS2017中打开项目并调试它,结果如何?(我想知道你是否对解决方案做了一些更改)
  • 嗨兰斯。我已经在 VS 2019 中尝试了这两个工具集,结果相同。 v142 工具集在 2017 年不起作用。请查看我的答案/解决方案,因为您可能有关于如何通过 Python 强制 C++ 调试器的反馈,如果这确实是问题。否则我实际上可能已经发现了一个 VS 2019 问题。不希望必须卸载功能来调试此方案。

标签: debugging visual-studio-2019


【解决方案1】:

我终于通过使用 Visual Studio Installer > Modify 从 Visual Studio 2019 中卸载“Python 开发”解决了这个问题。

我只能推测,由于 Fusion 360 支持 Python,VS 2019 以某种方式感觉到并选择了错误的调试器。如果这是问题所在,也许有某种方法可以强制使用 C++ 调试器?!奇怪的是,在我还安装了 Python 开发的 VS 2017 中可以进行调试。

【讨论】:

  • 是的,“感觉”功能确实存在。 VS 必须猜测这十多个调试器引擎中的哪一个最适合您在“附加”对话框中选择的进程。他们可以检测 Python 代码,这有点值得注意,但他们确实一直在努力让它变得更智能。您可以单击“选择”按钮来覆盖其选择。
  • @HansPassant:您能详细描述一下您所引用的“选择按钮”吗?我不明白你的意思。谢谢!同样奇怪的是,有些东西在版本之间改变了这种行为。
猜你喜欢
  • 1970-01-01
  • 2018-06-12
  • 1970-01-01
  • 1970-01-01
  • 2016-11-12
  • 2021-11-21
  • 2021-01-09
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多