簡體   English   中英

gdb和makefile

[英]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_demoOpenDPI_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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM