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
......
我浏览了文档并搜索了其他类似问题,但没有找到解决方法
答案 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,以获取更多详细信息或回复询问。