如何让gdb调试一个链接的程序

时间:2017-05-04 05:55:53

标签: gdb lldb

例如,如果我们这样做

mkdir a
mkdir a/b
mkdir a/b/c
mkdir a/b/c/d
ln /bin/ls -s a/b/c/d/myls
ln a -s as
gdb as/b/c/d/myls
...
(gdb) r
Starting program: <mypath>/a/b/c/d/myls
^D
lldb as/b/c/d/myls
(lldb) r
Process 56636 launched: '<mypath>/as/b/c/d/myls' (x86_64)

我们可以看到gdb在规范程序上进行调试,而lldb在链接程序上进行调试。我们怎样才能让gdb调试链接的程序没有得到它的绝对路径?

2 个答案:

答案 0 :(得分:0)

  

我们可以看到gdb在规范程序上进行调试,而lldb在链接程序上进行调试。

不,我们没有看到这一点。我们看到GDB执行realpath来解析程序,lldb没有,但他们调试完全相同的程序

答案 1 :(得分:0)

也许您可以使用硬链接?

这样,gdb将始终引用您要查找的内容。

您也可以使用不同版本的gdb。似乎版本7.11提供了您想要的。

看看这里:

~/tmp/link] stat hello
  File: ‘hello’ -> ‘../hello’

这是您获得的版本7.12

Type "apropos word" to search for commands related to "word"...
Reading symbols from ./link/hello...(no debugging symbols found)...done.

而对于较旧的gdb,你会得到

For bug reporting instructions, please see:
<http://www.gnu.org/software/gdb/bugs/>...
Reading symbols from full_path/tmp/hello...(no debugging symbols found)...done.

所以,请使用最新版本。

相关问题