运行C ++程序时出现GDB错误

时间:2017-05-20 06:33:08

标签: c++ c++11 gdb

我的目录中的文件列表(/ home / ayush / Desktop / xapian-patch / xapian / xapian-letor / bin)是

xapian-prepare-trainingfile.1  xapian-prepare-trainingfile.cc xapian-prepare-trainingfile  xapian-prepare-trainingfile.o 

我可以运行命令./xapian-prepare-trainingfile --db=/home/ayush/Documents/data/db /home/ayush/Documents/data/query.txt /home/ayush/Documents/data/qrel.txt /home/ayush/Documents/data/sample3.txt

但是当我尝试通过GDB运行相同的命令时

gdb --args xapian-prepare-trainingfile --db=/home/ayush/Documents/data/db /home/ayush/Documents/data/query.txt /home/ayush/Documents/data/qrel.txt /home/ayush/Documents/data/sample3.txt

我收到错误

"/home/ayush/Desktop/xapian-patch/xapian/xapian-letor/bin/xapian-prepare-trainingfile": not in executable format: File format not recognized

我想知道如何运行c ++命令,我可以通过GDB运行而没有任何问题

1 个答案:

答案 0 :(得分:0)

  

"/home/ayush/Desktop/xapian-patch/xapian/xapian-letor/bin/xapian-prepare-trainingfile": not in executable format: File format not recognized

上述错误的最可能原因是./xapian-prepare-trainingfile是shell脚本,而不是可执行文件。

您可以通过运行file xapian-prepare-trainingfile确认这一点。

如果是shell脚本,则需要运行:

bash -x ./xapian-prepare-trainingfile ...

并找出它最终调用的实际可执行文件,并调试

另一种方法:制作xapian-prepare-trainingfile的副本,编辑它,然后在脚本gdb --args之前插入exec 的实际二进制文件。