如何让GDB调试链接程序
问题描述:
例如,如果我们做如何让GDB调试链接程序
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调试连接程序而不是获取其绝对路径?
答
我们可以看到gdb在规范化程序上调试,而lldb在链接程序上调试。
不,我们没有看到这个。我们看到GDB执行realpath
来解析程序,而lldb
没有,但他们都是调试完全一样的程序。
+0
如果在可执行我们检查可执行文件的路径,它们是一样的吗? –
+0
@JoeC取决于你的意思是“检查可执行文件的路径”。 –
答
也许你可以使用硬链接?
这样,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.
所以,玩弄更近的版本。
相关:[与非路径名的gdb启动应用程序(http://stackoverflow.com/questions/38957892/launch-application-in-gdb-with-non-path-name) –