没有加载符号并且缺少pdb文件

时间:2012-01-20 21:48:59

标签: asp.net visual-studio-2008 pdb-files

我试图理解为什么在尝试调试我的网站应用程序时,为什么我得到“断点当前不会被命中。此文档没有加载符号”消息(注意:没有Web应用程序,以防万一这很重要)

到目前为止,我发现pdb(项目调试数据库)文件和源代码一样重要,它应该出现在bin文件夹中,但无论出于什么原因文件丢失,只有一些dll被放在那里,实际上整个目录中没有pdb文件。

我的第一个问题是:无论正在开发什么类型的项目,都应该有一个pdb文件。正确的吗?

第二个问题:如何重新创建该文件,或者为了再次调试项目需要执行哪些步骤?

6 个答案:

答案 0 :(得分:7)

你必须有可编译的代码来获取pdb。这听起来像你。

通常情况下,您将构建设置为“Release”而不是“Debug”。

http://msdn.microsoft.com/en-us/library/wx0123s5.aspx

如果要创建Web应用程序,则配置文件也可能具有“零售”设置。如果设置为true,则即使在构建配置中另有说明,也始终处于“释放”模式。

http://msdn.microsoft.com/en-us/library/ms228298(v=vs.80).aspx

答案 1 :(得分:4)

我做了很多事情来尝试纠正这个问题:

  • 清除临时ASP.NET文件(C:\ Windows \ Microsoft .NET \ Framework {version} \ Temporary ASP.NET files {site}(您将需要退出Visual Studio以及指向开发站点的任何Web浏览器)
  • 启动任务管理器并右键单击W3WP.EXE进程,选择SET AFFINITY并取消选中除一个CPU之外的所有进程

通常如果我这样做,然后附加到W3WP进程进行调试,断点将被填入并且我可以单步执行我的代码。

答案 2 :(得分:1)

我刚遇到这个问题,结果发现我的web.config设置为debug = false 确保web.config中的编译debug = true

<compilation defaultLanguage="vb" debug="true" batch="false" targetFramework="4.0">
  <assemblies>
    <!-- add references to gac assemblies here-->
  </assemblies>
</compilation>

答案 3 :(得分:1)

要在Release中生成.pdb文件,您需要设置项目的属性:

编译\高级编译选项\生成调试信息=&gt; 'pdb-only'或'Full'

打包/发布Web \排除生成的调试符号=&gt;解开这个

答案 4 :(得分:0)

在我寻求解决问题的过程中,我找到了这个:

首先,就像Adrian Iftode所说,在网站案例中,文件后面的代码是由ASP .Net编译的,而不是由VS编译的,因此bin文件夹中没有dll和pdb文件。

  • 所以我删除所有临时文件: windows \ Microsoft .NET \ Framework \ v2.0.50727 \ Temporary ASP.NET files \

包含您拥有的每个项目的文件夹。

  • 从iexplorer
  • 删除所有临时文件
  • 在项目的IIS属性\ Directory \ Configuration \ Debugging \中,选中Debugging flags下面的两个选项。

通过以上所有操作,我可以再次调试我的网站。

答案 5 :(得分:0)

除了上面的Resource的答案,即使我正在运行调试版本,我也必须将要调试的项目的Release版本(在我的情况下为NuGet包)设置为'pdbonly'。我还将MyGet用作符号服务器,但是这样做也可以使用本地版本进行调试。我有以下设置:

发布版本上传到MyGet NuGet软件包服务器 调试版本上传到MyGet Symbol服务器