Если вы используете недавний gdb (7 и выше), вы можете поиграть с поддержкой Python, которая довольно обширна (и, вероятно, куда вы хотите пойти при определении gdb-скриптов в целом). Я не эксперт в этом, но для тестовой программы / tmp / xyz я мог бы использовать:
(gdb) python print gdb.current_progspace().filename
/tmp/xyz
См. http://sourceware.org/gdb/current/onlinedocs/gdb/Python.html для получения дополнительной информации о поддержке Python.
В "обычном" gdb вы могли бы получить имя процесса с помощью "info proc" и "info target", но я думаю, вы хотели, чтобы он не просто печатался, но имел возможность использовать его дальше в скриптах? Не знаю, как вывести значение из среды выполнения Python в переменную GDB, кроме крайне уродливого «использования файлов журналов и его поиска и надежды на лучшее». Вот как это можно сделать:
define set-program-name
set logging file tmp.gdb
set logging overwrite on
set logging redirect on
set logging on
python print "set $programname = \"%s\"" % gdb.current_progspace().filename
set logging off
set logging redirect off
set logging overwrite off
source tmp.gdb
end
и в своей собственной функции:
define your-own-func
set-program-name
printf "The program name is %s\n", $programname
end
Я бы предложил "пойти ва-банк" на поддержку Python и отказаться от gdb-scripting. Я считаю, что это стоит усилий.