为什么我不能调试?

时间:2009-02-12 08:52:56

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

当我即将在VS2005中调试C ++程序时,该程序并未停止 断点。

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

我该怎么办?

8 个答案:

答案 0 :(得分:20)

感谢大家。

最后,我找到了解决方案here

  

启用调试:

     

1)转到项目 - > HelloWorld属性

     

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

     

3)展开“C / C ++”

     

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

     

5)在右侧,将“调试信息格式”更改为“编辑并继续编程数据库(/ ZI)”

     

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

     

6)在右侧,将“优化”更改为“已禁用(/ Od)”

     

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

     

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

     

9)在右侧,将“生成调试信息”更改为“是”

     

10)点击“确定”

     

11)设置断点

     

12)重建你的申请

     

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

答案 1 :(得分:4)

尝试几个步骤:

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

答案 2 :(得分:3)

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

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

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

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

答案 3 :(得分:1)

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

答案 4 :(得分:1)

完全清理并重建,确保.pdb被创建?

答案 5 :(得分:0)

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

您可以添加以下代码,这些代码将启动调试器的新实例,以便您像平常一样逐步执行代码:

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

答案 6 :(得分:0)

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

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

答案 7 :(得分:0)

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

  1. 右键单击解决方案资源管理器中的项目( Ctrl + W + S
  2. 选择重建。
  3. 再次选择项目,右键单击它并选择Deploy。
  4. 开始调试(F5)
  5. 我希望它会对你有所帮助!