'不会命断点。该文档没有加载任何符号'

问题描述 投票:0回答:1

女士们先生们下午好

我已经在 Stack Overflow 和许多其他网站上寻找解决这个问题的方法,但没有成功。它是在最后一次 VS2019 更新之后开始的,但我(还)不能明确地说更新是问题的原因,因为我在更新后做了一些代码更改。这是用于混合模式 (C++/dotNet) 商业产品的 C++ 附加模块 (dll),因此我无权访问原始 .exe 代码或 .pdb 文件,并且我必须声明该产品具有在十年的使用过程中,它本身从未遇到过任何麻烦。重要的是,在更新之前一切都正常。

环境:

  • Visual Studio 2019 v4.8.09032
  • Windows 11 已完全修补
  • Windows 11 可选更新(如果需要)已完全修补

当前调试设置:

  • 配置属性

  • 调试 |本地 Windows 调试器

  • C/C++ |一般|程序数据库

  • C/C++ |代码生成|多线程调试 Dll

  • 链接器 |调试|生成调试信息

  • 工具|选项|调试|禁用“启用编辑并继续”

无需构建前或构建后步骤。

我尝试过的:

  • 回滚了代码更改
  • 选中配置管理器(x64 调试活动)
  • C/C++ 下可用选项的各种组合 |代码生成|多线程调试 Dll 和链接器 |调试|生成调试信息
  • 工具 |选项|调试|选中和取消选中“仅启用我的代码”
  • 工具 |选项|调试|选中和取消选中“要求源文件与原始版本完全匹配”
  • 删除 .vs 文件夹并重建它
  • 删除了整个解决方案,并从四个月前复制回存档且已知的工作解决方案(解决方案和源文件位于不同的文件夹中)

每次重新编译后,我都会手动删除 .dll、.pdb、.lib 和 .exp 文件,然后再复制新文件,以确保没有文件过时。

附加信息:

  • 该 dll 不再显示在“调试”中 |窗户 |模块,这样我就无法强制加载 .pdb(我猜解决这个问题可能就是问题的答案)
  • “依赖关系”程序表示不存在缺失的链接

有趣的是(或者不是这样!)我发现我在尝试调试问题时测试过的每个项目都遇到了相同的错误。这包括创建新项目和简单地运行旧的存档项目,其中代码已经几个月没有被触及过。

目前无法更新到 VS2022,但一旦当前模块在 VS2019 中完全调试完毕,就必须更新到 VS2022。使用的C++版本是ISO 17;我无法升级 ISO 版本,因为 ISO 20 不再支持旧版 C 代码,而且我无法降级它,因为使用了 ISO 17 附带的一些 C++ 更新。

感谢您的阅读。

c++ dll c++17 symbols breakpoints
1个回答
0
投票

我不知道为什么下面的方法有效,但它确实有效。

  • 项目下 |属性 |配置属性|调试将命令设置为可执行文件的路径(即它是硬编码的而不是 $(TargetPath))
  • 重建项目
  • 将 dll、pdb、exp 和 lib 文件复制到可执行文件期望找到它们的文件夹中
  • 启动了可执行文件(项目中的一些dll按需加载,不再需要时卸载)
  • 而不是调试 |附加到进程,我点击本地 Windows 调试器绿色箭头,只是为了看看会发生什么

调试 |窗口|模块突然充满了额外的 dll - 包括我的 - 并且立即命中断点。

© www.soinside.com 2019 - 2024. All rights reserved.