Подтвердить что ты не робот

Развертывание .PDB файлов в IIS. Любая выгода?

Я развертываю решения ASP.NET и веб-службы для IIS для сервера разработки. Похоже, что последний человек, который выполнил эту работу, также развернул все файлы .pdb. Я спросил об этом, и мне сказали, что они "обеспечивают лучшую информацию о трассировке стека в журналах", если они оставлены на сервере.

Есть ли в этом правда? Я всегда оставил их, никогда не развертывая их нигде, кроме локальной машины.

Для внутренней разработки Сервер IIS (а не для производства, недоступный для внешнего мира) есть ли какие-либо причины для развертывания файлов .pdb или нет. Есть что-то плохое, что может случиться? Действительно ли они приносят какую-либо пользу?

4b9b3361

Ответ 1

Если вы регистрируете исключения, тогда развертывание файлов PDB гарантирует, что исключения включают номера строк (так что Стивен А. Лоу неоднократно сообщал мне;))

Ответ 2

Я всегда думал, что файлы .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 уровней и создает исключение. Теперь для результатов выполнения:

Выполнение debug сборки с.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

Выполнение release с с.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 определенно добавляет информацию о трассировке стека и замедляет обработку исключений. Очень интересно!

Ответ 3

развертывание файлов .pdb полезно, если вы хотите удаленно отлаживать ваше приложение.

есть статья MSDN здесь, объясняя процесс