Почему GDB устанавливает абсолютное имя для argv0? - PullRequest
2 голосов
/ 19 апреля 2020

Даже если файл для отладки находится в текущем каталоге, gdb в любом случае argv[0] устанавливает абсолютный путь. Каковы причины этого? Почему невозможно установить argv[0] только для имени исполняемого файла?

Инструменты типа busybox используют имя символической ссылки как argv[0]. Например, когда вы делаете

ln -s /usr/bin/busybox /bin/grep

и запускаете grep pattern file, /usr/bin/busybox фактически выполняется, но для его argv[0] установлено значение grep. Итак, исполняемый файл знает, под каким именем он был вызван, и действует соответственно.

Другой метод - создать оболочку bash и запустить в ней exec -a desired_argv0 program.

Однако трудно установите argv[0] в gdb. Из этого я могу сделать вывод, что абсолютный путь задан специально. Что это за цель?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...