Отладка llvm с помощью GDB, но не могу найти исходный код - PullRequest
0 голосов
/ 07 октября 2019

llvm скомпилировано в режиме отладки.

➜  ~ file /usr/local/bin/llc
with debug_info, not stripped

В gdb я использую команду dir, чтобы указать, что каталог бесполезен.

➜  gdb -q llc                               
Reading symbols from llc...done.
pwndbg> set args memcpy.ll -o memcpy.s
pwndbg> directory ~/llvm-project/llvm/tools/llc
Source directories searched: /home/xxxx/llvm-project/llvm/tools/llc:$cdir:$cwd
pwndbg> b main
Breakpoint 1 at 0x1a2d7d8
pwndbg> r
pwndbg> info source
No current source file.

Когда я смотрю наотладочную информацию, которую я хочу изменить каталог сборки и найти, что все пути находятся в ~/llvm-project/llvm/lib/Support/

➜  readelf  -p .debug_str /usr/local/bin/opt
String dump of section '.debug_str':
......
  [   25c]  /home/xxxx/llvm-project/llvm/lib/Support
......

Я просмотрел документацию и искал другие подобные проблемы, не найдя решения

1 Ответ

0 голосов
/ 08 октября 2019

Переназначить пути к исходным файлам для сеанса отладки.

Если ваши исходные файлы больше не находятся в том же месте, что и при сборке программы - возможно, программа была построена на другом компьютере -- вам нужно указать отладчику, как найти источники по их локальному пути к файлу, а не по пути к файлу системы сборки.

(gdb) set pathname-substitutions /buildbot/path /my/path

(lldb) settings set target.source-map /buildbot/path /my/path     

Специфические для вашего вопроса:
try:

(gdb) set pathname-substitutions /home/xxxx/llvm-project/llvm/lib/Support /home/xxxx/llvm-project/llvm/tools/llc

обратитесь к https://lldb.llvm.org/use/map.html для получения более подробной информации или ответа на вопрос.

...