c++ - 如何在 Visual Studio 2013 中每次构建时生成新的 PDB 文件?

标签 c++ visual-studio visual-c++ visual-studio-2013 project-properties

问题:

开发人员希望在每次构建开始时创建新的程序数据库文件 (PDB)。

对于什么场景:

C++热插拔,即时调试,主程序执行代码的DLL代码插件。

最佳答案

解决方案:

  1. 打开您的代码项目。
  2. 打开项目属性
  3. 在左 Pane 中,展开配置属性节点。
  4. 展开链接器节点。
  5. 单击调试节点。
  6. 在右 Pane 中,找到生成程序数据库文件条目。
  7. 将值替换为以下内容:

    $(OutDir)$(目标名称)-$([System.DateTime]::Now.ToString("HH_mm_ss_fff")).pdb

  8. 点击应用,然后点击确定

启动 C++ 热交换(即时调试)模式:

  1. 将两个项目添加到 Visual Studio 2013 中的新解决方案。
  2. 使其中一个项目在构建时生成一个 DLL。
  3. 创建您的程序。
  4. 对于 DLL,编写一个在程序运行时不断被调用的函数。将函数导出到 DLL。
  5. 设置 DLL 项目为每次构建生成新的 PDB 文件。
  6. 编译和构建所有项目。
  7. 在不调试的情况下启动您的程序 (CTRL+F5)。
  8. 更新导出的 DLL 函数。
  9. 构建一次 DLL 项目。 (CTRL+SHIFT+B)。
  10. 您的程序应在第二次构建后立即更新函数的执行。

Demonstration of C++ hotswapping. HTML5 version of the GIF here.

注意:

  • 您可以将以下值添加到项目属性中,以摆脱过多的 PDB 文件。这可以添加到 Build Events 节点中的 Pre-Build Event 条目。

    del "$(OutDir)*.pdb"

关于c++ - 如何在 Visual Studio 2013 中每次构建时生成新的 PDB 文件?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28016220/

相关文章:

c# - 我怎样才能弄清楚刚刚运行的代码是什么?

visual-studio - 回滚整个变更集表示没有回滚更改

c# - 如何通过 C++-CLI 回调和委托(delegate)将字符串从 C++-CLI 传递到 C#

c++ - 模板运算符<未调用

c++ - 引导序列中的多线程应用程序 - C++/Debian

visual-studio - 如何让 Visual Studio 始终重新加载更改的解决方案、项目和文件?

visual-c++ - 如何使用 wchar_t 字符串在 VIsual C++ 中抛出异常?

c++ - MFC 中的文档/ View 体系结构基本上是模型/ View / Controller 模式但没有 Controller 吗?

带有一些实现的c++抽象类

C++:将对象的创建与使用分开(用于测试目的)