2013-09-29 3 views
0

Я ищу способ получить имя текущей функции из информации о кадре в GDB. Это возможно? Если да, как я могу найти другие переменные, заданные для определенного фрейма?Gdb получить имя функции кадра

В основном, я получил то же имя, которое отображается в начале каждой строки при запуске команды bt.

+0

Что вы подразумеваете под 'get'? Получить в скрипте? Через API? Привязан к ноге несущего голубя? – bmargulies

+0

Доступ к нему для сравнения в блоке 'define'. Получите что-то, что я могу сравнить с адресом или строкой имени в скрипте gdb. – viraptor

+0

В последнее время у gdb есть поддержка Python. Я не знаю точное api, чтобы получить имя фрейма, но вы можете начать с поддержки python ... – tristan

ответ

3

Использование обычного gdb CLI это можно сделать только с большим трудом. Вы должны использовать ведение журнала для записи вывода «frame» в файл; затем обработайте файл, чтобы извлечь имя и превратить его в скрипт gdb; затем «исходный» полученный скрипт.

Если у вас есть gdb с поддержкой Python, то это легко. Используйте gdb.selected_frame(), чтобы получить выбранный кадр. Тогда имя в символ функции фрейма:

name = gdb.selected_frame().name() 

В случае необходимости вы можете выставить это интерфейс командной строки различными способами; но простейшим является, вероятно, обернуть его в удобной функции. Для получения дополнительной информации см. Документацию.

Смежные вопросы