gpt4 book ai didi

.net - 在 IIS 中部署 .PDB 文件。有什么好处吗?

转载 作者:行者123 更新时间:2023-12-02 13:12:39 26 4
gpt4 key购买 nike

我正在将 ASP.NET 和 Web 服务解决方案部署到 IIS 作为开发服务器。看起来最后一个完成这项工作的人也部署了所有 .pdb 文件。我询问了这一点,并被告知如果它们留在服务器上,它们“在日志中提供更好的堆栈跟踪信息”。

这句话有道理吗?我总是把它们抛在后面,从不将它们部署到本地计算机以外的任何地方。

对于内部开发 IIS 服务器(不是生产,外部无法访问)是否有任何理由部署或不部署 .pdb 文件?有什么不好的事情可能发生吗?它们真的提供任何好处吗?

最佳答案

我一直认为 .pdb 文件仅供调试器使用。如果运行时总是检查它们的调试信息,这意味着抛出异常时执行速度会变慢,因为它必须读取 .pdb,对吗?

所以我做了一个快速测试:

using System;
using System.Text;

namespace PdbSpeedTest
{
class Program
{
static void Main(string[] args)
{
DateTime start = DateTime.Now;
try
{
Program p = new Program();
p.Looper(0);
}
catch (NotImplementedException e)
{
Console.WriteLine(e.StackTrace);
}
TimeSpan span = DateTime.Now - start;
Console.WriteLine(span.TotalMilliseconds.ToString());
}

internal void Looper(int x)
{
try
{
if (x < 100)
Looper(x + 1);
else
throw new NotImplementedException("blah!");
}
catch (NotImplementedException e)
{
throw new NotImplementedException("blah!", e);
}
}
}
}

这只会递归 100 层并抛出异常。现在查看运行时结果:

作为调试构建运行同一文件夹中的.pdb:

C:\Work\PdbSpeedTest\bin\Debug>PdbSpeedTest.exe
at PdbSpeedTest.Program.Looper(Int32 x) in C:\Work\PdbSpeedTest\Program.cs:line 37
at PdbSpeedTest.Program.Main(String[] args) in C:\Work\PdbSpeedTest\Program.cs:line 16
31.2504

作为调试构建运行没有.pdb:

C:\Work\PdbSpeedTest\bin\Debug>PdbSpeedTest.exe
at PdbSpeedTest.Program.Looper(Int32 x)
at PdbSpeedTest.Program.Main(String[] args)
15.6252

作为版本构建使用 .pdb 运行:

C:\Work\PdbSpeedTest\bin\Release>PdbSpeedTest.exe
at PdbSpeedTest.Program.Looper(Int32 x) in C:\Work\PdbSpeedTest\Program.cs:line 37
at PdbSpeedTest.Program.Main(String[] args) in C:\Work\PdbSpeedTest\Program.cs:line 16
31.2504

作为发布版本运行.pdb:

C:\Work\PdbSpeedTest\bin\Release>PdbSpeedTest.exe
at PdbSpeedTest.Program.Looper(Int32 x)
at PdbSpeedTest.Program.Main(String[] args)
15.6252

这些是从常规的旧命令提示符运行的,而不是在 Visual Studio 内运行。因此 .pdb 肯定会添加堆栈跟踪信息,并减慢异常处理速度。非常有趣!

关于.net - 在 IIS 中部署 .PDB 文件。有什么好处吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/381537/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com