2011-04-20 48 views
0

大家好,我是 我試着調試一個已經被makefile安裝的程序。它有一個OpenDPI_demo.o和一個shell shellscript OpenDPI_demo的二進制文件。 當我gdb OpenDPI_demo.o,我有一個問題。我無法運行它。錯誤是:gdb和makefile

Starting program: /home/lx/ntop/test/opendpi/src/examples/OpenDPI_demo/OpenDPI_demo.o 
/bin/bash: /home/lx/ntop/test/opendpi/src/examples/OpenDPI_demo/OpenDPI_demo.o:can't execute the binary file. 

請告訴我爲什麼。實際上我可以通過./OpenDPI_demo運行程序。 謝謝。

回答

0

這是使用libtool的程序遇到的另一個難題。

文件OpenDPI_demoOpenDPI_demo.o一起實際上,正如你所說的,它實際上是一個包含真實編譯文件執行的shell腳本,可能在.libs/OpenDPI_demo

libtool需要這個包裝器來調整運行時庫路徑等,以便您可以透明地執行程序,就好像它實際上安裝在您的系統上一樣。

正確調試此應用程序的方式不是

/home/lx/ntop/test/opendpi $ gdb src/examples/OpenDPI_demo/.libs/OpenDPI_demo 

而是使用libtool --mode=execute的shell腳本,如下所示(這是一個例子):

/home/lx/ntop/test/opendpi $ ./libtool --mode=execute gdb --args \ 
    src/examples/OpenDPI_demo/OpenDPI_demo -f capture.pcap 
2

基於擴展名,文件是目標文件。鏈接器(與其他目標文件一起)使用它來生成可執行文件。這是您想要運行/調試的真正可執行文件。

+0

感謝您的回答,我有編輯它,也許我不說清楚。 – lxgeek 2011-04-20 05:58:24

+0

謝謝,實際上我最終發現隱藏目錄中的可執行文件。 – lxgeek 2011-04-20 12:26:37

0

建議你用

gdb OpenDPI_demo 

代替

在你的makefile,如果它實際上還要考慮的對象,使其依賴於OpenDPI_demo,例如

+0

雖然我懷疑它不會做你期望的。當你想以交互方式使用gdb時,除非你有一個功能完整的tty – sehe 2011-04-20 07:59:07

+0

謝謝,否則它不會很好地工作,實際上我最終在隱藏目錄中找到可執行文件。 – lxgeek 2011-04-20 12:26:00