【问题标题】:Why can't I debug?为什么我不能调试?
【发布时间】:2009-02-12 08:52:55
【问题描述】:

当我准备在VS2005中调试C++程序时,程序并没有停在 断点。

VS说“没有为任何调用栈帧加载符号。无法显示源代码”。

我能做什么?

【问题讨论】:

  • 你是在调试exe还是dll?
  • 意外杀死“mspdbsrv.exe”后发生在我身上。当“取消构建”没有响应时,我有时会使用杀死 devenv.exe 的子级来停止 monstruos 构建。
  • 尝试找出另一个实例(例如您的应用程序的发布版本)是否在后台运行!

标签: visual-studio debugging visual-studio-2005


【解决方案1】:

谢谢大家。

终于找到了解决办法here

启用调试:

1) 转到项目->HelloWorld 属性

2) 在左侧展开“配置属性”

3) 展开“C/C++”

4) 在左侧,选择“常规”

5) 在右侧,将“Debug Information Format”更改为“Program Database For Edit And Continue (/ZI)”

5) 在左侧,选择“优化”

6) 在右侧,将“Optimization”改为“Disabled (/Od)”

7) 在左侧,展开“链接器”

8) 在左侧,选择“调试”

9) 在右侧,将“Generate Debug Info”改为“Yes”

10) 点击确定

11) 设置断点

12) 重建您的应用程序

此外,在运行您的应用程序时,使用 Ctrl+F5 来构建和运行它,这会使控制台窗口保持打开的时间足够长,以便您查看输出。

【讨论】:

  • 您可能希望将它们放在此处的帖子中,以防链接移动。
  • 我一直在尝试这个,但 /ZI 与 /clr 和 /clr:pure 不兼容。所以对基于 WinForms 或 .NET 的应用程序没有好处。
【解决方案2】:

尝试几个步骤:

  1. Debug->Step Into(这将确保您在开始后立即停止)
  2. 调试->Windows->模块
  3. 在列表中查找您的 foo.exe。
  4. 检查符号状态。它是否说它已加载?
  5. 如果没有,请转到路径并确保: a) 那里有一个名为 foo.pdb 的文件 b) foo.pdb 上的时间戳与 foo.exe 匹配(或非常接近)

【讨论】:

  • @Steve:Debug目录下没有*.pdb。
  • 那是你问题的根源。它可能是在某个地方生成的。去找到它并把它放在正确的地方。
【解决方案3】:

无论出于何种原因,您在符号路径中都没有正确的符号(.pdb 文件)。这可能有几个原因:

1) 您的二进制文件的编译时间比 .pdb 文件要晚。尝试重新编译所有内容。

2) 您正在尝试调试 .dll 并忘记复制 .pdb 文件。也复制这些文件。

也有可能你的代码没有像你想象的那样被执行。

【讨论】:

    【解决方案4】:

    听起来您是在附加到一个进程而不是运行传统的调试会话?如果您确实附加到某个进程,请务必确保您尝试调试的二进制文件是使用当前在您的 IDE 中打开的相同源代码构建的。

    【讨论】:

    • 错误的源代码仍然会中断,只是在源代码中奇怪的地方。如果没有中断,则可能是符号问题,而不是源代码问题。
    • 如果源代码与源代码不同,它不会中断(我自己注意到了这种行为)
    【解决方案5】:

    完成清理和重建,确保创建 .pdb?

    【讨论】:

      【解决方案6】:

      我在尝试调试单元测试时遇到了这个问题(在 VS 中使用 c#)。

      您可以添加以下代码来启动调试器的新实例,让您可以像往常一样单步执行代码:

      System.Diagnostics.Debugger.Launch();
      System.Diagnostics.Debugger.Break();
      

      【讨论】:

      【解决方案7】:

      只是添加 MainID 尚未涵盖的另一种可能性:

      在调试时,我实际上启动了一些程序,它会调用我想要调试的类(它是某种附加组件)。被调用的程序部分是用非托管 C++ 编写的。当我选中“启用非托管代码调试”时,会出现错误(随后程序崩溃),因为程序没有任何调试信息。

      【讨论】:

        【解决方案8】:

        我通过这样做在 WP7 中解决了这个问题:

        1. 在解决方案资源管理器中右键单击项目 (Ctrl+W+S)
        2. 选择重建。
        3. 再次选择项目,右键单击它并选择部署。
        4. 开始调试 (F5)

        希望对你有帮助!

        【讨论】:

          猜你喜欢
          • 2014-11-24
          • 1970-01-01
          • 2015-06-07
          • 2023-03-16
          • 2016-09-07
          • 1970-01-01
          • 1970-01-01
          • 2012-10-09
          • 1970-01-01
          相关资源
          最近更新 更多