繁体   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