Как правильно использовать gdb `set substitute-path` со ссылками ../ в начале? - PullRequest
0 голосов
/ 22 апреля 2020

Я выполняю посмертную отладку основного файла. Сборка была сделана так, что расположение исходного кода в ядре обозначается как ../../../../../_vcs. Я поместил исходный код в / _vcs (то есть на root). Однако я не могу заставить работать команду set substitute-path gdb. Как это должно быть вызвано?

GNU gdb (GDB) Red Hat Enterprise Linux 7.6.1-114.el7
Copyright (C) 2013 Free Software Foundation, Inc.
...
Program terminated with signal 6, Aborted.
#0  0x00007f9f6fd37207 in raise () from /lib64/libc.so.6

(gdb) f 2
#2  0x000000000042c585 in SignalHandler (sig=11) at ../../../../../_vcs/trafficserver9/src/traffic_manager/traffic_manager.cc:935
935     ../../../../../_vcs/trafficserver9/src/traffic_manager/traffic_manager.cc: No such file or directory.
(gdb) set substitute-path ../../../../../ /
(gdb) l
930     ../../../../../_vcs/trafficserver9/src/traffic_manager/traffic_manager.cc: No such file or directory.
(gdb) set substitute-path ../../../../../_vcs /_vcs
(gdb) l
930     ../../../../../_vcs/trafficserver9/src/traffic_manager/traffic_manager.cc: No such file or directory.
(gdb) quit
-bash-4.2$ ls /_vcs/trafficserver9/src/traffic_manager/traffic_manager.cc
/_vcs/trafficserver9/src/traffic_manager/traffic_manager.cc

Обратите внимание, что я могу перечислить файл в указанном месте после ручной замены ../../../../../_vcs на /_vcs. Что я делаю неправильно? Нужно ли экранировать части пути?

(Как примечание, я могу обойти эту проблему через cd /. Тогда косвенные ссылки ../ останавливаются на /, и я могу получить доступ к каталогу. Но мне кажется, что set substitute-path должен решить и это.)

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