В С++ я знаю, что компилятор может выбрать инициализацию статических объектов в любом порядке, который он выбирает (с учетом нескольких ограничений), и что в общем случае вы не можете выбрать или определить статический порядок инициализации.
Однако, как только программа была скомпилирована, компилятор должен был принять решение о том, в каком порядке инициализировать эти объекты. Есть ли способ определить из компилируемой программы с помощью отладочных символов в каком порядке статические конструкторы будут вызваны?
Контекст таков: у меня есть значительная программа, которая внезапно прервана перед main(), когда она построена под новой инструментальной цепочкой. Либо это статическая проблема с порядком инициализации, либо что-то не так с одной из библиотек, которые она загружает. Однако, когда я отлаживаю с помощью gdb, местоположение сбоя просто сообщается как необработанный адрес без какой-либо символической информации или обратной линии. Я хотел бы решить, какая из этих двух проблем заключается в размещении точки останова в конструкторе самого первого статически инициализированного объекта, но я не знаю, как определить, какой именно объект.