Немного предыстории. Я создал это приложение на своем компьютере для разработки (Windows 11), собрал его на сервере сборки (Windows 10 22H2) в режиме выпуска и запустил на третьем компьютере (Windows 10 1607).
Затем я собрал дамп после сбоя (большой дамп - тип "2"), который был создан, когда я настроил HKLM\SOFTWARE\Microsoft\Windows Error Reporting\LocalDumps в реестре, вернул его на свою машину и скопировал PDB и EXE с сервера сборки.
Теперь я открываю файл дампа в Visual Studio 2019, и он показывает мой код, и программа остановлена. на линии сбоя, показывая правильное исключение. См. ниже (я скопировал снимки экрана, а не прямой код, чтобы вы могли видеть номера строк).
[img]https:/ /i.sstatic.net/b3RlO6Ur.png[/img]
Когда я просматриваю стек вызовов, он показывает, что он остановился на строке №50 в моем классе Crasher, который правильно — см. код ниже.

однако там указано, что он был вызван из строки №27 класса Program.Main(). На самом деле строка, содержащая вызов функции, имеет номер #25. Опять же, см. ниже.

Самое смешное: если я просматриваю сведения об исключении, трассировка стека правильно указывает на строку №25!
Почему стек вызовов выдает неправильный номер строки? Файлы кода не изменились после копирования на сервер сборки (там тоже строка №25).
Подробнее здесь: https://stackoverflow.com/questions/790 ... ine-number
Мобильная версия