相关疑难解决方法(0)

优化是否会影响使用其PDB调试VC++应用程序的能力?

为了能够正确调试发布版本,需要一个PDB文件.当编译器使用不同类型的优化(FPO,PGO,内部函数,内联等)时,PDB文件是否会变得不太可用?如果是这样,优化效果是否严重或仅仅导致相邻的代码行混淆?

(我正在使用VC2005,并且总是选择可调试性而非优化性能 - 但问题是一般的)

c++ optimization visual-studio pdb-files

5
推荐指数
1
解决办法
3387
查看次数

MS编译器优化替换函数中的变量?

我不知道如何解释我所看到的行为,但这里有.

我有一个函数foo,它接受三个参数,一个指针,一个int和另一个指针.当我在foo内部断点时,我可以清楚地看到所有变量都是它们应该是的值.但是,当我退出局部变量声明时,其中一个参数(int)突然变为零.但是,函数的其余部分就像原始值一样执行,所以一切都很好.

这不会在完全调试中发生,但会在常规调试中发生.这是某种优化吗?如果是这样,它叫什么,我在哪里可以得到细节?

例:

void foo(void *A, int B, void *C)
{
  // B == 5
  int X = 3;
  char *Y = getSomeStaticString();
  // ... some other variable declarations like the above

  // B, according to the debugger, is now 0
  if (B == 5) {
    // But this still executes
  }
}
Run Code Online (Sandbox Code Playgroud)

c optimization visual-studio-2005

3
推荐指数
1
解决办法
2078
查看次数

为什么我的Release目录中有一个pdb文件?

当我在Visual Studio 2008中构建项目的发布版本时,它会创建一个.pdb文件,例如,对于一个简单的WPF项目,它会生成一个.exe和.pdb文件.

我一直都知道.pdb文件是用于调试的,所以我希望它们在Debug文件夹中而不是Release文件夹中.

并且查看其他StackOverflow问题,pdb文件似乎并不适用于发布版本.

为什么默认情况下在Release文件夹中生成.pdb文件,如何关闭该选项?

debugging visual-studio pdb-files

3
推荐指数
1
解决办法
2376
查看次数