[英]gdb and makefile
大家好我試着調試一個已經由makefile安裝的程序。 它有一個OpenDPI_demo.o的二進制文件和一個shell shellscript OpenDPI_demo。 當我gdb OpenDPI_demo.o,我有一個問題。 我無法運行它。 錯誤是:
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來運行程序。 謝謝。
根據擴展名,該文件是一個目標文件 。 鏈接器(以及其他對象文件)使用它來生成可執行文件。 它是您想要運行/調試的真正可執行文件。
建議你使用
gdb OpenDPI_demo
代替
在makefile中,如果它依賴於對象,則使其依賴於OpenDPI_demo,例如
這是使用libtool的程序遇到的困難的另一個例子。
實際上, OpenDPI_demo
和OpenDPI_demo.o
文件實際上是一個shell腳本,它包含了真實編譯文件的執行,可能是在.libs/OpenDPI_demo
。
libtool需要這個包裝器來調整運行時庫路徑等,以便您可以透明地執行程序,就好像它實際安裝在您的系統上一樣。
正確調試此應用程序的方法不是
/home/lx/ntop/test/opendpi $ gdb src/examples/OpenDPI_demo/.libs/OpenDPI_demo
而是在shell腳本上使用libtool --mode=execute
,如下所示(這是一個例子):
/home/lx/ntop/test/opendpi $ ./libtool --mode=execute gdb --args \
src/examples/OpenDPI_demo/OpenDPI_demo -f capture.pcap
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.