Eclipse c ++调试可执行文件未找到具有相对路径的文件

时间:2016-08-11 12:20:35

标签: c++ eclipse makefile

我有一个包含更多makefile的项目。在某些特定文件夹中,有一些makefile可以创建二进制文件/可执行文件。我右键单击makefile并执行Make Tarkgets -> Build -> all,所以我在那里得到了可执行文件。如果我从控制台运行可执行文件,它工作正常,但如果我右键单击它并Debug as -> Local C/C++ Application,它会运行,但在某些时候它正在读取具有相对路径的文件:

FILE *f = fopen(fName, "rb"); // fname is a relative path : ../../../path/to/file

if(f == NULL)
{
    perror(fName);
    exit(2);
}

并没有找到它;指针为空/ NULL。对我来说,似乎Eclipse正在从打开项目的地方搜索文件,而不是从可执行文件的位置搜索文件。我想这是因为如果我从创建可执行文件的makefile创建一个项目,它可以工作,它会找到该文件。但是从那个地方我看不到来源,所以,为了放置断点,我必须逐步进入,直到我进入正确的位置/正确的来源。

任何人都可以帮我解决这个问题吗?有没有办法让它从可执行文件的位置搜索文件?感谢

P.S。 :我见过this post,它很相似,但它没有指出任何东西......

1 个答案:

答案 0 :(得分:2)

我猜工作目录对于这两种情况都不同,这就是为什么你无法打开你的文件。尝试使用fopen()的绝对路径,或者寻找为第二种情况指定正确工作目录的方法。

有一种方法可以修改工作目录,如this answer中所述:

  • 右键单击binary / executable Debug As -> Debug Configuration ...
  • Arguments标签的底部,有一个Working directory:区域,取消选中Use default并添加正确的路径(可执行文件/二进制文件在哪里)。按钮Workspace...File System...可能会有所帮助