Как получить трассировку стека от точки трассировки? (GDB) - PullRequest
3 голосов
/ 14 февраля 2011

Согласно этим документам невозможно получить полную трассировку стека от точки трассировки, но можно получить частичную трассировку, записав часть стека.

Как мне это сделать?

Ответы [ 2 ]

5 голосов
/ 14 февраля 2011

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

1 голос
/ 14 мая 2014

Для дальнейшего использования, я только что нашел что-то связанное с этим в документации по gdb 13.1.10 Ограничения точек трассировки , которая говорит, что невозможно собрать результат команды backtrace в точке трассировки, но можно собрать стек, читая что-то вроде *(unsigned char *)$esp@300. Возможно, вам придется немного адаптироваться: вам может потребоваться прочитать больше байтов, а указатель стека может иметь другое имя (rsp для x86-64) В противном случае:

>collect *(unsigned char *)$esp@300
'esp' is a pseudo-register; GDB cannot yet trace its contents.
...