Если указать причину выбора .a / .so, 'addr2line' должен использоваться с исполняемым двоичным файлом. Причина в том, что адреса обратной трассировки являются специфическими для двоичного файла.
Одна и та же статическая (.a) библиотека обычно загружается по разным адресам в разных двоичных файлах. Это верно для '.so' (особенно для позиционно-независимого кода), но во многих случаях Linux пытается повторно использовать уже отображенные файлы '.so', так что фактические адреса совпадают.
Нижняя строка - из man-страницы - используйте имя исполняемого файла.
--exe=filename
Specify the name of the executable for which addresses should be translated.
The default file is a.out.
Некоторые практические замечания - при использовании .so - вы хотите выполнить addr2line в системе, которая имеет такие же исполняемые, общие объектыи LD_LIBRARY_PATH. Если в вашей разработке и на производстве есть разные «.so», адреса могут не совпадать.