Даже если файл для отладки находится в текущем каталоге, 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
. Из этого я могу сделать вывод, что абсолютный путь задан специально. Что это за цель?