我可以解决“重建”以加载调试器吗?

Posted

技术标签:

【中文标题】我可以解决“重建”以加载调试器吗?【英文标题】:Can I work around "rebuilding" to load the debugger? 【发布时间】:2012-10-19 20:49:14 【问题描述】:

我在 xp 中运行 vs08 试图测试我已经研究了一段时间的 c++ 解决方案。

该解决方案由多个项目组成,我正在研究的其中两个项目分别包含服务器和客户端。我构建了服务器和客户端项目的调试实例来测试它们之间发送的自定义消息。

如果我“重建”(清理 + 构建)整个项目,而不仅仅是“构建”,调试器只能加载已编辑头文件(主要使用模板)的调试信息。如果我尝试“构建”然后调试项目,我在头文件中的所有断点都无法访问,并且我收到警告:

"此断点当前不会被命中。没有可执行代码 与此行相关联。”

但是,如果我“重建”整个项目,调试器就会工作。

我查看了“解决方案属性 > 通用属性 > 调试源文件”,并确保“不查找这些源文件”部分为空白。

我只想“构建”每个项目(小代码更改之间的操作要短得多)以进行调试。 (1) Visual Studio 中的哪些设置可以更改?

请注意,我使用“build”和“rebuild”来指代 Visual Studio 中的功能。我对这些的理解是“重建”删除了.pdb(程序调试数据库)和相关的调试文件,然后生成所需的文件,而“构建”只修改与新代码更改相关的调试文件。 (2) 我错了吗?

【问题讨论】:

【参考方案1】:

我不是 Visual Studio 方面的专家,但问题的原因很可能是因为在编译期间未重新构建特定的源文件。 如果自上次构建项目以来您没有对刚刚添加断点的源文件进行任何更改,那么这次将不会重新构建它。

重建之所以有效,是因为它会清除所有目标文件,然后从头开始构建项目。

要解决此问题,您可以尝试修改您特别要重建的源文件,或者只是从构建目录中删除其目标文件。

【讨论】:

谢谢。当我在一个文件中编辑代码然后“构建”时,该文件中的断点停止工作,直到我“重建”。我似乎找不到目标文件 - 我认为这是因为我正在编辑的文件是一个仅使用模板的头文件,所以没有对象? 如果你修改了一个头文件,那么 VS 应该足够聪明地重建所有相关文件(包含该头文件的源文件)。但我也记得在 SO 上读到一些东西,Visual Studio 有时会弄乱文件上的时间戳并且无法正确构建。

以上是关于我可以解决“重建”以加载调试器吗?的主要内容,如果未能解决你的问题,请参考以下文章

可以从调试器停止并继续执行吗?

调试 Spring 配置

可以从调试器停止并继续执行吗?

如何解决解决方案中现有项目的c#CS0006错误

调试 Spring 配置

调试 Spring 配置