Как «расшифровать» имена методов компоновщика?

Я использую обратную трассировку для печати трассировки стека приложения и получаю что-то вроде

libQtCore.so.4(_ZN11QMetaObject8activateEP7QObjectPKS_iPPv+0x843) [0x7f889d20cf33]
libQtGui.so.4(_ZN7QAction9triggeredEb+0x32) [0x7f889d76c2f2]
libQtGui.so.4(_ZN7QAction8activateENS_11ActionEventE+0xb0) [0x7f889d76d670]
libQtGui.so.4(+0x6242f4) [0x7f889db862f4]

Есть ли способ преобразовать «имена компоновщиков» в «имена источников» и получать номера строк кода из смещений?

Я хочу иметь обратную трассировку, которая выглядит примерно так:

libQtCore.so.4 (QMetaObject::activate(QObject):1022)
libQtGui.so.4  (QAction::triggered()::47) 

UPD.

Я понимаю, что этот метод может работать или не работать или работать плохо из-за особенностей компилятора. Я хочу " demangle »символы компоновщика, по крайней мере, в gcc и visual c ++.

5
задан Arenim 8 December 2011 в 16:19
поделиться