使用gdb调试llvm但找不到源代码

时间:2019-10-07 00:45:27

标签: gdb llvm

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 :(得分:0)

重新映射调试会话的源文件路径名。

如果您的源文件不再与构建程序时位于同一位置---也许该程序是在另一台计算机上构建的---您需要告诉调试器如何在本地找到源文件路径而不是构建系统的文件路径。

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

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

特定于您的问题:
尝试:

(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,以获取更多详细信息或回复询问。