Я выполняю посмертную отладку основного файла. Сборка была сделана так, что расположение исходного кода в ядре обозначается как ../../../../../_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
должен решить и это.)