Странность GDB - PullRequest
       20

Странность GDB

2 голосов
/ 23 декабря 2010

Я получаю эту странную обратную трассировку (иногда):

(gdb) bt
#0  0x00002b36465a5d4c in AY16_Loop_M16 () from /opt/intel/mkl/10.0.3.020/lib/em64t/libmkl_mc.so
#1  0x00000000000021da in ?? ()
#2  0x00000000000021da in ?? ()
#3  0xbf3e9dec2f04aeff in ?? ()
#4  0xbf480541bd29306a in ?? ()
#5  0xbf3e6017955273e8 in ?? ()
#6  0xbf442b937c2c1f37 in ?? ()
#7  0x3f5580165832d744 in ?? ()
...

Есть идеи, почему я не вижу символы? Скомпилировано с отладочными симами конечно. Тот же сеанс дает символы в других точках.

Ответы [ 2 ]

3 голосов
/ 28 декабря 2010

Скорее всего AY16_Loop_M16() в libmkl_mc.so было написано на ассемблере и не имеет правильных дескрипторов размотки, которые необходимы для правильной размотки GDB стека на x86_64 (при отсутствии указателей на фреймы).

Лучше всего связаться с Intel и попросить их добавить правильные дескрипторы раскрутки.

Вы можете получить лучшие результаты, если установите точку останова в начале AY16_Loop_M16 - если она вызывается из C(или любой другой не ассемблерный язык), есть вероятность, что вы получите разумную трассировку стека при входе.

0 голосов
/ 23 декабря 2010

Хотя ваш код может быть скомпилирован с символами отладки, это может не относиться к общим библиотекам Вам может потребоваться установить отладочные версии этих библиотек, чтобы получить эти символы.

Вы все еще можете использовать GDB для отладки вашего собственного кода. Просто игнорируйте неизвестные местоположения и ищите ваши собственные вызовы функций в обратном следе. Скорее всего, проблема не в общих библиотеках.

...