Deploying .PDB files in IIS. Any benefit?

前端 未结 3 1630
暗喜
暗喜 2020-12-04 22:08

I am deploying ASP.NET and Web Service solutions to IIS for a development server. It looks like the last person that did this job deployed all the .pdb file

相关标签:
3条回答
  • 2020-12-04 22:55

    deploying .pdb files is helpful if you wish to remotely debug your application.

    there is an MSDN article here explaining the process

    0 讨论(0)
  • 2020-12-04 22:58

    If you are logging exceptions, then deploying the PDB files ensures that the exceptions include line numbers (so Steven A. Lowe has informed me on many occasions ;) )

    0 讨论(0)
  • 2020-12-04 23:00

    I always figured the .pdb files were only used by the debugger. If the runtime always checks for them for debug info, that should mean slower execution when throwing an exception, because it has to read the .pdb, right?

    So I made a quick test:

    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);
                }
            }
        }
    }
    

    This just recurses 100 levels deep and throws an exception. Now for the runtime results:

    Running as a debug build with the .pdb in the same folder:

    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
    

    Running as a debug build without the .pdb:

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

    Running as a release build with the .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
    

    Running as a release build without the .pdb:

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

    These were run from a regular old command prompt, not inside Visual Studio. So the .pdb definitely does add stack trace info, and slows down the exception handling. Very interesting!

    0 讨论(0)
提交回复
热议问题