我试图理解为什么在尝试调试我的网站应用程序时,为什么我得到“断点当前不会被命中。此文档没有加载符号”消息(注意:没有Web应用程序,以防万一这很重要)
到目前为止,我发现pdb(项目调试数据库)文件和源代码一样重要,它应该出现在bin文件夹中,但无论出于什么原因文件丢失,只有一些dll被放在那里,实际上整个目录中没有pdb文件。
我的第一个问题是:无论正在开发什么类型的项目,都应该有一个pdb文件。正确的吗?
第二个问题:如何重新创建该文件,或者为了再次调试项目需要执行哪些步骤?
答案 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)
我做了很多事情来尝试纠正这个问题:
通常如果我这样做,然后附加到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文件。
包含您拥有的每个项目的文件夹。
通过以上所有操作,我可以再次调试我的网站。
答案 5 :(得分:0)
除了上面的Resource的答案,即使我正在运行调试版本,我也必须将要调试的项目的Release版本(在我的情况下为NuGet包)设置为'pdbonly'。我还将MyGet用作符号服务器,但是这样做也可以使用本地版本进行调试。我有以下设置:
发布版本上传到MyGet NuGet软件包服务器 调试版本上传到MyGet Symbol服务器