2017-05-04 98 views
0

例如,如果我們做如何讓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調試連接程序而不是獲取其絕對路徑?

+0

相關:[與非路徑名的gdb啓動應用程序(http://stackoverflow.com/questions/38957892/launch-application-in-gdb-with-non-path-name) –

回答

0

我們可以看到gdb在規範化程序上調試,而lldb在鏈接程序上調試。

不,我們沒有看到這個。我們看到GDB執行realpath來解析程序,而lldb沒有,但他們都是調試完全一樣的程序。

+0

如果在可執行我們檢查可執行文件的路徑,它們是一樣的嗎? –

+0

@JoeC取決於你的意思是「檢查可執行文件的路徑」。 –

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. 

所以,玩弄更近的版本。