Как получить доступ к переменным окружения внутри .gdbinit и внутри самого gdb? - PullRequest
14 голосов
/ 22 марта 2012

Я ищу, чтобы установить путь для исходного кода при отладке с помощью GDB. Я решил сделать это с файлом .gdbinit.

В основном, он содержит команду:

directory="/path/to/src".

Однако я бы хотел указать эту команду как:

directory="$SOURCESROOT/src"

, где SOURCESROOT - переменная окружения. И, если возможно, это можно сделать и в сеансе отладки gdb, введя directory=$SOURCESROOT/folder.

По сути, я ищу доступ к переменным окружения внутри gdb (или внутри .gdbinit).

Но не окружение дебютанта (установите env и т. Д.), А окружение самого gdb (т. Е. Приглашения bash, где я в первую очередь набираю "gdb program").

Хотя при наборе shell $SOURCESROOT в сеансе GDB отображается содержимое переменной среды, это совершенно бесполезно, так как я не могу ввести: directory=shell $SOURCESROOT.

PS: Кто-нибудь нашел идеальную настройку для Linux (Debian), чтобы загрузить исходники с помощью «apt-get source», обновить их с помощью некоторой команды «apt-get update» utopic и установить их так, чтобы gdb мог автоматически найти эти источники?

Ответы [ 3 ]

17 голосов
/ 22 марта 2012

Неважно, я нашел, как это сделать с помощью сценариев Python.

Мой .gdbinit файл теперь:

python
import os
gdb.execute('directory' + os.environ['SOURCES'] + '/package_name/src')
end

show directories
1 голос
/ 02 мая 2018

(на 6 лет позже!)

Не используйте .gdbinit для этой цели.Это не расширяет env vars.Вместо этого используйте эту командную строку для запуска gdb:

gdb --init-eval-command="set dir $SOURCESROOT/src"

(gdb) show dir
/path/to/src

К вашему сведению, этот метод может использоваться для установки других критических переменных, например,

gdb --eval-command="set sysroot $SYSROOTDIR"

, который устанавливает sysroot и solib-absolute-prefixgdb

1 голос
/ 19 января 2018

Если вы не хотите использовать python, тогда это может сработать?

"show environment [varname] Вывести значение переменной окружения varname, которое будет передано вашей программе при запуске. Если вы это сделаетене указывайте varname, напечатайте имена и значения всех переменных окружения, которые должны быть переданы вашей программе. Вы можете сокращать окружение как env. "

ftp: //ftp.gnu.org/old-gnu/Manuals/gdb/html_node/gdb_19.html

Возможно, их можно использовать и для условий:

https://www.adacore.com/gems/gem-119-gdb-scripting-part-1

...