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

Как включить номера строк в трассировку стека без pdb?

В настоящее время мы распространяем приложение WinForms без файлов .pdb для экономии места на клиентских машинах и загрузки полосы пропускания. Когда мы получаем трассировки стека, мы получаем имена методов, но не номера строк. Есть ли способ получить номера строк, не прибегая к распространению файлов .pdb?

4b9b3361

Ответ 1

Вы не можете получить трассировку стека с номерами строк непосредственно из вашего приложения, если вы не свяжете PDB. Однако, если у вас есть файлы PDB для той же версии приложения, которую вы отправляете своим клиентам, и вы не возражаете против легкого сценария, вы можете превратить трассировку стека .NET и смещения IL обратно в номера строк.

В процессе сборки используйте Mike Stall pdb2xml converter, распространяемый как часть его превосходного MDbg отлаживаемый код отладки и сохраните их в определенном месте (например, управление источником). Когда вы получаете трассировку стека от клиента, вы можете запросить смещение IL из данных XML, чтобы определить соответствующий номер строки. Если ваши трассировки стека передаются на веб-сайт, вы даже можете автоматизировать преобразование, чтобы разработчики уже получали полные подробные трассировки стека к тому времени, когда дела попали в их почтовые ящики.

Ответ 2

Нет. Номера строк являются частью отладочной информации, которая сохраняется только в файле PDB. Именно по этой причине файлы PDB существуют в первую очередь.

Ответ 3

Не соответствующий ответ на ваш вопрос, но у меня есть предложение. Вы можете включить механизм ведения журнала и получить эти файлы журналов вместе со следами стека. Если вы включаете номера строк в сообщения журнала, вы можете вручную объединить данные журнала с трассировкой стека.

Если вы не хотите занимать много места, вы можете использовать файлы журнала ограниченного размера, таким образом сохраняются только самые последние сообщения журнала.

Мы используем библиотеку log4net для наших потребностей в регистрации, я рекомендую вам взглянуть.

Ответ 4

Нет, нет. Вся информация, необходимая для сопоставления строк IL с исходным исходным файлом и номером строки, сохраняется в PDB. Невозможно получить эту информацию в трассировке стека без PDB.