Если я правильно понимаю ваш вопрос («прерывание» может вводить в заблуждение), в вашем приложении A есть несколько местоположений, которые могут вызывать dlopen (), и вы хотите знать, из какого из этих местоположений вам звонили.
Прежде всего, это пахнет неправильно, потому что общая библиотека не должна делать предположений о том, кто ее загружает.Если это так, вы можете, например, не запускать ваше приложение в Valgrind, потому что в этом случае Valgrind будет выполнять загрузку вместо стандартного динамического компоновщика, и ваши результаты могут быть испорчены.
Во-вторых, если вам действительно нужно сделатьэто ( почему? ), тогда вы можете взять обратную трассировку в своей функции конструктора.Затем ищите вверх, пока не найдете dlopen (), и в следующем более высоком кадре стека вы найдете функцию, которая называется dlopen.
РЕДАКТИРОВАТЬ: чтобы отобразить адреса в трассировке стека обратно на функции, вам понадобится отладочная информациязадействованных двоичных файлов или любой другой способ сопоставления адресов функций с именами символов.